Récupération de valeurs d'une requete pour insert

Résolu
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006 - 24 août 2005 à 14:22
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 - 24 août 2005 à 20:52
Bonjour, je souhaite mettre à jours une base SQL, pour cela je dois aller chercher des infos dans d'autres bases SQL, donc je fais un select pour récupérer le champ que je souhaite.
Ensuite, a partir de ce select, je souhaitee inséré dans chaque ligne de ma base les valeurs trouvées dans mon select qui correspondent.
J'ai un problème car il met à jours que la première ligne (je crois que ça vient de $data = mysql_fetch_array($reqa); mais je ne sais pas comment faire!!
Merci d'avance

$reqa=mysql_query("select VAR1, VAR 2, VAR3 from table1, table2, table3 where VAR1=VAR2;

$data = mysql_fetch_array($reqa);
mysql_free_result ($reqa);
mysql_close ();
?>
<?php
$reqb=mysql_query("update table3 set DD='$data[VAR3]' where EE='$data[VAR2]'");

?>

10 réponses

morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 août 2005 à 15:18
de rien et oui vaut mieux mettre le free_result qui libere les resultat apres les avoir utilisé lol j avais pas vu.

Accpete la reponse alors.
Bonne continuation


<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
3
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 août 2005 à 14:25
ben oui il faut faire une boucle sinon la tu lis que ta premiere ligne de reponse


<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
24 août 2005 à 14:28
et comment je peux faire ça ??
0
raven44 Messages postés 315 Date d'inscription mercredi 23 mars 2005 Statut Membre Dernière intervention 21 mars 2011 1
24 août 2005 à 14:29
Evidement, ou tu fais une boucle for ou une boucle while !!



Personellement le while est légèrement mieu dans ton cas, While non fin table, tu fai ma requete !! tu vois
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
24 août 2005 à 14:33
j'ai essayé ça mais il s'arrête jamais !!

$reqa=mysql_query("select VAR1, VAR 2, VAR3 from table1, table2, table3 where VAR1=VAR2;

$data = mysql_fetch_array($reqa);
mysql_free_result ($reqa);
mysql_close ();
while ($data)
{

$reqb=mysql_query("update table3 set DD='$data[VAR3]' where EE='$data[VAR2]'");
}
?>
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 août 2005 à 14:36
forcement oui ta valeur data continet toujours quelque chose la meme chose en plus.

essaye ca plutot

mysql_free_result ($reqa);
mysql_close ();
while ($data = mysql_fetch_array($reqa))
{

$reqb=mysql_query("update table3 set DD='$data[VAR3]' where EE='$data[VAR2]'");
}


<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
24 août 2005 à 14:46
Alors j'ai essayé et ça marche plus du tout !!!:
voici mon code tel que j'ai écris :

$reqa=mysql_query("select VAR1, VAR 2, VAR3 from table1, table2, table3 where VAR1=VAR2");

if (!$reqa)
{ die('Requête invalide : ' . mysql_error());
exit(); }
if ($reqa)
{ echo "OK REQ A ";}
$data = mysql_fetch_array($reqa);
echo $data["VAR3"];
mysql_free_result ($reqa);
mysql_close ();


while ($data = mysql_fetch_array($reqa))
{
$reqb=mysql_query("update table3 set dd='$data[VAR3]' where EE='$data[VAR2]'");
}
if (!$reqb)
{ die('Requête invalide : ' . mysql_error()); exit();}
if ($reqb)
{ echo "OK REQ B EPCI";}

et là il me dit que ma requête est invalide !!!
0
morpheus262 Messages postés 461 Date d'inscription mardi 27 avril 2004 Statut Membre Dernière intervention 16 février 2012
24 août 2005 à 15:08
ok bon alors je recommence pour la troisieme fois car le site merde encore et toujours, ca devien lourd d ailleur.

donc ton test tu devrais le mettre dans la boucle deja car la tu test que ton dernier update.
ensuite ton probleme vien peut etre de tes requetes ca je sais pas mais surement pas de ce que je t ai donné le while.... c la solution pour que tu parcours toutes tes reponses.


<HR>
Loi du plagiat industriel de Felson : <CITE>Voler les idées d'une personne, c'est du plagiat. En voler à plusieurs, c'est de la recherche.</CITE>
0
fredo35m Messages postés 244 Date d'inscription jeudi 14 avril 2005 Statut Membre Dernière intervention 12 juillet 2006
24 août 2005 à 15:15
ça y est ça marche !!! merci en fait je crois que ça venait de ça :

mysql_free_result ($reqa);
mysql_close ();

il fallait mettre ça après ma requête donc ça marche nickel !! merci beaucoup pour ton aide !!
Et oui le site merde pas mal en ce moment !!!

Merci !!!
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
24 août 2005 à 20:52
J'ajoute avant de partir :



"if (!$reqa)

{ die('Requête invalide : ' . mysql_error());

exit(); }"

Un exit() ne sert à rien si y'a un die() juste avant.

De plus :



"if (!$reqb)

{ die('Requête invalide : ' . mysql_error()); exit();}

if ($reqb)

{ echo "OK REQ B EPCI";}"

if (!$repb) die('Requête invalide : '.mysql_error() );

echo "OK"; // Ca viendra lire ca tout seul, pas besoin de 36 conditions :)
0