PHP requete UPDATE qui ne fonctionne pas!

Résolu/Fermé
ASHTAR - 17 août 2009 à 16:06
 ASHTAR - 18 août 2009 à 08:39
Bonjour, alors voila mon probleme.
J'ai une requete qui ne fonctionne pas dans l'execution du script mais qui fonctionne tres bien manuellement dans mysql, c'est a rien y comprendre!!!

Ma requete :

Update pos_formulaire set x = 567 where x between 562 and 572; Update pos_formulaire set y = 244 where y between 239 and 249; Update pos_formulaire set x = 565 where x between 560 and 570; Update pos_formulaire set y = 275 where y between 270 and 280; Update pos_formulaire set x = 564 where x between 559 and 569; Update pos_formulaire set y = 305 where y between 300 and 310; Update pos_formulaire set x = 393 where x between 388 and 398; Update pos_formulaire set y = 243 where y between 238 and 248; Update pos_formulaire set x = 392 where x between 387 and 397; Update pos_formulaire set y = 274 where y between 269 and 279; Update pos_formulaire set x = 390 where x between 385 and 395; Update pos_formulaire set y = 339 where y between 334 and 344;

ce qui donne avec php :
x y
567 244
565 275
564 305
565 337
393 243
392 274
391 305
390 339

ce qui donne quand je l'execute dans la fenetre de mysql :
x y
564 243
564 274
564 305
564 339
390 243
390 274
390 305
390 339

c'est le resultat que j'attend avec PHP !!!

J'ai besoin que l'on m'eclaire un pe sur le sujet!
A voir également:

6 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
18 août 2009 à 00:08
Tu ne peux pas exécuter plusieurs requêtes en même temps avec MySQL.
Au lieu de stocker ces dernières dans une chaîne ($query), mets-les dans un tableau $querys et à la fin tu te fais un
foreach($querys as $query)
{
     mysql_query($query);
}
1
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
17 août 2009 à 16:27
Juste une question : est-ce que tu penses bien à réinitialiser le contenu de la table avec les valeurs initiales avant de faire un nouvel essai avec PHP ou ton client mysql ?
0
Enfete a la bases ya rien dans la table avant execution du script. Celui-ci insert "SA IL LE FAIT TRES BIEN" et ensuite traite les données "SA AUSSI IL LE FAIT TRES BIEN" la preuve est que la requete me donne le bon résultat. ^^

Mais allé savoir pourquoi mysql_query($marequete) refuse de s'executer correctement.
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
17 août 2009 à 16:52
Bah il n'y a pas photo, si tu as un résultat différent c'est que avant ta série de mises à jour il n'y a pas les mêmes données initiales.

En exécutant manuellement les requêtes par le client tu dois zapper une série d'update ou d'insert.

Si tu ne vois vraiment pas, commente cette série de MàJ dans PHP et exécute dans le client en l'omettant également. Tu devrais obtenir des informations différentes.
0
Mon code :
$moyenne=mysql_query('SELECT x, y from pos_formulaire');
$min=mysql_result($moyenne, 0, 0)-5;
$max=mysql_result($moyenne, 0, 0)+5;
$query='Update pos_formulaire set x = '.mysql_result($moyenne, 0, 0).' where x between '.$min.' and '.$max.'; ';
$min=mysql_result($moyenne, 0, 1)-5;
$max=mysql_result($moyenne, 0, 1)+5;
$query=$query.'Update pos_formulaire set y = '.mysql_result($moyenne, 0, 1).' where y between '.$min.' and '.$max.'; ';
$moyenne2=mysql_query('SELECT x, y from pos_formulaire where x <> '.mysql_result($moyenne, 0, 0).' and y <> '.mysql_result($moyenne, 0, 1).'');
$save='x <> '.mysql_result($moyenne, 0, 0).' and y <> '.mysql_result($moyenne, 0, 1).'';
$save2="";
while(mysql_numrows($moyenne2)!=0)
{
$min=mysql_result($moyenne2, 0, 0)-5;
$max=mysql_result($moyenne2, 0, 0)+5;
$query=$query.'Update pos_formulaire set x = '.mysql_result($moyenne2, 0, 0).' where x between '.$min.' and '.$max.'; ';
$min=mysql_result($moyenne2, 0, 1)-5;
$max=mysql_result($moyenne2, 0, 1)+5;
$query=$query.'Update pos_formulaire set y = '.mysql_result($moyenne2, 0, 1).' where y between '.$min.' and '.$max.'; ';
$x=mysql_result($moyenne2, 0, 0);
$y=mysql_result($moyenne2, 0, 1);
$moyenne2=mysql_query('SELECT x, y from pos_formulaire where x <> '.$x.' and y <> '.$y.' and '.$save.' '.$save2.'');
$save2=$save2.' and x <> '.$x.' and y <> '.$y.'';
}
mysql_query($query);
echo $query;


comme tu pe le voir "bon ok c'est pas très beau" mais ma mise a jour ce fait a la fin. ce n'est pas une série de requete "enfin si" mais executer en une seul fois.
0

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

Posez votre question
Dans tous les cas je te remercie Yoan d'user un pe de ton temp!
Je doit m'absenter et reviendrai demain pour voir les reponses.
Merci encore!
0
A dac je savais pas. Bon bé sa marche toujour pas donc je vai revoir un pe le develloppement de tous sa je doit avoir d'autre methode, c'est que mon script est surement faux. Mon probleme était de savoir pourquoi sa plante, (la multi-requete ne peut être executer par PHP --> Probleme Resolue !)
0