Aller au contenu

Modification dans une table sql


doomer2

Sujets conseillés

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é par doomer2
Lien vers le commentaire
Partager sur d’autres sites

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é)

Lien vers le commentaire
Partager sur d’autres sites

<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 :)

Lien vers le commentaire
Partager sur d’autres sites

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é par snwoman49
Lien vers le commentaire
Partager sur d’autres sites

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é par doomer2
Lien vers le commentaire
Partager sur d’autres sites

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é :)

Lien vers le commentaire
Partager sur d’autres sites

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. :angry:

Modifié par doomer2
Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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>';

}

?>

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...