Boucle travaillant avec toutes les valeurs issues d'un formulaire - PHP - Programmation
Marsh Posté le 20-05-2006 à 22:50:04
déjà éviter la boucle infinie while(isset($id_creer))
après tu veux faire quoi exactement dans ta boucle ?
Marsh Posté le 20-05-2006 à 23:19:23
je ne comprends pas trop ta logique avec
$db = mysql_connect('localhost', '*****', '*****');
mysql_select_db('hebergement',$db);
Pourquoi ne mets tu pas tes connexions à la base au tout début de ton code si tu as plusieurs fois des acces à une meme base de donnée ? Pas besoin d'ouvrir une connexion à chaque fois comme ca. Tu te connectes sur differentes bases ?
Pourquoi fais tu une boucle ? A chaque boucle tu ouvres une connexion... Est ce vraiment necessaire ...
|
fais plutot un
if isset ($_POST['id_creer']) |
comme l'as dis Sh@rdar que veux tu faire dans ta boucle ?
Mets nous ton code en entier s'il n'est pas tres long parce que l'on n'a pas du tout de visibilité, on ne voit pas la fin de tes parenthèses de ton if et de tes boucles.
Marsh Posté le 20-05-2006 à 23:58:34
J'ai fais qques tests je n'ai pas réussi a avancer ..
Alors voila ma page :
http://www.henol.fr/vrac/compte_admin.rar
Donc j'ai deux problèmes à régler :
d'abord je voudrais que la deuxieme partie du php, celle en bas, utile au formulaire, ne soit exécutée que si le formulaire a été envoyé ;
En cochant une checkbox, la création du fichier fonctionne;
je voudrais donc faire une boucle pour que cela fonctionne avec plusieurs checkbox.
merci
Marsh Posté le 21-05-2006 à 00:17:08
tu sais compresser un si petit fichier n'est pas tres utile
donc je me permet de poster ton code pour tout le monde puisse le voire sans se prendre la tete avec winrar/7zip
Code :
|
Marsh Posté le 21-05-2006 à 00:55:55
bon j'ai fais quelques modifications avec quelques indices.
Code :
|
Marsh Posté le 21-05-2006 à 13:29:17
Tu n'as rien changé pour les connexions mysql ?
j'e n'ai conservé qu'une seule connexion sur toute la page
sinon les checkbox ont bien sur une fonciton oui/non, mais elles peuvent aussi recevoir des valeurs
Marsh Posté le 21-05-2006 à 18:30:59
j'ai laissé un seul :
$db = mysql_connect('localhost', '*****', '*****');
mysql_select_db('hebergement',$db);
j'ai retiré le 2ème.
je ne savais pas que l'on pouvait mettre des valeurs pour les chackboxs
Marsh Posté le 21-05-2006 à 19:34:23
Ha oui excuse tu avais juste laissé trainé un mysql close.
Pour récapitulatif, voici ou j'en suis
Code :
|
Marsh Posté le 21-05-2006 à 20:38:05
bon, j'ai reregardé ton code.
j'arrete parce que je suis fatigué la. J'ai pas testé mais voici dans l'esprit mais surtout fais des tests en visualisant les variables que tu envoies avec print_r($_POST);
Si j'ai bien compris. Tu listes une liste de personnes. Pour chaque personne tu as un checkbox. Tu selectionnes les personnes en cochant, tu cliques sur le bouton Submit. Tu envoies les Tu voudrais ecrire les personnes que tu as selectionné ecrire dans un fichier ?
Code :
|
Marsh Posté le 21-05-2006 à 20:41:15
je voulais en fait te poster le message de dessus hier soir, mais j'avais en fait oublier de cliquer sur le bouton Reponse
Marsh Posté le 22-05-2006 à 15:48:40
Merci,
mais je viens d'essayer il me met
Parse error: parse error, unexpected $ in /var/www/hebergement/test/compte_test.php on line 92
(92 est la derniere ligne , </html>, - je n'ai changé que le fwrite/fp/clos, ainsi que l'accès à mysql)
Marsh Posté le 22-05-2006 à 17:35:16
Bonjour,
Le seul attribut obligatoire de l'élément 'form' est 'action', pour être conforme aux recommandations du w3c. Extrait de la DTD :
<!ATTLIST form
%attrs;
action %URI; #REQUIRED
method (get|post) "get"
name NMTOKEN #IMPLIED
enctype %ContentType; "application/x-www-form-urlencoded"
onsubmit %Script; #IMPLIED
onreset %Script; #IMPLIED
accept %ContentTypes; #IMPLIED
accept-charset %Charsets; #IMPLIED
target %FrameTarget; #IMPLIED
>
D'autre part, la valeur des attribut des éléments HTML doit être encadrée par des doubles quotes (voir plus bas les 'checkbox').
Ceci n'est pas terrible :
Code :
|
ça fait bosser le serveur pour rien. Préférer les simples quotes pour encadrer les chaînes dans lesquelles il n'y a pas de variable à interpreter.
Les boucles 'while' sont plus rapides que les boucles 'for'.
Quand aux 'checkbox', ceci est préférable :
Code :
|
car php va interprèter cela comme des tableaux dont chaque élément contiendra l'id de l'enreg sur lequel il faut intervenir.
Et pour ton pb, à vue de nez, il doit manquer une accolade fermante ligne 87.
Marsh Posté le 22-05-2006 à 22:50:19
oki pour le form, il faut eviter de ne pas mettre de action meme si on n'est pas XHTML, il faut mettre dans ces cas action="#" si on veut appeller la page elle meme.
Je ne savais pas que c'etait plus efficace les simples quotes. Par habitude, je mes toujours des doubles pour les chaines par contre, je ne mets plus jamais de variables dans chaine.
echo "toto titi $variable";
je fais plus que des echo "toto titi".$variable;
ok pour les tableaux, et apres on fais un foreach pour parcourir le tableau id_creer envoyé.
Marsh Posté le 23-05-2006 à 21:22:42
impec j'ai cherché ce fameux foreach et ca fonctionne
merci beaucoup
Marsh Posté le 24-05-2006 à 06:26:20
Et si tu fais echo 'toto titi'.$variable; ça sera encore mieux.
Marsh Posté le 24-05-2006 à 22:08:21
rohhh, et pourquoi donc, parce que le serveur php (IIS ou apache) sait tout de suite qu'il n'y a pas de variable à interpreter.
arf, je n'aime pas trop les simples quotes parce que c'est moins voyant et surtout c'est pas habitude ...
je ne pense pas que l'on gagne grand chose en perf mais c'est deja ca de gagner tu vas me dire.
Marsh Posté le 24-05-2006 à 22:25:59
c'est peanuts pour l'optimisation
pour ce genre de truc faut surtout faire comme on le sent
Marsh Posté le 24-05-2006 à 22:52:49
oki pour les " et ' c'est pas grand chose
mais sinon faire echo "toto titi $variable";
c'est le mal je crois ? nop ? on m'a deja fait la morale une fois, il y a quelques temps lorsque j'avais poster une partie de mon code pour que vous m'aidiez à le debugger.
Marsh Posté le 24-05-2006 à 23:01:24
jeca a écrit : D'autre part, la valeur des attribut des éléments HTML doit être encadrée par des doubles quotes (voir plus bas les 'checkbox'). |
GUESS WHAT? YOU FAIL!
C'est n'importe quoi cette déclaration, les attributs SGML peuvent être encadrés aussi bien par des simples que des doubles quotes, et comme j'aime présenter les faits je te cite même la section de la norme officielle sur le sujet:
http://www.w3.org/TR/html401/intro [...] ml#h-3.2.2
Citation : By default, SGML requires that all attribute values be delimited using either double quotation marks (ASCII decimal 34) or single quotation marks (ASCII decimal 39). Single quote marks can be included within the attribute value when the value is delimited by double quote marks, and vice versa. |
jeca a écrit :
|
Branlage de nouille, on perd quelques microsecondes sur plusieurs milliers d'itération, c'est à dire peanuts par rapport au simple fait de se connecter à une DB
jeca a écrit : Les boucles 'while' sont plus rapides que les boucles 'for'. |
Bof, là encore la différence c'est peanuts.
Marsh Posté le 24-05-2006 à 23:01:31
le php a ses inquisiteurs tout autant que l'église catholique en son temps
allez, tu va gratter quelques micro secondes pour des milliers d'itérations, ça représente que dalle donc si c'est moins lisible pour toi le fais pas
y'a 10 fois plus de manières de plomber un script que le parsing des chaines
EDIT : toasted, je répondais à weed bien évidemment
Marsh Posté le 25-05-2006 à 08:05:51
@Masklinn
Avant d'affirmer péremptoirement que ceci :
Citation :
D'autre part, la valeur des attribut des éléments HTML doit être encadrée par des doubles quotes (voir plus bas les 'checkbox'). |
est n'importe quoi, tu aurais dû lire la 1ère ligne de code du document de Proxounet :
Code :
|
Il me semble y voir 'XHTML', non ?
Donc, chacun ses sources :
http://www.w3.org/TR/2000/REC-xhtml1-20000126/#docconf
Citation :
All attribute values must be quoted, even those which appear to be numeric. CORRECT: quoted attribute values <table rows="3"> INCORRECT: unquoted attribute values <table rows=3> |
Quand au reste, je ne m'étendrai pas, car ça risque de déboucher sur une discussion complètement stérile.
Marsh Posté le 25-05-2006 à 12:40:49
jeca a écrit : @Masklinn
|
Ok, sauf que ça n'a rien à voir avec la question, les valeurs des attributs doivent être quotés, pas être quotés impérativement avec des doubles quotes, contrairement à ce que tu affirmes
Tu peux bien essayer de changer le sujet du débat, tu t'es quand même vautré
Marsh Posté le 20-05-2006 à 16:41:31
Bonjour,
Sur une page, je génére une liste de comptes en attente, avec pour chacun un checkbox dont el nom est "id_creer" et comme valeur l'id du compte
je voudrais ensuite faire une boucle travaillant avec chaque id coché :
l'id permet de récupérer le prénom, nom etc de la même ligne dans la table "demandes"
Pour l'instant j'ai fais ca, mais je bloque a la boucle :
pouvez vous m'aider ?
merci infiniment
Message édité par Proxounet le 20-05-2006 à 16:47:14