Page 1 sur 1

probleme de syntaxe

Posté : 03 janv. 2006, 17:21
par blooby
Salut à tous!

Je vais pas faire une longue phrase pour expliquer, vous allez comprendre tout de suite mon problème:
$i=7;
while ($i>=1) {
	//for($i=1;$i=$max;$i++) {
		//$prenom="$prenom";
		$update="UPDATE jour SET prenom=\"$prenom".$i."\", traff_d=\"$traff_d".$i."\", CA_d=\"$CA_d".$i."\", traff_p=\"$traff_p".$i."\", CA_p=\"$CA_p".$i."\" where ID_jour=\"$i\"";
		$i--;
		$result_update=mysql_query($update) or die (mysql_error());
	}
J'essaye en fait d'insérer la valeur de $i dans ma requete...mais ca m'a pas l'air la bonne syntaxe. Le but est d'arriver à qqch du genre :
update="UPDATE jour SET prenom=\"$prenom1\"...
...........................................................................;
UPDATE jour SET prenom=\"$prenom2\".....................
etc

Quelle est donc la bonne syntaxe ? :roll:

Posté : 03 janv. 2006, 17:53
par charabia
Essaies ça :
$i=7; 
while ($i>=1)
{
	$update="UPDATE jour SET prenom='".$prenom.$i."', traff_d='".$traff_d.$i."', CA_d='".$CA_d.$i."', traff_p='".$traff_p.$i."', CA_p='".$CA_p.$i."' where ID_jour=".$i; 
	$i--; 
	$result_update=mysql_query($update) or die (mysql_error()); 
}

Posté : 03 janv. 2006, 17:59
par sadeq
Ce qui est juste est d'écrire :
for ($i=7; $i >= 1; $i--) { 
     //Dans un premier temps on détermine les variables selon le $i
     //Remarque: le $ du mot prenom est neutralisé seul celui du i est actif
     $update = "UPDATE jour SET prenom='\$prenom$i', traff_d='\$traff_d$i',  CA_d='\$CA_d$i',  traff_p='\$traff_p$i', CA_p='\$CA_p$i'   where ID_jour='$i' "; 
     //un eval permet de construire la requête en évaluant les variables déterminées
     $update = eval("return \"$update\";");
     //Débogage
    echo "<p>$update";
     //Exécution
     $result_update=mysql_query($update) or die (mysql_error()); 
}
Explication:
Puisque tes variables (ex: $prenom) doivent être générée automatiquement par la boucle $i comme une suite : $prenom1, $prenom2,...
il faut d'abord déterminer le nom de chaque variable selon $i et ensuite construire la requête en évaluant les valeurs des variables déterminées

je donne un exemple :
soit:
$prenom1 = "Jean";
$prenom2 = "Julien";

si:
$i = 1;
$valeur = eval("return \$prenom$i; ");
ici $valeur contient "Jean"
En changeant le $i, eval change de variable $prenomX

Posté : 03 janv. 2006, 18:06
par Invité
Dzl non, ca ne marche toujours pas. La valeur $prenom n'existe pas.
Ca donne dc "UPDATE jour_mcdo SET prenom='7', ....".
En fait il faudrait que la variable $update soit :
UPDATE jour_mcdo SET prenom='$prenom7'...", comme ça une fois interprétée en MySQL ca serait bon : le champs "prenom" prendra la valeur "toto" (avec $prenom7="toto").

D'autres idées ?