Probleme avec php dans la creation et gestion de tableau

enfant_meme - 20 sept. 2023 à 18:14
jordane45 Messages postés 38177 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 mai 2024 - 20 sept. 2023 à 18:24

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 38177 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 15 mai 2024 4 667
20 sept. 2023 à 18:24

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