Bonjour je suis en train de realiser un quizz basique mais je n'arrive pas a le finaliser je conte sur vous ^^

Donc voila il y a une image que je prend dans une base de donnee et l'utilisateur doit ecrire ce a quoi l'image correspond. Mais a chaque fois que je click sur le bouton "submit" sa recharge la page et compart la reponse a la nouvel image.

Voivi le lien pour tester:
http://www.garcialuc.ovh/ProjetRikiChinoi/etudiant/validationQuizz.php

et le code si quelqu'un a le plaisir de regarder:
<?php


require '../admin/database.php';
$con =database::connect();
$sql = 'SELECT * FROM quizz WHERE fait = "0"';
$req = $con-> prepare( $sql );
$req-> execute( array( 'nomCol1' ) );
$result = $req-> fetchAll( PDO::FETCH_ASSOC );
Database::disconnect();

$i = rand(0, 2);
echo "<br>";
echo "<br>";
			print "L image qu il doit deviner: " . '<img src="../admin/images/'.$result[$i]['nom'].'" alt="chat">' . "\n";
echo "<br>";
echo "<br>";
			print "Ce que doit ecrire l'utilisateur : " . $result[$i]['pinyin'] . "\n";
echo "<br>";
echo "<br>";



// define variables and set to empty values
$name = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $pinyin = test_input($_POST["pinyin"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>


<!DOCTYPE HTML>  
<html>
<head>
</head>
<body>  

<h2>PHP Form Validation Example</h2>
<form method="post">  
 
	<label for="pinyin">Reponse :</label>
	<input type="text" name="pinyin" placeholder="le pinyin correspondant" required="required">
	<span class="help-inline"><?php echo $pinyinError;?></span>

 	<input type="submit" name="submit" value="Submit">
  
</form>

<?php
echo "<h2>Your Input:</h2>";
echo "Ce que l'utilisateur a ecrit: ";
echo $pinyin;
echo "<br>";
echo "<br>";
echo "<h2>Resultat:</h2>";
if(isset($_POST["submit"])){
   if($result[$i]['pinyin'] == $pinyin){
	echo "valide";
   }else{
	echo "pas bon";
   }
}
?>

</body>
</html>
Salut
en fait le probleme est simple et c'est plus un problème algorithmique que de code.

Dans ton cas a chaque chargement de page tu récupère une nouvelle image, mais dans ton cas au chargement tu as 2 possibilités.

1- le formulaire est vide alors la tu récupère une nouvelle image

2- le formulaire est renseigné alors la tu devras faire le traitement et l'insertion en base

il faut ajouter une simple condition avant:

Si $_POST est vide alors je récupère une image
Sinon j'ajoute les valeurs envoyées par le formulaire.
Bonjour du coup j'ai essaye mais rien de concluant je n'arrive pas a faire passer la variable globale $_POST d'une session a l'autre... que ce soit $_POST["tmp"] oui $_POST["i"].

http://www.garcialuc.ovh/ProjetRikiChinoi/etudiant/testQuizz.php


<?php
require '../admin/database.php';
$con =database::connect();

//le 1er chargement
if(empty($_POST["tmp"])){
    $row = 'SELECT COUNT(*) AS nb FROM quizz WHERE fait = "0"';
    $result = $con->query($row);
    $columns = $result->fetch();
    $nb = $columns['nb'];
    $nb = $nb-1;
    $_POST["i"] = rand(0, $nb);
$_POST["tmp"] = 1;
echo "1er if0 tmp =  " .$_POST["tmp"];
echo "<br>";
echo "<br>";
echo "tmp = " .$_POST["i"];
echo "<br>";
echo "<br>";
}

//les cgargelent suivant
if(empty($_POST["pinyin"]) && empty($_POST["valide"]) && !empty($_POST["tmp"])){


    $row = 'SELECT COUNT(*) AS nb FROM quizz WHERE fait = "0"';
    $result = $con->query($row);
    $columns = $result->fetch();
    $nb = $columns['nb'];
    $nb = $nb-1;
    $_POST["i"] = rand(0, $nb);
echo "1er if0 tmp =  " .$_POST["tmp"];
echo "<br>";
echo "<br>";
}

echo "<br>";
echo "<br>";
     
    echo 'Il y a '.$nb.' enregistrement(s).';
 
if($nb == 0){
	$sql = 'UPDATE `quizz` SET `fait`= 0 WHERE 1';
	$req = $con-> prepare( $sql );
	$req-> execute();
}else{

$sql = 'SELECT * FROM quizz WHERE fait = "0"';
$req = $con-> prepare( $sql );
$req-> execute( array( 'nomCol1' ) );
$result = $req-> fetchAll( PDO::FETCH_ASSOC );
Database::disconnect();
}

echo "<br>";
echo "<br>";
echo $i;
echo "<br>";
echo "<br>";
			print "L image qu il doit deviner: " . '<img src="../admin/images/'.$result[$_POST["i"]]['nom'].'">' . "\n";

echo "<br>";
echo "<br>";
			print "Ce que doit ecrire l'utilisateur : " . $result[$_POST["i"]]['pinyin'] . "\n";
echo "<br>";
echo "<br>";
// define variables and set to empty values
$name = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
  $pinyin = test_input($_POST["pinyin"]);
}

function test_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}
?>
<!DOCTYPE HTML>  
<html>
<head>
</head>
<body>  
<h2>PHP Form Validation Example</h2>
<form method="post">  
	<label for="pinyin">Reponse :</label>
	<input type="text" name="pinyin" placeholder="le pinyin correspondant" required="required">
	<span class="help-inline"><?php echo $pinyinError;?></span>
 	<input type="submit" name="submit" value="Submit">
</form>
<?php
echo "<h2>Your Input:</h2>";
echo "Ce que l'utilisateur a ecrit: ";
echo $pinyin;
echo "<br>";
echo "<br>";
echo "<h2>Resultat:</h2>";
if(isset($_POST["submit"])){
   if($result[$_POST["i"]]['pinyin'] == $pinyin){
	$sql = 'UPDATE `quizz` SET `fait`=1 WHERE `pinyin`= ?';
	$req = $con-> prepare( $sql );
	$req-> execute( array( $pinyin ) );
	echo "valide";
	$_POST["valide"] = 1;
	echo $_POST["valide"];
   }else{
	echo "pas bon";
        $_POST["valide"] = "";
   }
}
echo $_POST["tmp"];
?>
</body>
</html>
Si tu veux pas que ta page se recharge après chaque soumission de formulaire (chaque réponse du coup) il faudrait utiliser du js (javascript)