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
Auteur
Réponse acceptée

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