Probleme avec php dans la creation et gestion de tableau

enfant_meme -  
jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   -

Bonjour,

j'utilise le code 

$livres = array();
$livresAjoutes = array(); // Tableau auxiliaire pour suivre les titres déjà ajoutés

while ($row = $result->fetch_assoc()) {
    $titre = $row['titre'];

    // Vérifier si le livre existe en double
    $doubleStmt = $conn->prepare("SELECT * FROM livres WHERE titre = ?");
    $doubleStmt->bind_param("s", $titre);
    $doubleStmt->execute();
    $doubleResult = $doubleStmt->get_result();

    // Vérifier s'il y a plusieurs exemplaires du livre
    if ($doubleResult->num_rows >= 1) {
        // Récupérer les informations du premier exemplaire
        $firstRow = $doubleResult->fetch_assoc();
        $id = $firstRow['id'];
        $auteur = $firstRow['auteur'];
        $annee_publication = $firstRow['annee_publication'];

        // Récupérer tous les commentaires pour les exemplaires en double
        $commentaires = array();
        do {
            $commentaires[] = $firstRow['description_avis'];
        } while ($firstRow = $doubleResult->fetch_assoc());

        // Vérifier si le titre du livre a déjà été ajouté
        if (!in_array($titre, $livresAjoutes)) {
            // Ajouter le livre au tableau des livres avec les commentaires
            $livres[$titre] = array(
                'id' => $id,
                'auteur' => $auteur,
                'annee_publication' => $annee_publication,
                'commentaires' => $commentaires
            );
            $livresAjoutes[] = $titre; // Ajouter le titre à la liste des titres ajoutés
        }
    } else {
        // Vérifier si le titre du livre a déjà été ajouté
        if (!in_array($titre, $livresAjoutes)) {
            // Le livre n'est pas en double, ajouter simplement les informations au tableau des livres
            $livres[$titre] = array(
                'id' => $row['id'],
                'auteur' => $row['auteur'],
                'annee_publication' => $row['annee_publication'],
                'commentaires' => array($row['description_avis'])
            );
            $livresAjoutes[] = $titre; // Ajouter le titre à la liste des titres ajoutés
        }
    }
}


    // Afficher les résultats de la recherche
    if (!empty($livres)) {
      echo "<h2>Résultats de la recherche :</h2>";
      echo "<table>";
      echo "<tr><th>Titre</th><th>Auteur</th><th>Année de publication</th><th>Description/Avis</th><th>Détails</th></tr>";

      foreach ($livres as $titre => $livre) {
        echo "<tr>";
        echo "<td>" . $titre . "</td>";
        echo "<td>" . $livre['auteur'] . "</td>";
        echo "<td>" . $livre['annee_publication'] . "</td>";
        echo "<td> <ul>";

        // Afficher les commentaires
        foreach ($livre['commentaires'] as $commentaire) {
          echo "<li>".$commentaire . "</li>";
        }

        echo "</ul></td>";
        echo "<td><a href='/detail/" . $livre['id'] . "'>Voir plus</a></td>";
        echo "</tr>";
      }

      echo "</table>";
    } else {
      echo "Aucun résultat trouvé.";
    }

    // Fermer la connexion à la base de données
    $conn->close();
  }

pour mon site https://livrelu.000webhostapp.com/recherche mais il genere l'erreur suivant si le livre est present 3 fois ou plus dans la base de donné : 

comment l'eviter?
Windows / Chrome 116.0.0.0

A voir également:

1 réponse

jordane45 Messages postés 38486 Date d'inscription   Statut Modérateur Dernière intervention   4 752
 

Bonjour,

Quelle erreur ? Je n'en vois pas sur ta capture écran ni sur le lien que tu donnes...

Si c'est l'affichage de "plusieurs" fois le titre dans le tableau... il faudrait qu'on voit le début du code ...

A noter que, tu pourrais déjà t'assurer que ta requête SQL retourne le résultat souhaité ... ( et pour éviter les "doublons", tu peux utiliser du GROUP BY )


0