Dépassement du temps validations de la question.....

Résolu/Fermé
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 - Modifié le 30 mai 2017 à 14:13
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 - 31 mai 2017 à 07:58
L'idée sais que dès le temps est terminer passer a la questions suivante en validant la question et en l’inscrivant dans la base de donnée.

Donc il y a du java scripte dans le bout de code et du php, mais je sais pas comment faire passer une variable de JavaScript a php pour lui dire temps écouler récupération de l'id question puis nombre de point a jouter 0 et id_user = ?.

Si l’utilisateur recharge sa page la question devra rester figer afin d’éviter de choisir sa question comme bon te semble....


Voici le code :

<?php
session_start();
include ('cobdd.php');

if(!isset($_SESSION['id']))
{
	header('Location: connex.php');
}

$id_user  = !empty($_SESSION['id']) ? $_SESSION['id'] : NULL;




$req_questions = $bdd->prepare("SELECT * FROM questions WHERE id NOT IN (SELECT question_fait FROM info_user WHERE id_user = :id_user) ORDER BY RAND()");
$req_questions->execute(array(":id_user"=>$id_user));
$Q = $req_questions->fetch();
$reste_Q = $req_questions->rowCount();

$id_question = $Q['id'];


$req_reponse = $bdd->prepare('SELECT * FROM reponse WHERE id_question = ? ORDER BY RAND()');
$req_reponse->execute(array($id_question));

$verification_succee = $bdd->prepare('SELECT * FROM reponse WHERE id = ?');

$req_q_fait = $bdd->prepare('INSERT INTO info_user(id_user,question_fait,point,tempo) VALUES(:id_user , :id_question , :point, NOW())');

$req_nbr_point = $bdd->prepare('SELECT SUM(point) AS total_point FROM info_user WHERE id_user = ?');
$req_nbr_point->execute(array($id_user));
$nbr_point = $req_nbr_point->fetch();


$verif_point = $bdd->prepare('SELECT COUNT(id) AS security FROM info_user WHERE id_user = ? AND question_fait = ?');





$now = date('Y-m-d');
$req_nbr_question = $bdd->prepare("SELECT COUNT(id) AS NB FROM info_user WHERE id_user = :id_user AND tempo = :now ");
$req_nbr_question->execute(array(":id_user"=>$id_user,":now"=>$now));
$Q_aujourdhui = $req_nbr_question->fetch();
$Q_A = $Q_aujourdhui['NB'];
?>


<!doctype html>
<html lang="fr">
<head>
  <meta charset="utf-8">
  <title>Page Quiz</title>
  <link rel="stylesheet" href="style.css">
</head>
<body>
 <script type="text/javascript">
      function RedirectionJavascript(){
        document.location.href="index.php";
      }
   </script>
<b>Bienvenue <?= $_SESSION['pseudo'] ?></b></br>

Vous avez un total de :  <i><?php if($nbr_point['total_point'] != 0) { echo $nbr_point['total_point'].' point'; if($nbr_point['total_point'] > 1) { echo 's'; } }else{ echo 'Aucun point !'; }?> </i></br></br></br></br>
<?php 
	
if(isset($_POST['ok']))
{
	if(!empty($_POST['reponse']))
	{
		$r = $req_reponse->fetch();
		if($_POST['reponse'])
		{
			$verif_point->execute(array($id_user, $_POST['id_question']));
			$V_P = $verif_point->fetch();
			$Vv_p = $V_P['security'];
			if($Vv_p == 0)
			{
				$verification_succee->execute(array($_POST['reponse']));
				$V_S = $verification_succee->fetch();
				if($V_S['correct'] == !NULL)
				{
					$point = 1;
					$req_q_fait->execute(array(":id_user"=>$id_user,":id_question"=>$_POST['id_question'],":point"=>$point));
					echo "Bravo bonne réponse !";
					header("Refresh: 2; URL=index.php" );
				}
				else
				{
					$point = 0;
					$req_q_fait->execute(array(":id_user"=>$id_user,":id_question"=>$id_question,":point"=>$point));
					echo "Mauvaise réponse !";
					header("Refresh: 3; URL=index.php" );
				}
			}
			
		}	
	}
	
	
}else{	
if($reste_Q == 0 OR $Q_A >= 10)
{
	echo "Vous avez répondu a toutes les questions pour aujourd'hui !";
}
else
{
?>
    <script language="JavaScript">
               
                function t()
                {
            var compteur=document.getElementById('compteur');
            s=duree;
            m=0;h=0;
            if(s<0)
                        {
                                compteur.innerHTML="terminé<br />"
								window.location.reload(); 
								
            }
                        else
                        {
                                if(s>59)
                                {
                                        m=Math.floor(s/60);
                                        s=s-m*60
                }
                                if(m>59)
                                {
                                        h=Math.floor(m/60);
                    m=m-h*60
                                }
                if(s<10)
                                {
                                        s="0"+s
                }
                if(m<10)
                                {
                    m="0"+m
                }
                  compteur.innerHTML=h+":"+m+":"+s+"<br />"
            }
            duree=duree-1;
            window.setTimeout("t();",999);

        }
               
                </script>
                <div id="compteur"></div>
                <script language="JavaScript">
                        duree="30";
                        t();
                </script>
<h3><?= $Q['question'] ?></h3>
<?php

while($r = $req_reponse->fetch()){
?>
<form method="POST" >
	<input type='hidden' name='id_question' value="<?= $Q['id'] ?>">
	<input type="radio" id="<?= $r['id'] ?>" name="reponse" value="<?= $r['id'] ?>" /> <label for="<?= $r['id'] ?>"><?= $r['reponse'] ?></label></br>
<?php
}
?>
</br></br>
	<input type="submit" name="ok" value="Valider" />
</form>
<?php
	}
}
?>

</body>
</html>




Merci de votre aide.....

1 réponse

yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471
30 mai 2017 à 23:34
bonsoir,
je pense que tu dois mémoriser dans la base de données:
- que l’utilisateur a reçu une question et qu'une réponse est attendue
- quelle est la question envoyée
- quand la question a été envoyée
ton script java pourrait simplement envoyer une indication que le temps est écoulé, la page php a toutes les informations pour faire le reste du travail.
de même, le script php pourrait détecter, quand il est appelé, qu'il attend une réponse, et donc ne renverrait pas une nouvelle question.
0
flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021 21
31 mai 2017 à 00:47
Le problème je mis connais pas du tous en javascript mais alors pas du tout....

Car oui l'idéale serai de entrer une requête SQL a la fin du compte a rebours avec id_question comme cela ont pourrai savoir que la question a était faites mais non répondu .

Mais comment faire cela ?
0
yg_be Messages postés 22692 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 16 avril 2024 1 471 > flo39400 Messages postés 596 Date d'inscription mardi 8 avril 2008 Statut Membre Dernière intervention 9 septembre 2021
31 mai 2017 à 07:58
c'est le code php qui va faire la majorité du travail:
==> mémoriser dans la base de données:
- que l’utilisateur a reçu une question et qu'une réponse est attendue
- quelle est la question envoyée
- quand la question a été envoyée
==> utiliser ces informations à chaque demande de question ou envoi de réponse
0