IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Site web quiz php


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut Site web quiz php
    Bonjour,

    Mon projet:
    Site web de quiz en php avec BDD: "Vous avez droit à une partie par jour. Une partie est composée de 10 questions sur des thèmes aléatoires. Vous avez 10 secondes pour répondre. Chaque bonne réponse vous donne un point, chaque erreur ou absence de réponse vous attribut zéro à la question".

    Moyens:
    - Une BDD avec 3 colonnes: thème / questions / réponses
    - page de jeu:
    zone de question de la BDD
    zone de réponse du joueur
    zone des résultats (N° question, temps, score)


    NUMERO DE LA QUESTION : indiquer le numéro de la question : 1, 2, 3…10. Ultérieurement, comme amélioration, mettre en rouge le numéro des 3 dernières questions et mettre une indication « Attention, il ne reste que 3 questions à jouer »

    AFFICHAGE DU SCORE : 1/1 ; 1/2 ; 2/3 ; …

    COMPTE A REBOUR: quand il est à 0, afficher la réponse, calculer le score, passer à la question suivante 5 seconde après la réponse.

    LIMITER LE NOMBRE DE QUESTIONS A 10: ça doit être la dedans mais je ne sais pas comment faire...while($data = mysql_fetch_array($requete))

    TOLERANCE ORTHOGRAPHIQUE : je ne vois pas comment faire, j’ai entendu parler de javascript mais y a-t-il un tutoriel ?

    ENREGISTRER LE SCORE : je penses que c’est le mieux d’enregistrer dans une BDD : jour du questionnaire / pseudo du joueur / score

    PAGE DE STATISTIQUE: sur le profil du joueur, indiquer: son palmarès: numéro de la ligue, nombre de points, thème favoris (thème dans lequel le joueur à répondu le mieux)

    Je suis conscient qu’il reste énormément de travail et que je suis au tout début de mon projet… Je travail en parallèle sur la page d’espace membre.

    Etant débutant et autodidacte, j’accepte l’aide de tous ! sans vous, je n’y arriverai pas…

    Merci beaucoup

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
    <title>QUIZ QPUC</title> 
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="css.css" />
    <script type="text/javascript" src="chrono.js"></script> 
    </head>
     
     
    <body>
     
    <!-- ######## TITRE ########
    <div class="titre">
    	<img src="img.bmp" height="80px" />
    </div>
    ######## TITRE ######## -->
     
     
    <!-- ZONE DE LA QUESTION -->
    <div class="question">
    <form method="post" action="quiz_qpuc_version1.php">
     
    	<!-- ######## THEME DE LA QUESTION ######## -->
    	<div class="theme">
    		<?php
    		mysql_connect("localhost", "root", "");
    		mysql_select_db("QPUC");
    		$requete = mysql_query("SELECT theme, question, reponse FROM qpuc ORDER BY rand() LIMIT 0,1") or die(mysql_error(select)); 
    		while($data = mysql_fetch_array($requete)) {echo $data['theme'];} // THEME DE LA QUESTION
    		?>
    	</div>
    	<!-- ######## THEME DE LA QUESTION ######## -->
     
    	<!-- ######## QUESTION ######## -->
    	<div class="quest">
    	<p id="display"></p> <!-- ESPACE POUR LA QUESTION -->
     
    <script type="text/javascript">
    var vitesse = 60;			// vitesse de défilement
    var txt = "<?php 
    $requete = mysql_query('SELECT theme, question, reponse FROM qpuc ORDER BY rand() LIMIT 0,1') or die(mysql_error(select)); 
    while($data = mysql_fetch_array($requete)) {echo utf8_encode(html_entity_decode($data['question']));} ?>",				// texte à afficher
     
    display = document.getElementById('display');
     
    for(var i = 0, l = txt.length; i < l; i++) {
    (function(i) {
    setTimeout(function() {display.innerHTML += txt.charAt(i);}, i * vitesse);
    }(i));
    }
    </script>
     
    	</div>
    	<!-- ######## QUESTION ######## -->
     
    	<!-- ######## REPONSE DU JOUEUR ######## -->
    	<div id="reponse" class="reponse">
    		<input type="text" name="rep" size="25" value="Tapez votre réponse" onfocus="this.value=''" />
    		<input type="submit" name="valid" value="OK" onclick="" />
    	</div>
    	<!-- ######## REPONSE DU JOUEUR ######## -->
     
    </form>
    </div>
     
    <!-- ######## ZONE DE RESULTAT (à droite) ######## -->
    <div class="droite">
     
    	<!-- ######## COMPTEUR A REBOUR ######## -->
    	<input type="text" name="compteur" id="compteur"  class="chrono" size="2" readonly="readonly">
    	<input type="hidden" name="MaCheck" id="MaCheck" onclick="Relance(this);">
    	<!-- ######## COMPTEUR A REBOUR ######## -->
     
    	<!-- ######## SCORES ######## -->
    	<div class="score">
    	<?php 
    	$reponse = $data['reponse'];
    	$reponsejoueur = $_POST['rep'];
    	if ($reponse == $reponsejoueur) {echo '<font color="#00ff00">/10</font>';} 
    	else {echo '<font color="#ff0000">/10</font>';} ?>
    	</div>
    	<!-- ######## SCORES ######## -->
     
    	<!-- NUMERO DE LA QUESTION -->
    	<div class="num">Question /10
    	</div>
     
    </div>
    <!-- ######## ZONE DE RESULTAT (à droite) ######## -->
     
    </body>
    </html>

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2007
    Messages
    248
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 248
    Points : 231
    Points
    231
    Par défaut
    Citation Envoyé par julienber Voir le message
    NUMERO DE LA QUESTION : indiquer le numéro de la question : 1, 2, 3…10. Ultérieurement, comme amélioration, mettre en rouge le numéro des 3 dernières questions et mettre une indication « Attention, il ne reste que 3 questions à jouer »
    Pour cela il suffit de rajouter un compteur. Il suffit d'initialiser le compteur à 1 pour la première question, de l'envoyer avec un champ caché du formulaire, et de l'incrémenter à chaque traitement par le script quiz_qpuc_version1.php

    Autre possibilité, les variables de session qui sont initialisées lors du chargement de la première question et qui s'incrémente au fur et à mesure du genre :
    debut :
    $_SESSION['quizz']['num_question] = 1;
    fin :
    $_SESSION['quizz']['num_question]++ ;

    AFFICHAGE DU SCORE : 1/1 ; 1/2 ; 2/3 ; …
    Même principe que le pb précédent.
    COMPTE A REBOUR: quand il est à 0, afficher la réponse, calculer le score, passer à la question suivante 5 seconde après la réponse.
    Là ça va être en javascript, avec un script qui se charge dans la balise body et qui redirige automatiquement après 10 secondes.
    LIMITER LE NOMBRE DE QUESTIONS A 10: ça doit être la dedans mais je ne sais pas comment faire...while($data = mysql_fetch_array($requete))
    Réglable également avec les variables de session, quand
    $_SESSION['quizz']['num_question] arrive à 10 on affiche le résultat.
    TOLERANCE ORTHOGRAPHIQUE : je ne vois pas comment faire, j’ai entendu parler de javascript mais y a-t-il un tutoriel ?
    Jamais fait mais tu devrais pouvoir trouver les infos à ce sujet sur le forum...
    ENREGISTRER LE SCORE : je penses que c’est le mieux d’enregistrer dans une BDD : jour du questionnaire / pseudo du joueur / score
    Effectivement, c'est ce qu'il y a de mieux, d'où une table supplémentaire.
    PAGE DE STATISTIQUE: sur le profil du joueur, indiquer: son palmarès: numéro de la ligue, nombre de points, thème favoris (thème dans lequel le joueur à répondu le mieux)
    Même réponse que précédemment.

    Bon courage...

  3. #3
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Pour la tolérance orthographique, le mieux est que le contributeur du quiz puisse proposer une liste de termes valides. Et toi, lorsque tu compareras le choix utilisateur avec la réponse réelle, n'oublie pas de comparer les deux chaines en minuscules pour ne pas prendre en compte la casse.

    Et ca ne peut pas être javascript puisque c'est à PHP de traiter les données :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $isvalid = strtolower($valeur_reelle) === strtolower($valeur_saisie);

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Pour cela il suffit de rajouter un compteur. Il suffit d'initialiser le compteur à 1 pour la première question, de l'envoyer avec un champ caché du formulaire, et de l'incrémenter à chaque traitement par le script quiz_qpuc_version1.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    		<?php
    		mysql_connect("localhost", "root", "");
    		mysql_select_db("QPUC");
    		$requete = mysql_query("SELECT theme, question, reponse FROM qpuc ORDER BY rand() LIMIT 0,1") or die(mysql_error(select)); 
    		$num_quest = 1;
    		while($data = mysql_fetch_array($requete)) {echo $data['theme']; $num_quest++} // THEME DE LA QUESTION
    		?>
    		
    <input type="hidden" name="num_question" value="<?php echo $num_quest; ?>" />
    J'ai fait comme ceci... en revoyant tous mes cours...
    Je cherchais désespérément comment écrire ca:
    "à chaque traitement par le script quiz_qpuc_version1.php; incrémenter $num_quest" mais je l'aimis finalement dans le while...

    Est-ce que c'est comme ca qu'il faut faire ?
    Je passe à la suite en attendant.

    Et merci de ta réponse au faite...



    AFFICHAGE DU SCORE : 1/1 ; 1/2 ; 2/3 ; …
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    	<?php 
    	$score = 0;
    	$reponse = $data['reponse'];
    	$reponsejoueur = $_POST['rep'];
    	if ($reponse == $reponsejoueur) {$score++; echo '<font color="#00ff00">'.$score.'/'.$num_quest.'</font>';} 
    	else {echo '<font color="#ff0000">'.$score.'/'.$num_quest.'</font>';} ?>

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2010
    Messages
    38
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2010
    Messages : 38
    Points : 22
    Points
    22
    Par défaut
    Je vous ajoute mon code complet que j'ai essayé de modifier mais le numero de la question ne fonctionne pas: toujours 1/2
    idem pour le score...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
     
    <head>
    <title>QUIZ QPUC</title> 
    <meta http-equiv="Content-Style-Type" content="text/css" />
    <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
    <link rel="stylesheet" type="text/css" href="css.css" />
    <script type="text/javascript" src="chrono.js"></script> 
    </head>
     
     
    <body>
     
    <!-- ######## TITRE ########
    <div class="titre">
    	<img src="img.bmp" height="80px" />
    </div>
    ######## TITRE ######## -->
     
     
    <!-- ZONE DE LA QUESTION -->
    <div class="question">
    <form method="post" action="quiz_qpuc_version2.php">
     
    	<!-- ######## THEME DE LA QUESTION ######## -->
    	<div class="theme">
    		<?php
    		mysql_connect("localhost", "root", "");
    		mysql_select_db("QPUC");
    		$requete = mysql_query("SELECT theme, question, reponse FROM qpuc ORDER BY rand() LIMIT 0,1") or die(mysql_error(select)); 
    		$num_quest = 1;
    		while($data = mysql_fetch_array($requete)) {echo $data['theme']; $num_quest++;} // THEME DE LA QUESTION
    		?>
     
    		<input type="hidden" name="num_question" value="<?php echo $num_quest; ?>" />
    	</div>
    	<!-- ######## THEME DE LA QUESTION ######## -->
     
    	<!-- ######## QUESTION ######## -->
    	<div class="quest">
    	<p id="display"></p> <!-- ESPACE POUR LA QUESTION -->
     
    <script type="text/javascript">
    var vitesse = 60;			// vitesse de défilement
    var txt = "<?php 
    $requete = mysql_query('SELECT theme, question, reponse FROM qpuc ORDER BY rand() LIMIT 0,1') or die(mysql_error(select)); 
    while($data = mysql_fetch_array($requete)) {echo utf8_encode(html_entity_decode($data['question']));} ?>",				// texte à afficher
     
    display = document.getElementById('display');
     
    for(var i = 0, l = txt.length; i < l; i++) {
    (function(i) {
    setTimeout(function() {display.innerHTML += txt.charAt(i);}, i * vitesse);
    }(i));
    }
    </script>
     
    	</div>
    	<!-- ######## QUESTION ######## -->
     
    	<!-- ######## REPONSE DU JOUEUR ######## -->
    	<div id="reponse" class="reponse">
    		<input type="text" name="rep" size="25" value="Tapez votre réponse" onfocus="this.value=''" />
    		<input type="submit" name="valid" value="OK" onclick="" />
    	</div>
    	<!-- ######## REPONSE DU JOUEUR ######## -->
     
    </form>
    </div>
     
    <!-- ######## ZONE DE RESULTAT (à droite) ######## -->
    <div class="droite">
     
    	<!-- ######## COMPTEUR A REBOUR ######## -->
    	<input type="text" name="compteur" id="compteur"  class="chrono" size="2" readonly="readonly">
    	<input type="hidden" name="MaCheck" id="MaCheck" onclick="Relance(this);">
    	<!-- ######## COMPTEUR A REBOUR ######## -->
     
    	<!-- ######## SCORES ######## -->
    	<div class="score">
    	<?php 
    	$score = 0;
    	$reponse = $data['reponse'];
    	$reponsejoueur = $_POST['rep'];
    	if ($reponse == $reponsejoueur) {$score++; echo '<font color="#00ff00">'.$score.'/'.$num_quest.'</font>';} 
    	else {echo '<font color="#ff0000">'.$score.'/'.$num_quest.'</font>';} ?>
    	<input type="hidden" name="score" value="<?php echo $score; ?>" />
    	</div>
    	<!-- ######## SCORES ######## -->
     
    	<!-- NUMERO DE LA QUESTION -->
    	<div class="num"><?php echo 'Question '.$num_quest.'/10'; ?>
    	</div>
     
    </div>
    <!-- ######## ZONE DE RESULTAT (à droite) ######## -->
     
    </body>
    </html>

    merci de votre aide car je suis bloqué là...

Discussions similaires

  1. [PHP-JS] Tester un site web en php
    Par bractar dans le forum Langage
    Réponses: 7
    Dernier message: 19/06/2007, 00h15
  2. site web multilingue / php
    Par AP dans le forum Langage
    Réponses: 4
    Dernier message: 14/05/2007, 16h38
  3. Réponses: 1
    Dernier message: 26/01/2007, 16h13
  4. Codes gratuits de site web en php
    Par b612 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 11/11/2005, 10h26
  5. [Sécurité] Masquer une partie de site web avec PHP
    Par Marc365 dans le forum Langage
    Réponses: 3
    Dernier message: 21/10/2005, 15h30

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo