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

Résolu
flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 
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   Statut Membre Dernière intervention   21
 
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 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > flo39400 Messages postés 596 Date d'inscription   Statut Membre Dernière intervention  
 
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