$variable variable selon le cas.

Signaler
Messages postés
20
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
6 novembre 2008
-
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
-
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

Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
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.
Messages postés
20
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
6 novembre 2008

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...

++
Messages postés
20
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
6 novembre 2008

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

++
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
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 ?
Messages postés
20
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
6 novembre 2008

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.

++
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
ce que tu nous dit ne m'aide pas a comprendre ton code...
Messages postés
20
Date d'inscription
vendredi 28 décembre 2007
Statut
Membre
Dernière intervention
6 novembre 2008

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 .

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

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..

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

L0rD...
Messages postés
12303
Date d'inscription
mardi 10 février 2004
Statut
Modérateur
Dernière intervention
30 juillet 2012
42
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 ?