[PDO] Mon premier enregistrement est "sauté"

Résolu
Pinguguss Messages postés 59 Statut Membre -  
Pinguguss Messages postés 59 Statut Membre -
Bonjour,

Je me permets de poster ici sur un problème vraiment bizarre auquel j'ai affaire :
Je code en PHP (+ PDO) un tableau affichant les dix derniers éditos mis en ligne.



Ceci est la table edito. En temps normal, PDO devrait afficher les enregistrements de "C'est quoi ce binz ???" à "Cadavre exquis 11".
Or, j'obtiens ceci:


L'édito avec l'id 18 ("C'est quoi ce binz ???") a été tout simplement zappé, pour une raison inconnue. Ni erreur ni warning.

Mon code SQL est le suivant:
SELECT * 
FROM brisset.edito 
ORDER BY date DESC 
LIMIT 0,10

Il est sensé afficher les 10 éditos les plus récents, comme sur la seconde image.
Mais PHP a zappé le premier enregistrement, ce qui explique le fait qu'il n'y en ait que 9.

Que se passe-t-il ?

Cordialement,
Pinguguss, le Pingouin Manchot de l'Antarctique !


EDIT : Ajout du LANGAGE dans les balises de code (la coloration syntaxique).
Explications disponibles ici : ICI

Merci d'y penser dans tes prochains messages.

3 réponses

  1. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Peux tu essayer ceci :
    $gestionEdito = "SELECT * FROM brisset.edito ORDER BY date DESC LIMIT 0,10";
    // Pour afficher les éditos 10 par 10
    
    try{
      $rqGestionEdito = $dbh->query($gestionEdito);
      $result = $rqGestionEdito->fetchAll();
     }
      catch(Exception $e) {
       echo "Error <br>".$e->getMessage()."<br>";
    }
     
    echo "<table id='gestionedito'>";
    echo "<theader>Editos actuellement disponibles (du plus récent au plus ancien)</theader>";
    echo "<thead>
          <tr>";
    echo " <th>Id</th>
           <th>Titre</th>
        <th>Date</th>
        <th>Gestion</th>";
    echo "</tr>
          </thead>";
    echo "<tbody>";
    foreach ($result  as $row){
     echo "<tr>";
       echo "<td>".$row["id"]."</td>";
       echo "<td>".$row["titre"]."</td>";
       echo "<td>".$row["date"]."</td>";
        echo "<td>
             <p><a href=editogerer.php?id=$row[id]>Modifier l'édito</a></p>
              <p><a href=editoeffacer.php?id=$row[id]>Effacer l'édito</a></p>
          </td>";
     echo "</tr>";
    }
    echo "</tbody>";
    echo "</table>";
    
    


    Cordialement, 
    Jordane                                                                 
    1
    1. Pinguguss Messages postés 59 Statut Membre 1
       
      Nickel ! Merci ça fonctionne ! Pour info, quel était le problème ?
      0
  2. Pinguguss Messages postés 59 Statut Membre 1
     
    La requête telle quelle fonctionne sans problème dans MySQL.

    Mon code PHP: ($dbh existe, il sert à la connexion au PDO, et fonctionne sans problème)
    $gestionEdito = "SELECT * FROM brisset.edito ORDER BY date DESC LIMIT 0,10";
    // Pour afficher les éditos 10 par 10
    
    $rqGestionEdito = $dbh->query($gestionEdito);
    $rqGestionEdito->fetch(PDO::FETCH_ASSOC);
    echo "<table id='gestionedito'>";
    echo "<theader>Editos actuellement disponibles (du plus récent au plus ancien)</theader>";
    echo "<th>Id</th><th>Titre</th><th>Date</th><th>Gestion</th>";
    foreach ($rqGestionEdito as $row) {
    	echo "<tr>";
    	echo "<td>".$row["id"]."</td>";
    	echo "<td>".$row["titre"]."</td>";
    	echo "<td>".$row["date"]."</td>";
    	echo "<td>";
    	echo "<p><a href=editogerer.php?id=$row[id]>Modifier l'édito</a></p>";
    	echo "<p><a href=editoeffacer.php?id=$row[id]>Effacer l'édito</a></p>";
    	echo "</td>";
    	echo "</tr>";
    }
    echo "</table>";
    


    J'avais pourtant défini SQL comme langage en postant le morceau de code, mais on m'avait proposé le mot-clé SQL en-dessous. C'est en le mettant que ça a fait sauter le morceau de code.
    0
  3. jordane45 Messages postés 30427 Date d'inscription   Statut Modérateur Dernière intervention   4 831
     
    Bonjour,

    Si tu testes la requête DIRECTEMENT dans ta BDD ... qu'obtiens tu ?
    La même chose... ou bien la ligne apparait correctement ?

    Si elle apparait correctement dans ton test (directement dans la BDD donc... ) le souci se trouve peut être au niveau de ton code PHP ...
    Quel est-il ?

    PS: Merci d'indiquer le LANGAGE dans les balises de code

    -1