doomer2 Posté 8 Septembre 2005 Posté 8 Septembre 2005 (modifié) Bonsoir, Je me suis créé un formulaire qui me permet de modifier les champs d'une de mes tables. Cependant, je posséde une table catégorie avec +de 100 champs. Quand je sélectionne, la personne où je dois modifier un champ, je posséde donc : nom puis prénom puis adresse puis une liste déroulante avec les catégories puis cp, etc ... Le probléme est que dans la liste déroulante je posséde bien toutes mes catégories mais il se positoinne toujours sur la premiére catégorie de ma table. Comment faire pour qu'il se positionne sur la catégorie correspondant à la personne à modifier ? Voici mes requêtes : $dvd = "SELECT * FROM metier WHERE idmetier=".$idmetier;$req_dvd1 = mysql_query($dvd) or die('Erreur SQL !<br>'.$dvd.'<br>'.mysql_error()); $data_dvd = mysql_fetch_array($req_dvd1);//affectation aux variables ////////////////////////////////////////////////////$modif_idmetier = $data_dvd[idmetier];$modif_titremetier = $data_dvd[titremetier];$modif_cp = $data_dvd[cp]; $modif_adresse = $data_dvd[adresse];$modif_commentaire = $data_dvd[commentaire]; $modif_cat = $data_dvd[cat]; $modif_commune = $data_dvd[commune]; $modif_tel = $data_dvd[tel];$modif_fax = $data_dvd[fax];$modif_mail = $data_dvd[mail]; $modif_image = $data_dvd[image];$modif_validate = $data_dvd[validate];if ($envoi=="oui"){$modif_idmetier = $idmetier;$modif_titremetier = $titremetier; $modif_adresse = $adresse; $modif_cp = $cp;$modif_commentaire = $commentaire;$modif_cat = $cat;$modif_commune = $commune;$modif_tel = $tel;$modif_fax = $fax;$modif_mail = $mail;$modif_image = $image;$modif_validate= $validate; if(($idmetier=="")||($titremetier=="")||($adresse=="")||($commentaire=="")||($cp=="")){ $message="Vous devez remplir tous les champs pour pouvoir modifier ces coordonnées !"; }else{ $maj_dvd="UPDATE metier SET idmetier='".ucwords($idmetier)."',titremetier='".ucwords($titremetier)."',adresse='".ucwords($adresse)."',commentaire='".ucwords($commentaire)."',cat='".$cat."',commune='".$commune."',image='".$image."',cp='".$cp."',tel='".$tel."',fax='".$fax."',mail='".$mail."',validate='".$validate."' WHERE idmetier=".$idmetier; $req_maj = mysql_query($maj_dvd) or die('Erreur SQL !<br>'.$maj_dvd.'<br>'.mysql_error()); $message="Les coordonnées sont modifiées"; } } Puis voici une partie de mon formulaire : <form method="post" action="modifadr.php?envoi=oui&id=<? echo "$id"; ?>" name="dvd"> <table width="98%" border="1" cellspacing="0" cellpadding="0"> <tr> <td height="37"><table width="100%" border="0" cellspacing="0" cellpadding="0"> <tr> <td width="159"> </td> <td colspan="3" width="790"><input type="hidden" name="idmetier" value="<?php print $modif_idmetier; ?>"> </td> </tr> <tr> <td width="159">Nom et prénom:</td> <td colspan="3" width="790"><input type="text" name="titremetier" size="40" value="<?php print $modif_titremetier; ?>"> </td> </tr> <tr> <td width="159">Adresse : </td> <td colspan="3" width="790"><input type="text" name="adresse" size="80" value="<?php print $modif_adresse; ?>"> </td> </tr> <tr> <td width="159">Code Postal</td> <td colspan="3" width="790"><input type="text" name="cp" size="40" value="<?php print $modif_cp; ?>"> </td> </tr> <tr> <td width="159">Intitulé : </td> <td colspan="3" width="790"><textarea name="commentaire" cols="60" rows="3"> <?php echo $modif_commentaire ?> </textarea> </td> </tr> <tr> <td width="159">Catégorie :</td> <td colspan="3" width="790">[B]<select name="cat"> <? $sql = 'SELECT * FROM categorie ORDER BY ident';$req = mysql_query($sql) or die('Erreur<br>'.$sql.'<br>'.mysql_error()); while($res = mysql_fetch_array($req)) { print '<option>'.$res[nomcat].'</option>'; } ?> </select>[/B] </td></table></form> Le probléme est en gras Modifié 8 Septembre 2005 par doomer2
MS-DOS_1991 Posté 8 Septembre 2005 Posté 8 Septembre 2005 Salut Les balises BBCode ne marchent pas avec [ code ][ /code ] A tout hasard, essaies de mettre des guillemets dans ta variable : $res['nomcat'] peut-etre que sinon php le considère comme $res[0] ce qui te donne la 1ere ligne (pas testé)
Portekoi Posté 8 Septembre 2005 Posté 8 Septembre 2005 <select name="cat"> <? $sql = 'SELECT * FROM categorie ORDER BY ident'; $req = mysql_query($sql) or die('Erreur<br>'.$sql.'<br>'.mysql_error()); while($res = mysql_fetch_array($req)) { if ($res[nomcat]==$cat) { $selected = " selected"; }else{ $selected = ""; } print '<option value="$res[nomcat]" '.$selected.'>'.$res[nomcat].'</option>'; } ?> </select> Essaie ca
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 Non, cela ne fonctionne pas cela m'affiche toujours la premiére ligne. Ne faudrait pas faire une rquete sql avec un where ?
snwoman49 Posté 8 Septembre 2005 Posté 8 Septembre 2005 (modifié) N'y aurait il pas un problème ici ?? $dvd = "SELECT * FROM metier WHERE idmetier=".$idmetier; Essayer en mettant ca $dvd = "SELECT * FROM metier WHERE idmetier='$idmetier' "; Modifié 8 Septembre 2005 par snwoman49
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 (modifié) Non, cette requête fonctionne correctement dans les 2 cas. Le soucis ne vient pas de là. Je précise que j'ai 2 tables : categorie avec ident la clé puis nomcat : intitule de la categorie et une photo metier : titremetier, puis cp, ...., puis cat (intitule de la categorie) Modifié 8 Septembre 2005 par doomer2
Portekoi Posté 8 Septembre 2005 Posté 8 Septembre 2005 il faut que tu récupères la valeur du membre en amont. ($cat par exemple) Dans la boucle tu fais ceci : Si la valeur_de_la_requete = $cat la personne a donc choisie ce critère (donc, affiche 'selected' pour un champ de type select) sinon je ne fais rien Fin Si Concrètement : Dans la boucle : if ($res[nomcat]==$cat) { $selected = " selected"; }else{ $selected = ""; } ensuite tu affiches $selected dans ton champ et le tour est joué
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 (modifié) Ben, je suis peut être pas doué alors mais cela ne fonctionne pas, je suis toujours sur mon premier champ. Par contre, quand j'affiche mon champ dans un input j'ai la bonne catégorie. Modifié 8 Septembre 2005 par doomer2
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 Voilà en regardant le source de la page généré, j'ai ceci pour un fleuriste : <option value="$res[nomcat]" >Fleuriste</option> Il n'y a rien dans $res et pas de selected à la suite de value.
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 Bon, j'ai trouvé la solution et je vous la transmet: <? $sql = 'SELECT * FROM categorie'; $req = mysql_query($sql) or die('Erreur<br>'.$sql.'<br>'.mysql_error()); while($res = mysql_fetch_array($req)) { if ($res[nomcat]==$modif_cat) { $selected = "selected"; }else{ $selected = ""; } print '<option value="$res[nomcat]" '.$selected.'>'.$res[nomcat].'</option>'; } ?>
doomer2 Posté 8 Septembre 2005 Auteur Posté 8 Septembre 2005 Et non, je croyais, je viens de faire un test de fonctionnement modification, suppression. Cela ne fonctionne pas !!!!!
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant