La requete n'affiche pas la premièreligne

Résolu/Fermé
christian820 Messages postés 12 Date d'inscription lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 - 13 août 2012 à 09:58
 Souma - 17 déc. 2015 à 11:01
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 lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
13 août 2012 à 18:52
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 994 Date d'inscription lundi 23 juillet 2012 Statut Membre Dernière intervention 28 mai 2019 189
Modifié par tuxboy le 13/08/2012 à 10:13
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 lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
13 août 2012 à 12:11
Bonjour tuxboy,
Merci de ta réponse rapide.
Je consulte et j'essaie!
A plus
Christian
0
Utilisateur anonyme
13 août 2012 à 10:43
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 lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
13 août 2012 à 12:10
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
13 août 2012 à 13:31
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
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 lundi 13 août 2012 Statut Membre Dernière intervention 15 novembre 2015 1
13 août 2012 à 14:42
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
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