La requete n'affiche pas la premièreligne
Résolu/Fermé
christian820
Messages postés
12
Statut
Membre
-
Souma -
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
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
-
heu!!!!!
Effectivement, je n'avais pas lu jusqu'au bout!
Le script fonctionne bien maintenant.
Merci de ton aide, le père!
Christian -
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 -
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 ... -
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...