Recommencer une boucle if en PHP

Par Jean Poutre, il y a 8 ans


Bonjour à tous,

Voila je rencontre un petit problème avec mon code.

Ce que je fais

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 ?"; } ?>

Ce que je veux

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.

Ce que j'obtiens

Rien ne s'affiche si il trouve une phrase.

1 réponse

Jean Poutre, il y a 8 ans

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' ; }