Bonjour à tous,
Voila je rencontre un petit problème avec mon code.
Ce code est lancé lorsqu'un utilisateur clique sur un bouton. Cela permet d'afficher des phrases aléatoirement mais de ne pas revoir les mêmes car elles sont stockés dans le tableau de la variable $_SESSION.
<?php
include 'connexionBDD.php';
session_start();
$commentNewCount = $_POST['commentNewCount'];
$sql = "SELECT * FROM sentencesen WHERE type = 'Fun' ORDER BY rand() LIMIT 1";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
while ($row = mysqli_fetch_assoc($result)) { //while 1
$id = $row['id'];
if(in_array($id, $_SESSION['stockID'])){ //Vérifie si la valeur de $id est dans la session
echo "AGAIN"; //Ajouter un bout de code qui permet de recommencer le if.
} else {
echo "<h2>".$row['type']."</h2>";
echo "<br>";
echo "<h3>".$row['phrases']."<h3>";
array_push($_SESSION['stockID'], $id);
}
}
} else {
echo "There is a problem, could you refresh the page ?";
}
?>
J'aimerais juste que la boucle if cherche une autre phrase, qui n'est jamais apparu à l'écran jusqu'a que toutes les phrases soit apparu.
Rien ne s'affiche si il trouve une phrase.
Le problème venait du LIMIT 1 dans le code sql
Voici le bon code.
<?php
session_start();
try {
$bdd = new PDO('mysql:host=localhost;dbname=lolo;charset=utf8','root','root',
array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)) ;
}
catch(PDOException $e) {
$erreur = 'Database error 001' ;
}
$commentNewCount = $_POST['commentNewCount'];
$sql = "SELECT * FROM sentencesen WHERE type = 'Fun' ORDER BY rand()";
try {
$req = $bdd->prepare($sql);
$req->execute();
$datas = $req->fetchAll(PDO::FETCH_ASSOC);
foreach ($datas as $req) {
$id = $req['id'];
if(in_array($id, $_SESSION['stockID'])){ //Vérifie si la valeur de $id est dans la session
echo "Vous avez "//Ajouter un bout de code qui permet de recommencer la boucle.
} else {
echo "<h2>".$req['type']."</h2>";
echo "<br>";
echo "<h3>".$req['phrases']."</h3>";
array_push($_SESSION['stockID'], $id);
break;
}
}
}
catch(PDOException $e) {
$erreur = 'SQL error 003' ;
}