[PHP/MySQL] probleme de UPDATE

nazih -  
 nazih -
Bonjour,
j'ai un gros probleme,
j'ai 2 tables qui sont créées et remplies:

la table pim_rel (id_rel,nom_rel,id_class1,nom_class1,id_class2,nom_class2).

et la table classe_psm_raffine(id_class,nom_class).

ce que je veux moi c'est mettre à jours les champs de id_class1 et id_class2 de la table pim_rel avec le id_class de la table classe_psm_raffine (en faisant égalité sur les noms de classes)

j'ai écrit le code suivant qui me semble en vue correcte,mais aprés execution il laisse les champs tels quels.

voici le code:

<?php
mysql_connect("localhost", "root", ""); 
mysql_select_db("test");
$retour=mysql_query("SELECT * FROM classe_psm_raffine");
while($data=mysql_fetch_array($retour))
{echo $data['id_class'];
echo $data['nom_class'];
mysql_query("UPDATE pim_rel SET id_class1=(SELECT id_class FROM classe_psm_raffine WHERE nom_class='$data[nom_class]') WHERE nom_class1='$data[nom_class]'");
mysql_query("UPDATE pim_rel SET id_class2=(SELECT id_class FROM classe_psm_raffine WHERE nom_class='$data[nom_class]') WHERE nom_class2='$data[nom_class]'");
}
?>


ps: les echo $data['id_class'] et $data['nom_class'] c'était pour m'assurer si il affiche les bons noms et id.

merci de m'aider
A voir également:

3 réponses

kilian Messages postés 8854 Statut Modérateur 1 526
 
Salut,

Tu as une erreur spécifique?
Sinon j'aurais bien une idée:
UPDATE pim_rel SET id_class1=(SELECT id_class FROM classe_psm_raffine WHERE nom_class='$data[nom_class]') WHERE nom_class1='$data[nom_class]'

Ton select risque de te renvoyer plusieurs résultat j'imagine non?
Essaie avec ça:
UPDATE pim_rel SET id_class1=(SELECT id_class FROM classe_psm_raffine WHERE nom_class='$data[nom_class]' LIMIT 1) WHERE nom_class1='$data[nom_class]'


Sinon il faudrait tester les requêtes avec PhpMyAdmin pour voir.
0
nazih
 
j'ai essayé ça marche tjr pas avec le LIMIT 1, ça renvoi tjr le meme résultat (pas de mise a jours des champs)
par contre,j'ai remarqué que si je supprime les champs qui vont etre modifier de PhpMyAdmin juste avant l'execution du script,là ça me met a jour les champs !!!! c'est quoi le probleme??
0
Alain_42 Messages postés 5413 Statut Membre 894
 
Essayes comme ça:

"UPDATE pim_rel SET id_class1='classe_psm_raffine.id_classe' WHERE pim_rel.nom_classe1='classe_psm_raffine.nom_classe'")


et une deuxieme idem pour l'id_classe2
0
nazih
 
là ça ne marche pas dutt,aucune mise a jour dans la table meme qd les champs sont vide juste avant!!!
0