Problème avec pagination en PHP
ib02
Messages postés
246
Date d'inscription
Statut
Membre
Dernière intervention
-
ib02 Messages postés 246 Date d'inscription Statut Membre Dernière intervention -
ib02 Messages postés 246 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Je voudrais qu'on m'indique ce qui ne va pas dans le code ci-dessus. Il est censé m'afficher le resultat d'une recherche effectuée dans ma base sur plusieurs pages, avec un lien entre elles (pagination du resultat de la recherche). Quand je fais une recherche, la première page s'affiche normalement, mais quand je clique sur le lien des pages suivantes, il y a une erreur;
<?php
$messagesParPage=3;
$prenom=$_POST['prenom_recherche'];
$nom=$_POST['nom_recherche'];
mysql_connect("localhost","test","test");
mysql_select_db("notice");
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM commun');
$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1;
}
$premiereEntree=($pageActuelle-1)*$messagesParPage;
$retour_messages="SELECT * FROM `commun` WHERE prenom ='$prenom' AND nom = '$nom' ORDER BY numero_enregistrement LIMIT 0,3.";
$resultat=mysql_query($retour_messages) or die( 'Erreur sql:<br>' .$resultat .mysql_error());
?>
......................
...................
<?php
$a=mysql_num_rows($resultat);
if($a==0){ echo "Ce nom n'exite pas dans notre base";}
?>
......................
<?php
while ($ligne=mysql_fetch_array($resultat))
{
$prenom=$ligne['prenom'];
$nom=$ligne['nom'];
$date_naissance=$ligne['date_naissance'];
$nationalite=$ligne['nationalite'];
$numero_enregistrement=$ligne['numero_enregistrement'];
?>
<tr>
<td><?php echo $prenom; ?></td>
<td><?php echo $nom; ?></td>
<td><?php echo $date_naissance; ?></td>
<td><?php echo $nationalite; ?></td>
<td><?php echo $numero_enregistrement; ?></td>
<?php }?>
.....................
......................
<?php
echo 'Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pageActuelle)
{
echo $i ;
}
else
{
echo ' <a href="recherche_notice.php?='.$i.'">'.$i.'</a> ';
}
}
?>
.............
.......................
L'erreur qui s'affiche lorsque je clique sur le lien d'une page est : Undefined index: prenom_recherche in ......, et de même pour nom_recherche. Je ne sais pas en réalité comment m'en sortir; je veux que les resultats de ma recherche s'affichent sur des pages (2,3,4,..) en fonction de leur importance.
Je voudrais qu'on m'indique ce qui ne va pas dans le code ci-dessus. Il est censé m'afficher le resultat d'une recherche effectuée dans ma base sur plusieurs pages, avec un lien entre elles (pagination du resultat de la recherche). Quand je fais une recherche, la première page s'affiche normalement, mais quand je clique sur le lien des pages suivantes, il y a une erreur;
<?php
$messagesParPage=3;
$prenom=$_POST['prenom_recherche'];
$nom=$_POST['nom_recherche'];
mysql_connect("localhost","test","test");
mysql_select_db("notice");
$retour_total=mysql_query('SELECT COUNT(*) AS total FROM commun');
$donnees_total=mysql_fetch_assoc($retour_total);
$total=$donnees_total['total'];
$nombreDePages=ceil($total/$messagesParPage);
if(isset($_GET['page']))
{
$pageActuelle=intval($_GET['page']);
if($pageActuelle>$nombreDePages)
{
$pageActuelle=$nombreDePages;
}
}
else
{
$pageActuelle=1;
}
$premiereEntree=($pageActuelle-1)*$messagesParPage;
$retour_messages="SELECT * FROM `commun` WHERE prenom ='$prenom' AND nom = '$nom' ORDER BY numero_enregistrement LIMIT 0,3.";
$resultat=mysql_query($retour_messages) or die( 'Erreur sql:<br>' .$resultat .mysql_error());
?>
......................
...................
<?php
$a=mysql_num_rows($resultat);
if($a==0){ echo "Ce nom n'exite pas dans notre base";}
?>
......................
<?php
while ($ligne=mysql_fetch_array($resultat))
{
$prenom=$ligne['prenom'];
$nom=$ligne['nom'];
$date_naissance=$ligne['date_naissance'];
$nationalite=$ligne['nationalite'];
$numero_enregistrement=$ligne['numero_enregistrement'];
?>
<tr>
<td><?php echo $prenom; ?></td>
<td><?php echo $nom; ?></td>
<td><?php echo $date_naissance; ?></td>
<td><?php echo $nationalite; ?></td>
<td><?php echo $numero_enregistrement; ?></td>
<?php }?>
.....................
......................
<?php
echo 'Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pageActuelle)
{
echo $i ;
}
else
{
echo ' <a href="recherche_notice.php?='.$i.'">'.$i.'</a> ';
}
}
?>
.............
.......................
L'erreur qui s'affiche lorsque je clique sur le lien d'une page est : Undefined index: prenom_recherche in ......, et de même pour nom_recherche. Je ne sais pas en réalité comment m'en sortir; je veux que les resultats de ma recherche s'affichent sur des pages (2,3,4,..) en fonction de leur importance.
A voir également:
- Problème avec pagination en PHP
- Pagination powerpoint - Guide
- Easy php - Télécharger - Divers Web & Internet
- Sommaire avec pagination - Guide
- Expert php pinterest - Télécharger - Langages
- Le fichier de pagination est insuffisant pour terminer cette opération ✓ - Forum Matériel & Système
6 réponses
Au début de ta page: tu initialises tes variable avec des valeurs transmises par POST
Mais si tu clique sur ton lien ci-dessous, les valeurs de POST ne seront pas retransmises...
Vu que ta page sera rechargée, et qu'elle ne reçoit rien par POST, tes variables ne sont pas initialisées et mysql_query recherche:
D'où un résultat vide pour ta requète.
$prenom=$_POST['prenom_recherche']; $nom=$_POST['nom_recherche'];
Mais si tu clique sur ton lien ci-dessous, les valeurs de POST ne seront pas retransmises...
<?php
echo 'Page : ';
for($i=1; $i<=$nombreDePages; $i++)
{
if($i==$pageActuelle)
{
echo $i ;
}
else
{
echo ' <a href="recherche_notice.php?='.$i.'">'.$i.'</a> ';
}
}
Vu que ta page sera rechargée, et qu'elle ne reçoit rien par POST, tes variables ne sont pas initialisées et mysql_query recherche:
$retour_messages="SELECT * FROM `commun` WHERE prenom = RIEN AND nom = RIEN ORDER BY numero_enregistrement LIMIT 0,3.";
D'où un résultat vide pour ta requète.
Une recherche s'effectue toujours en method GET, pas en POST.
En GET, tu n'aurais plus ce problème.
Et bon sang, sécurise ton script.
En GET, tu n'aurais plus ce problème.
Et bon sang, sécurise ton script.
Au fait, je viens de mettre Get à la place de POST au niveau du formulaire et au niveau du script PHP comme suit
$prenom=$_GET['prenom_recherche'];
$nom=$_GET['nom_recherche'];
Mais le problème persiste; toujours mes champs ('prenom_recherche' et 'nom_recherche') ne sont pas reconnus sur les autres pages, si je clique sur leurs liens.
$prenom=$_GET['prenom_recherche'];
$nom=$_GET['nom_recherche'];
Mais le problème persiste; toujours mes champs ('prenom_recherche' et 'nom_recherche') ne sont pas reconnus sur les autres pages, si je clique sur leurs liens.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question