$variable variable selon le cas.

oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008 - 6 nov. 2008 à 11:27
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 - 6 nov. 2008 à 23:45
Bonjour à tous.

Comme je l'ai écrit dans le titre, je souhaiterais savoir s'il était possible d'attribuer une valeur variable à une variable selon l'entrée que l'on récupère dans une table.

Pour être un peu plus précis, je souhaite faire un questionnaire à mettre dans un chat.

Je fais donc une requête Mysql permettant de m'afficher une entrée de ma table au hasard

et souhaiterais pouvoir attribuer à une variable la valeur que Mysql me donne.

J'ignore si cela est possible mais si tel est le cas, j'aurais voulu comment.

Je vous donne le code qui ne fonctionne pas pour que vous puissiez m'aider :





<hr />
$reponse_quest = mysql_query("SELECT question FROM bot_gamme ORDER BY RAND() LIMIT 1"); // Requête SQL
 
while ($donnees_quest = mysql_fetch_array($reponse_quest) )




{
    echo $donnees_quest['question'];


}
 if ($donnees_quest['question']=='Nommez les notes de la gamme de C .')
 {
 $quest = 'Nommez les notes de la gamme de C .'||'Nommez les notes de la gamme de D .';
 }
 elseif ($donnees_quest['question']=='Nommez les notes de la gamme de D .')
 {
 $quest = 'Nommez les notes de la gamme de D .';
 }
 elseif ($donnees_quest['question']=='Nommez les notes de la gamme de E .')
 {
 $quest = 'Nommez les notes de la gamme de E .';
 }
 elseif ($donnees_quest['question']=='Nommez les notes de la gamme de F .')
 {
 $quest = 'Nommez les notes de la gamme de F .';
 }
 
 $reponse_b = mysql_query("SELECT question FROM bot_gamme WHERE question='".$quest."' "); // Requête SQL
while ($donnees_b = mysql_fetch_array($reponse_b) )
 
 
 
 {echo ''.$donnees_b['question'].'';}





<hr />


Le but ici étant d'attribuer à $donnees_b['question'] la même valeur que $donnees_quest['question'] .

Merci d'avance pour votre aide...

++

11 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 nov. 2008 à 12:19
salut

je ne comprends pas cette ligne de code :

$quest = 'Nommez les notes de la gamme de C .'||'Nommez les notes de la gamme de D .';


si tu pouvais nous dire ce que tu voulais faire avec, et ce qui ne marche pas dans ton code, ca nous aiderait pour t'aider.
0
oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 12:32
Salut.

Je me suis trompé en copiant/collant.

$quest = 'Nommez les notes de la gamme de C .'||'Nommez les notes de la gamme de D .';

Doit être remplacer par :

$quest = 'Nommez les notes de la gamme de C .'

<hr />
Et bien ce qui ne fonctionne pas, c'est que php ne m'affiche pas $donnees_b['question'] en fonction de la valeur de $donnees_quest['question'].

Il m'affiche toujours 'Nommez les notes de la gamme de C .' quel que soit la valeur de $donnees_quest['question']

Je ne sais pas si je suis clair...

++
0
oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 12:50
re:

Bon alors il ne m'affiche plus rien.

J'ai donc ajouté un "or die" :

(ligne 59 ) $reponse_b = mysql_query("SELECT question FROM bot_gamme WHERE question='".$quest."' ")or die mysql_error());

Et voilà ce qu'il me dit :

Parse error: syntax error, unexpected T_STRING in /home/loumessaca/www/navigation/gamme.php on line 59

++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 nov. 2008 à 12:54
la logique de ton script est assez tordue...

remplace :
or die mysql_error());
par :
or die(mysql_error());


pourquoi ne pas faire :
$quest = $donnees_quest['question']
?


et t'es sur que dans ta base de donnee t'as juste :
"Nommez les notes de la gamme de Truc"
parce-que quand tu veux afficher la question aleatoire, ca ne semble pas etre le cas...


bon, parlons de ta seconde requete maintenant :

$reponse_b = mysql_query("SELECT question FROM bot_gamme WHERE question='".$quest."' "); // Requête SQL

elle ne sert a rien...

select question ... where question = ...

t'as deja la reponse, tu sais deja ce que vaut question a ce moment la, donc pourquoi une seconde requete ?
0

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

Posez votre question
oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 13:11
re :

"la logique de ton script est assez tordue... "

ça c'est plus que probable... :lol:

" remplace : or die mysql_error()); par : or die(mysql_error());  "

du coup, je n'ai plus d'erreur afficher mais rien ne s'affiche.

"  pourquoi ne pas faire : $quest = $donnees_quest['question'] ?  "

Je l'ai déjà fait mais ça ne donne rien non plus.
D'où la logique tordue.. :lol:

"  bon, parlons de ta seconde requete maintenant :

$reponse_b = mysql_query("SELECT question FROM bot_gamme WHERE question='".$quest."' "); // Requête SQL

elle ne sert a rien...

select question ... where question = ...

t'as deja la reponse, tu sais deja ce que vaut question a ce moment la, donc pourquoi une seconde requete ? "

Sur ce bout de script oui, mais le but, à terme est de pouvoir comparer la réponse d'un utilisateur  avec la réponse à la question que le $donnees_quest['question'] affiche.

++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 nov. 2008 à 13:14
ce que tu nous dit ne m'aide pas a comprendre ton code...
0
oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 13:23
re :

Et bien en fait je fais du pas à pas car je débute.

Ce que je voudrais faire c'est :

1 - Avoir une question qui s'affiche de manière aléatoire. ( ça j'arrive )
2 - L' utilisateur donne sa réponse. (ça j'arrive )
3 - On compare la réponse donnée à celle de la table où se trouve la question. ( c'est là que je bloque puisque la question est aléatoire )
4 - Si la réponse est mauvaise on repose la question.
5 - Si la réponse est bonne on passe à la question suivante.

Voilà. Est-ce que c'est plus clair ou pas.

Mais peut être que je sui sur la mauvaise voie avec ce code .

++
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 nov. 2008 à 13:41
pour memoriser la question deja posee et sa reponse, tu devrais utiliser $_SESSION plutot que de faire une nouvelle requete.
0
oui14 Messages postés 20 Date d'inscription vendredi 28 décembre 2007 Statut Membre Dernière intervention 6 novembre 2008
6 nov. 2008 à 14:14
re :

Bon alors j'ai modifié mon script :

// On selectionne l'entrée de la table "bot_gamme" possédant l'id 1.
$reponse_quest = mysql_query("SELECT question FROM bot_gamme WHERE id=1"); // Requête SQL
 


 // On fait une boucle pour afficher le résultat :
while ($donnees_quest = mysql_fetch_array($reponse_quest) )


// On l'affiche.
{
    echo $donnees_quest['question'];


}

// On selectionne la dernière entrée de la table "lou_gamme" dans le champ "message"


$reponse_mbr = mysql_query("SELECT message FROM lou_gamme ORDER BY id DESC LIMIT 0,01");


//  On fait une boucle pour afficher le résultat :
while ($donnees_mbr = mysql_fetch_array($reponse_mbr) )

// On l'affiche ( pour vérifier )


 { echo ''.$donnees_mbr['message'].'';}

// On selectionne la réponse "c" du champ "b_reponse" de la table "bot_gamme"


$reponse_b = mysql_query("SELECT b_reponse FROM bot_gamme WHERE b_reponse='c'"); // Requête SQL

// On fait une boucle :
 
while ($donnees_b = mysql_fetch_array($reponse_b) )

// On l'affiche ( pour vérifier toujours )


{ echo ''.$donnees_b['b_reponse'].'';}

// Si les variables sont identiques :


if ($donnees_mbr['message']=$donnees_b['b_reponse'])

// On affiche "Bravo"


{ echo 'bravo !';}

Si elles ne le sont pas :


elseif ($donnees_mbr['message']== $donnees_b['b_reponse'])

// On affiche " Dommage "


{ echo 'dommage !';}
 

Un problème demeure hélas : Le message affiché ne varie pas.

J'ai fais un "echo" de chaque variable pour m'assurer qu'elles sont bonnes mais quelle que soit la réponse donnée, il m'affiche toujours "bravo"..

Je suis perdu ou fatigué mais je ne comprends plus..

++
0
xactise Messages postés 507 Date d'inscription mardi 18 février 2003 Statut Membre Dernière intervention 22 juin 2012 2
6 nov. 2008 à 22:21
// Si les variables sont identiques : if ($donnees_mbr['message']=$donnees_b['b_reponse'])
comparaison : comparaison strict :

L0rD...
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
6 nov. 2008 à 23:45
bon... moi j'ai pas lu ton code en entier, parce-que des le debut, c'est n'importe quoi...


pourquoi tu fais une boucle alors que tu ne veux recuperer qu'un seul enregistrement ?
0
Rejoignez-nous