Page 1 sur 1

Requete SQL, syntaxe ou maladresse ?

Posté : 03 sept. 2007, 16:48
par llipruk
Bonjour à tous, arrachage de cheveux sur cette requete :

$a = 1;

while ($a <= $_POST["nbrex"])
{
$question.$a=$_POST['$question.$x'];
$sql ="UPDATE eval_".$societe." SET e".$a."=".$question.$a." where pseudo='$login'";
$a = $a+1;
}
déjà le $a ne prend pas +1.... ??
apres echo ça donne ça :

UPDATE eval_masociete SET e= where pseudo='toto'


Dans le formulaire de la page d'avant, j'ai :
while ($data1 = mysql_fetch_array($result1))
{
$question=$data1['question'];
echo '<tr><td>'.$question.'</td>
<td><input type="radio" name="'.$question.$x.'" value="'.$pasnote.'" checked></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$faible.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$moyen.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$fort.'"></td>
</tr>';
$x++;
}
dans ma table j'ai des champs qui correspondent à e1, e2, e3 etc...

Recherche une aide, ou meme une piste... merci 1000 fois !

Posté : 03 sept. 2007, 17:11
par @rthur
Bonjour,

Quel est le problème?

De plus, peux-tu éditer ton message et utiliser les balises PHP pour rendre ton code plus lisible?

Code : Tout sélectionner

[php] //ton code... [/php]

Posté : 03 sept. 2007, 17:18
par llipruk
Oui pardon pour les balises, c'est fait...

le probleme c'est que je n'obtient pas ça :
UPDATE eval_masociete SET e1=valeur_de_mon_radio where pseudo='toto'

mais ça :
UPDATE eval_masociete SET e= where pseudo='toto'
et que ma variable qui prend +1 ne prend pas +1.....

Posté : 03 sept. 2007, 17:21
par Ryle
A mon avis tu te trompe de syntaxe entre $question.$a et ${'question' . $a}

Par ailleurs, les variables contenue dans une chaine entre apostrophes ne sont pas interprétés : $_POST['$question.$x'] recherche un index avec des dollars et un point, chose que tu n'as probablement pas, ce qui a pour effet de mettre $a à null.

Posté : 03 sept. 2007, 17:22
par @rthur
$_POST['$question.$x']; 
Si tu mets des noms de variable entre guillemets simple, elles ne seront pas remplacées par leur valeur...

Essaye avec ça:
$_POST[$question.$x]; 
Par ailleurs, les noms de variables concaténées c'est quand même très laid et souvent une source de bugs...
Essaye de passer par des tableaux si possible.
$question[$a]=$_POST[$question.$x]; 
##edit: Grillé par le piaf! :D

Posté : 03 sept. 2007, 17:23
par Sékiltoyai
Cette écriture est incorrecte :
$question.$a=$_POST['$question.$x'];
http://www.php.net/manual/fr/language.v ... riable.php


Edit : Grrrrrr. Je me vengerais :twisted:

Posté : 03 sept. 2007, 17:24
par Gaap

Code : Tout sélectionner

$question.$a=$_POST['$question.$x'];
quand tu fais cela $a prend la valeur $_POST['$question.$x'].



:wink: erf grillé pas assez rapide :arrow:

Posté : 03 sept. 2007, 17:25
par Sékiltoyai
J'espère qu'avec ça il va comprendre :mrgreen:

Posté : 03 sept. 2007, 18:47
par llipruk
Hélas je m'en sors pas...

plus en détail :

Premiere page, le formulaire de radio générés :
$query1="select * from eval_".$societestag."_question where pour='$postestag' and rubrique_question='$rubrique' order by position_question";
$result1=mysql_query($query1) or die("<p>Erreur</p> ".mysql_error());
		
$x=1;

while ($data1 = mysql_fetch_array($result1))
{
$question=$data1['id'];
$intit=$data1['question'];
echo '<tr><td>'.$intit.'</td>
<td><input type="radio" name="'.$question.$x.'" value="'.$pasnote.'" checked></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$faible.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$moyen.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$fort.'"></td>
</tr>';
$x++;
}

echo '<input type="hidden" name="nbrex" value="'.$x.'"'
2eme page, l'update SQL :
$a = 1;

while ($a <= $_POST["nbrex"])
{
$question[$a]=$_POST[$question.$a]; //--> dans le form jai $question.$x est ce que je peux les récupérer comme ça ?
echo
$sql ="UPDATE eval_".$societestag." SET e".$a."=".$question[$a]." where pseudo='$loginstag' and numeval='$nom_etape_formation'";
$a = $a+1;
}
Apres echo, il ne me manque plus que ce qui doit correspondre à $question[$a]... :
echo :
UPDATE eval_peugeot SET e1=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e2=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e3=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e4=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e5=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e6=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e7=? where pseudo='toto' and numeval='EV1'
UPDATE eval_peugeot SET e8=? where pseudo='toto' and numeval='EV1'

(J'ai mis des "?" mais il ne m'affiche rien à la place bien sûr...)


Petite question qui me vient :
<td><input type="radio" name="'.$question.$x.'" value="'.$pasnote.'" checked></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$faible.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$moyen.'"></td>
<td><input type="radio" name="'.$question.$x.'" value="'.$fort.'"></td>
ici, ça boucle sur $x, et $question est l'identifiant de mes questions. Sur ma deuxième page, celle qui récupère mes boutons radio (en l'occurence ça récupère rien du tout hélas) je fais comme ça :
$question[$a]=$_POST[$question.$a]; 
...en bouclant sur $a. Est ce que je peux récupérer mes radio sachant que $a prend les mêmes valeurs que $x de la page précédente ? Je n'arrive pas à récupérer mes radio générés... je commence à pêter un cable... :cry:

Merci beaucoup aux courageux qui auront la bonté de se pencher sur mon problème...