[PHP] Petit jeu...

Petit jeu... [PHP] - PHP - Programmation

Marsh Posté le 15-05-2007 à 17:18:23    

bonjour !
 
alors j'ai un léger problème je vais tenter de vous l'expliquer.
 
je suis entrain de réaliser un petit jeu d'énigme en php.
 
j'ai deux table, la table chat, contenant les champ, ID,PSEUDO,MESSAGE et la table enigme contenant les champ, ID,QUESTION,INDICE,REPONSE
 
le formulaire requetant la table chat, permet au utilisateur de rentrer leur pseudo et leur réponse a l'énigme et je veux ensuite réaliser un petit script qui me permettrait d'afficher le pseudo de la personne qui aurait trouver la bonne réponse et de l'afficher sur le site.
 

Code :
  1. <?php
  2.  $reponse = $row_Recordset3['REPONSE'];
  3.  $message = $row_Recordset2['MESSAGE'];
  4.  if ($reponse == $message) {
  5.  echo "<br>bravo";
  6.  echo $row_Recordset2['PSEUDO'];
  7.  }
  8.  else {
  9.  echo "<br>Personne n'a encore trouvé";
  10.  }
  11.  ?>


 
se code réagi bien sauf que, si qqun écrit un autre message par dérriére il ne m'affiche plus pseudo du gagnant et en plus il ne faut taper dans le champ message que le mot seul, il ne comprends pas si je dis : "la réponse est blablabla" il ne comprends que si je rentre "blablabla"
 
je vous joins mes requéte :
 

Code :
  1. $maxRows_Recordset2 = 10;
  2. $pageNum_Recordset2 = 0;
  3. if (isset($_GET['pageNum_Recordset2'])) {
  4.   $pageNum_Recordset2 = $_GET['pageNum_Recordset2'];
  5. }
  6. $startRow_Recordset2 = $pageNum_Recordset2 * $maxRows_Recordset2;
  7. mysql_select_db($database_bdd, $bdd);
  8. $query_Recordset2 = "SELECT * FROM chat ORDER BY ID DESC";
  9. $query_limit_Recordset2 = sprintf("%s LIMIT %d, %d", $query_Recordset2, $startRow_Recordset2, $maxRows_Recordset2);
  10. $Recordset2 = mysql_query($query_limit_Recordset2, $bdd) or die(mysql_error());
  11. $row_Recordset2 = mysql_fetch_assoc($Recordset2);
  12. if (isset($_GET['totalRows_Recordset2'])) {
  13.   $totalRows_Recordset2 = $_GET['totalRows_Recordset2'];
  14. } else {
  15.   $all_Recordset2 = mysql_query($query_Recordset2);
  16.   $totalRows_Recordset2 = mysql_num_rows($all_Recordset2);
  17. }
  18. $totalPages_Recordset2 = ceil($totalRows_Recordset2/$maxRows_Recordset2)-1;
  19. mysql_select_db($database_bdd, $bdd);
  20. $query_Recordset3 = "SELECT * FROM enigme ORDER BY ID DESC";
  21. $Recordset3 = mysql_query($query_Recordset3, $bdd) or die(mysql_error());
  22. $row_Recordset3 = mysql_fetch_assoc($Recordset3);
  23. $totalRows_Recordset3 = mysql_num_rows($Recordset3);
  24. ?>


 
merci beaucoup si vous avez eu le courage de me lire jusque là lol
 
Seb...

Reply

Marsh Posté le 15-05-2007 à 17:18:23   

Reply

Marsh Posté le 15-05-2007 à 17:28:16    

Si je comprend bien, tu te heurtes au problème (classique) de l'exploitation des résultats d'un sondage.
 
- Soit tu fais une QCM (i.e. choix fermés), et tu peux très facilement détecter les bonnes réponses (une table contient les réponses, identifiés par un id, l'utilisateurs coche simplement la bonne case).
 
- Soit tu fais un choix ouvert (l'utilisateur rentre ce qu'il veut), et là, c'est simplement impossible à moins d'une intervention humaine. Tu peux toujours bidouiller avec des LIKE (mysql), SOUNDEX (mysql ou php), MATCH (mysql) et compagnie, mais tu n'arriveras jamais à un résultat concluant.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 15-05-2007 à 17:33:04    

je peux pas dire dans mon code genre :
 
if ($reponse == *$message*)
 
en gros il faut que la réponse soit dans le message, et non pas que la réponse soit le message.
tu comprends ?

Reply

Marsh Posté le 15-05-2007 à 21:01:16    

Ben si, comme je l'ai dis dans mon précédent message, tu peux faire une requete avec l'opérateur LIKE. Ou utiliser la fonction strstr en php.
 
Mais il n'en reste pas moins que c'est très bancal. Par exemple, si la réponse contient des accents et que j'en mets pas, ça ne fonctionnera pas.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 16-05-2007 à 13:38:09    

cgo2 a écrit :

Ben si, comme je l'ai dis dans mon précédent message, tu peux faire une requete avec l'opérateur LIKE. Ou utiliser la fonction strstr en php.
 
Mais il n'en reste pas moins que c'est très bancal. Par exemple, si la réponse contient des accents et que j'en mets pas, ça ne fonctionnera pas.


 
Ah okey !!!
je pense que j'ai une idée si je dis  

Code :
  1. <?php
  2.  $reponse = $row_Recordset3['REPONSE'];
  3.  $message = $row_Recordset2['MESSAGE'];
  4.  if ($reponse == $message) {
  5.  echo "<br>Bravo à ";
  6.  echo "<h4>";
  7.  echo $row_Recordset2['PSEUDO'];
  8.  echo "</h4>";
  9.  echo " le formulaire";
  10.  }
  11.  else {
  12.  echo "<br>Personne n'a encore trouvé";
  13.  }
  14.  ?>


 
voici mon formulaire :  
 

Code :
  1. <form method="post" name="form1" action="<?php echo $editFormAction; ?>">
  2.           <table align="center">
  3.             <tr valign="baseline">
  4.               <td align="right" valign="middle" nowrap><span class="Style1">Nom:</span></td>
  5.               <td><input type="text" name="PSEUDO" value="" size="32"></td>
  6.             </tr>
  7.             <tr valign="baseline">
  8.               <td align="right" valign="middle" nowrap><span class="Style1">Message:</span></td>
  9.               <td><textarea name="MESSAGE" cols="32" rows="2"></textarea></td>
  10.             </tr>
  11.             <tr valign="baseline">
  12.               <td nowrap align="right">&nbsp;</td>
  13.               <td><input type="submit" value="Envoyer"></td>
  14.             </tr>
  15.           </table>
  16.           <input type="hidden" name="MM_insert" value="form1">
  17.         </form>


 
je voudrai insérer mon formulaire dans le else mais je sais pas trop comment faire :/
 

Reply

Marsh Posté le 16-05-2007 à 13:44:58    

plop007 a écrit :

Ah okey !!!
je voudrai insérer mon formulaire dans le else mais je sais pas trop comment faire :/


c'est a dire ?


---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010
Reply

Marsh Posté le 16-05-2007 à 14:07:51    

en fait je veux afficher le formulaire que si personne n'a trouvé la réponse dans mon script al a place de  
 
#
else {
#
        echo "<br>Personne n'a encore trouvé";
#
        }
 
je voudrai :
 
#
else {
#
        echo monformulaire;
#
        }

Reply

Marsh Posté le 16-05-2007 à 14:33:02    

ah ben non c bon j'ai en fait mis mon formulaire dans un fichier a part : formulaire.php
et j'ai mis dans mon script  
 
else {
 
include ("formulaire.php" )
}
 
et le tour est joué :)
 
maintenant faut que j'arrive à faire que la réponse soit dans le message, et non pas que la réponse soit le message.  
 
comme tu me disais cgo2 utiliser ststr mais j'ai rechercher un peu de doc et que je comprends pas du tout, qqun peut m'aider ?

Reply

Marsh Posté le 16-05-2007 à 14:58:50    

En fait c'est strpos qu'il faut utiliser dans ton cas.


---------------
When it's from Finland it's good.  - Mon blog
Reply

Marsh Posté le 16-05-2007 à 15:56:14    

j'ai éssayer de faire ça :
 
 <?php
  $reponse = $row_Recordset3['REPONSE'];
  $message = $row_Recordset2['MESSAGE'];
  $pos = strpos($message, $reponse);
  if ($reponse == $pos) {
  echo "<br>Bravo à ";
  echo "<h4>";
  echo $row_Recordset2['PSEUDO'];
  echo "</h4>";
  echo "La bonne réponse était : ";
  echo $row_Recordset3['REPONSE'];
  }
  else {
  include ("formulaire.php" );
  }
  ?>
 
mais ça ne marche pas du tout, de plus dans le manuel il dise que c pour chercher un caractére, tu peux m'en dire plus car je ne sais pas trop par où commencer :(

Reply

Marsh Posté le 16-05-2007 à 15:56:14   

Reply

Marsh Posté le 16-05-2007 à 15:59:02    

en fait c bon :)  
 
 <?php
  $reponse = $row_Recordset3['REPONSE'];
  $message = $row_Recordset2['MESSAGE'];
  if (strpos($message, $reponse)) {
  echo "<br>Bravo à ";
  echo "<h4>";
  echo $row_Recordset2['PSEUDO'];
  echo "</h4>";
  echo "La bonne réponse était : ";
  echo $row_Recordset3['REPONSE'];
  }
  else {
  include ("formulaire.php" );
  }
  ?>
 
merci beaucoup :D

Reply

Marsh Posté le 16-05-2007 à 16:51:40    

Euh la documentation c'est pas juste pour faire joli hein ! Surtout le gros encart rouge nommé "AVERTISSEMENT"...  :o  
 
AVERTISSEMENT
Cette fonction peut retourner FALSE, mais elle peut aussi retourner une valeur équivalent à FALSE, utilisable dans une condition if simple. Utilisez l'opérateur === pour tester la valeur de retour exacte de cette fonction.
 
http://fr3.php.net/fr/strpos


Message édité par cgo2 le 16-05-2007 à 16:52:21

---------------
When it's from Finland it's good.  - Mon blog
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed