La requete n'affiche pas la premièreligne

Résolu/Fermé
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   -  
 Souma -
Bonjour,

Je trtavaille sur un projet de base généalogique à mettre en ligne avec php et mysql.

J'ai une requête qui sélectionne les entrées de ma table sur le nom de l'individu, qui fonctionne apparemment, sauf qu'à l'affichage, il manque la première ligne. je bataille là-dessus depuis hier!

Quelqu'un pourrait-il m'aider?

Voici mon code:

<?php
htmlspecialchars($_POST['saisieNom']);
$_GET=$_POST;

try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=chrisvia', 'root', '', $pdo_options);
}

catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}

$req = $bdd->prepare('SELECT * FROM actes WHERE nom = :nom');
$req->execute(array('nom' => $_GET['saisieNom'])) or die(print_r($req->errorInfo()));

?>


<table style="width:100%";>
<tr>
<th width="10px">Acte</th>
<th width="50px">Date</th>
<th width="20px">Nom</th>
<th width="25px">Prénoms</th>
<th width="25px">Commune</th>
<th width="25px">CP
<th width="20px">Pays</th>
<th width="20px">Nom du père</th>
<th width="25px">Prénoms du père</th>
<th width="20px">Nom de la mère</th>
<th width="20px">Prénom de la mère</th>
<th width="20px">Nom du Conjoint</th>
<th width="20px">Prénom du conjoint</th>
<th width="20px">Télécharger</th>
</tr>


<?php
$count = $req->FETCH();

if ($count > "0")
{
while ($row = $req->FETCH())
{
echo '<tr>';
echo '<td>' .$row['typeActe']; '</td>';
echo '<td>' .$row['dateActe']; '</td>';
echo '<td>' .$row['nom']; '</td>';
echo '<td>' .$row['prenom']; '</td>';
echo '<td>' .$row['commune']; '</td>';
echo '<td>' .$row['CP']; '</td>';
echo '<td>' .$row['pays']; '</td>';
echo '<td>' .$row['nomPere']; '</td>';
echo '<td>' .$row['prenomPere']; '</td>';
echo '<td>' .$row['nomMere']; '</td>';
echo '<td>' .$row['prenomMere']; '</td>';
echo '<td>' .$row['nomConjoint']; '</td>';
echo '<td>' .$row['prenomConjoint']; '</td>';
echo '<td>' .$row['photoActe']; '</td>';
echo '</tr>';
}
}
else
{
echo '<p><strong style="font-family:verdana; font-size: 1em; color: red">Le patronyme recherché ne figure
pas dans les listes déposées par nos adhérents.<br />
Dans le cas où il contient une lettre accentuée, essayez avec et sans accent.</strong></p>';
}

$req->closeCursor();
?>

</table>


Merci de votre aide

Christian

4 réponses

christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
heu!!!!!
Effectivement, je n'avais pas lu jusqu'au bout!
Le script fonctionne bien maintenant.

Merci de ton aide, le père!

Christian
1
tuxboy Messages postés 995 Date d'inscription   Statut Membre Dernière intervention   190
 
Je pense que ton problème vient de :
if ($count > "0") 


et regarde ici :
https://www.php.net/manual/fr/function.mysql-fetch-object.php
pour modifier ta boucle
0
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour tuxboy,
Merci de ta réponse rapide.
Je consulte et j'essaie!
A plus
Christian
0
Utilisateur anonyme
 
Bonjour

Quand tu fais $count = $req->FETCH(); tu lis la première ligne, mais tu ne l'affiche pas. De plus, le résultat obtenu n'est pas un nombre, donc tu ne peux pas faire if ($count > "0")
<?php 
$row = $req->FETCH();  // essaye de lire la 1ère ligne de résultat

if ($row)  // teste s'il y a au moins une réponse 
{ 
  while ($row) 
  { 
    echo '<tr>'; 
    echo '<td>' .$row['typeActe']; '</td>'; 
...
    echo '<td>' .$row['prenomConjoint']; '</td>'; 
    echo '<td>' .$row['photoActe']; '</td>'; 
    echo '</tr>'; 
    $row = $req->FETCH(); // lit la ligne suivante
  } 
} 
else ...
0
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
Bonjour Le père,

Merci de ta réponse rapide.

J'ai essayé ton code, mais le serveur plante (j'utilise wampserver pour windows).
Problème?
Christian
0
Utilisateur anonyme
 
Je ne vois pas de raison pour qu'il se plante. Je relis ce que j'ai écrit et ça m'a l'air correct.
Qu'entends-tu par le serveur plante ? Quel message d'erreur vois-tu ?
0
Souma
 
Merci le père, ta solution m'a permis d'afficher les lignes suivantes qui sont toujours manquantes!
Merci!!
0
christian820 Messages postés 12 Date d'inscription   Statut Membre Dernière intervention   1
 
En fait, ce n'est pas le serveur :-((

La page mouline .... et finit par afficher un grand nombre de première ligne. Uniquement la première ligne...
0
Utilisateur anonyme
 
Tu as bien lu TOUT ce que j'ai écrit ? Même le
    $row = $req->FETCH(); // lit la ligne suivante

avant la fin du while() ?
Si tu ne lis jamais la suite, tu restes sur la première ligne et il n'y a pas de fin ...
0