Aller au contenu

Modification dans une table sql


Sujets conseillés

Posté (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é par doomer2
Posté

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

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

Posté

Non, cela ne fonctionne pas cela m'affiche toujours la premiére ligne.

Ne faudrait pas faire une rquete sql avec un where ?

Posté (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é par snwoman49
Posté (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é par doomer2
Posté

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

Posté (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. :angry:

Modifié par doomer2
Posté

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.

Posté

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

}

?>

Posté

Et non, je croyais, je viens de faire un test de fonctionnement modification, suppression. Cela ne fonctionne pas !!!!!

Veuillez vous connecter pour commenter

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



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