Fonction de pagination en php
nannousss
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
CéKoiDonc -
CéKoiDonc -
Bonjour,
je suis débutant en php, j'utilise un script php pour afficher les pas de page. j'ai une requête de recherche pour afficher un tableau d'élément et j'ai fixé la condition 'limit' dans 'where' à 10 mais il ne s'affiche que les 10 premiers élément du tableau et lorsque je clique sur la 2ème page il ne s'affiche rien.
Aidez-moi svp.
Voila le script que j'utilise:
<?php
if(isset($_POST['MotCle']))
{
$Annee = $_REQUEST['ListeAnnee'];
$Mois = $_REQUEST['ListeMois'];
$MotCle = $_REQUEST['MotCle'];
$where = ' 1';
$where .= ($Annee!='')? " AND `annee`=".$Annee:'';
$where .= ($Mois!='')? " AND `mois`='".$Mois."'":'';
$where .= ($MotCle!='')? " AND `objet` LIKE '%".$MotCle."%'":' ';
//conexion avec la base de donnée//
$Connexion = mysql_connect('localhost','root','');
mysql_select_db('BD',$Connexion);
$xt=(isset($_GET['pas']))?$_GET['pas']:0;
$sql = 'SELECT * FROM `tablebod` WHERE'.$where.' limit '.$xt.',10';
$Resulta = mysql_query($sql);
$Nombre = mysql_num_rows($Resulta);
if($Nombre==0)
{
echo "<div align=center><b> Aucun résultat trouvé </b></div>";
}
else{
echo "<table border=1 cellspacing=0 class=style_tab2><tr class=entete_tab><td><b>N° Texte</b></td><td><b>Description</b></td><td><b>Date</b></td><td><b>N° Classement</b></td><td><b>PDF</b></td></tr> ";
while($data = mysql_fetch_array($Resulta))
{
//recherche du fichier PDF
$nom = explode('/',$data['numtext']);
$nomPDF = $nom[1].'_'.$nom[0];
$nomDossier = 'DGD_'.$data['annee'];
// on affiche les informations
echo "<tr style='cursor:pointer;' onmouseover='ListOver(this);' onmouseout='ListOut_1(this);'> <a href=fileadmin/download.php?Fichier_a_telecharger=".$nomPDF.".pdf&chemin=BOD/".$nomDossier."/ />";
echo '<td>'.$data['numtext'].'</td>';
echo '<td>'.$data['objet'].'</td>';
echo '<td>'.$data['datebod'].'</td>';
echo '<td>'.$data['annee'].'</td>';
echo '<td>'.$data['mois'].'</td>';
echo '<td>'.$data['numclassement'].'</td>';
echo '<td><a href=fileadmin/download.php?Fichier_a_telecharger='.$nomPDF.'.pdf&chemin=BOD/'.$nomDossier.'/ /><img src=uploads/acrobat.gif width=16 height=16 border=0 /></a></td></a></tr>';
}
echo "</table>";
function browse_results($Nombre, $pas, $page_actuel) {
$pas=1;
$nbrpages = ceil($Nombre/$pas);
$begin_suiv = $begin_actuel+$pas;
$begin_prec = $begin_actuel-$pas;
$begin_fin = ($pas*($nbrpages-1));
$page_actuel = ceil(($begin_actuel / $pas) + 1);
$liste_pages = '';
$page = $page_actuel+2;
if($page_actuel<=3)
$page_debut = 1;
else
$page_debut = $page_actuel-3;
if($page_actuel>=($nbrpages-3))
$page_fin = $nbrpages;
else
$page_fin = $page_actuel+3;
if(($page_debut>0)&&($page_fin<$nbrpages)||($page_fin==$nbrpages)){
while($page_debut<=$page_fin){
$begin_page = ($page_debut-1)*$pas;
$TheLink = $BasicLink."begin=".$begin_page;
if($page_debut==$page_actuel)
$liste_pages .= ' <b>['.$page_debut.']</b> ';
elseif($page_debut<=$nbrpages)
$liste_pages .= " <a href=\"index.php?id=".$_GET['id']."&pas=".($page_debut-1)."\">[".$page_debut."]</a> ";
$page_debut++;
}
}
$begin = $begin_actuel;
return $liste_pages;
}
echo '<br /><br /><div align="center">'.browse_results($Nombre, $pas, $page_actuel).'</div>';
}}
else{
echo "";
je suis débutant en php, j'utilise un script php pour afficher les pas de page. j'ai une requête de recherche pour afficher un tableau d'élément et j'ai fixé la condition 'limit' dans 'where' à 10 mais il ne s'affiche que les 10 premiers élément du tableau et lorsque je clique sur la 2ème page il ne s'affiche rien.
Aidez-moi svp.
Voila le script que j'utilise:
<?php
if(isset($_POST['MotCle']))
{
$Annee = $_REQUEST['ListeAnnee'];
$Mois = $_REQUEST['ListeMois'];
$MotCle = $_REQUEST['MotCle'];
$where = ' 1';
$where .= ($Annee!='')? " AND `annee`=".$Annee:'';
$where .= ($Mois!='')? " AND `mois`='".$Mois."'":'';
$where .= ($MotCle!='')? " AND `objet` LIKE '%".$MotCle."%'":' ';
//conexion avec la base de donnée//
$Connexion = mysql_connect('localhost','root','');
mysql_select_db('BD',$Connexion);
$xt=(isset($_GET['pas']))?$_GET['pas']:0;
$sql = 'SELECT * FROM `tablebod` WHERE'.$where.' limit '.$xt.',10';
$Resulta = mysql_query($sql);
$Nombre = mysql_num_rows($Resulta);
if($Nombre==0)
{
echo "<div align=center><b> Aucun résultat trouvé </b></div>";
}
else{
echo "<table border=1 cellspacing=0 class=style_tab2><tr class=entete_tab><td><b>N° Texte</b></td><td><b>Description</b></td><td><b>Date</b></td><td><b>N° Classement</b></td><td><b>PDF</b></td></tr> ";
while($data = mysql_fetch_array($Resulta))
{
//recherche du fichier PDF
$nom = explode('/',$data['numtext']);
$nomPDF = $nom[1].'_'.$nom[0];
$nomDossier = 'DGD_'.$data['annee'];
// on affiche les informations
echo "<tr style='cursor:pointer;' onmouseover='ListOver(this);' onmouseout='ListOut_1(this);'> <a href=fileadmin/download.php?Fichier_a_telecharger=".$nomPDF.".pdf&chemin=BOD/".$nomDossier."/ />";
echo '<td>'.$data['numtext'].'</td>';
echo '<td>'.$data['objet'].'</td>';
echo '<td>'.$data['datebod'].'</td>';
echo '<td>'.$data['annee'].'</td>';
echo '<td>'.$data['mois'].'</td>';
echo '<td>'.$data['numclassement'].'</td>';
echo '<td><a href=fileadmin/download.php?Fichier_a_telecharger='.$nomPDF.'.pdf&chemin=BOD/'.$nomDossier.'/ /><img src=uploads/acrobat.gif width=16 height=16 border=0 /></a></td></a></tr>';
}
echo "</table>";
function browse_results($Nombre, $pas, $page_actuel) {
$pas=1;
$nbrpages = ceil($Nombre/$pas);
$begin_suiv = $begin_actuel+$pas;
$begin_prec = $begin_actuel-$pas;
$begin_fin = ($pas*($nbrpages-1));
$page_actuel = ceil(($begin_actuel / $pas) + 1);
$liste_pages = '';
$page = $page_actuel+2;
if($page_actuel<=3)
$page_debut = 1;
else
$page_debut = $page_actuel-3;
if($page_actuel>=($nbrpages-3))
$page_fin = $nbrpages;
else
$page_fin = $page_actuel+3;
if(($page_debut>0)&&($page_fin<$nbrpages)||($page_fin==$nbrpages)){
while($page_debut<=$page_fin){
$begin_page = ($page_debut-1)*$pas;
$TheLink = $BasicLink."begin=".$begin_page;
if($page_debut==$page_actuel)
$liste_pages .= ' <b>['.$page_debut.']</b> ';
elseif($page_debut<=$nbrpages)
$liste_pages .= " <a href=\"index.php?id=".$_GET['id']."&pas=".($page_debut-1)."\">[".$page_debut."]</a> ";
$page_debut++;
}
}
$begin = $begin_actuel;
return $liste_pages;
}
echo '<br /><br /><div align="center">'.browse_results($Nombre, $pas, $page_actuel).'</div>';
}}
else{
echo "";
A voir également:
- Fonction de pagination en php
- Fonction si et - Guide
- Pagination powerpoint - Guide
- Easy php - Télécharger - Divers Web & Internet
- Fonction miroir - Guide
- Fonction moyenne excel - Guide
Remarque 1 :
echo '<br /><br /><div align="center">'.browse_results($Nombre, $pas, $page_actuel).'</div>';
--> $pas ne semble jamais initialisé quand vous le passez en paramètre de la fonction browse_results.
$pas est donc toujours = 0 quand vous appelez votre fonction.
Remarque 2 :
function browse_results($Nombre, $pas, $page_actuel)
{
IF ($pas==0)
{
$pas=1;
}
}
--> Avec les corrections comme demandé pour la division par 0 mais ça ne résout pas le problème de $pas.
Je vais voir plus en détail votre code pour ma part.
A+.
j'ai besoin de votre aide parce que je suis bloqué à ce problème ...
J'ai essayé de me plonger dans ton code mais c'est assez laborieux.
Pour le moment, j'ai adapté tout ton code avec un exemple de squelette de pagination simple qui fonctionne chez moi.
Tu peux regarder ce code et voir si ça te convient - en attendant de bien cerner tes problèmes.
A+.
Avec de légères corrections pour m'adapter à ton code original.
A+.
<?php
$limit=30; // Nbre max d'enregistrements à afficher par page
// 1er appel de cette page avec 'fonction' = '1ER_ACCES' en méthode $_GET
// Paginations suivantes avec 'fonction' = 'BROWSE' en méthode $_POST
if ($_POST['fonction'] == 'BROWSE' or $_GET['fonction'] == '1ER_ACCES')
{
// Si pagination
if ($_POST['fonction'] == 'BROWSE')
{
// recuperation numéro de la page courante
$page = $_GET['page'];
}
// Récuperation des champs stockés en $_REQUEST
$Annee = $_REQUEST['ListeAnnee'];
$Mois = $_REQUEST['ListeMois'];
$MotCle = $_REQUEST['MotCle'];
// Mise en forme de la clause WHERE SQL
$where = ' 1';
$where .= ($Annee!='')? " AND `annee`=".$Annee:'';
$where .= ($Mois!='')? " AND `mois`='".$Mois."'":'';
$where .= ($MotCle!='')? " AND `objet` LIKE '%".$MotCle."%'":' ';
//connexion avec la base de donnée
$Connexion = mysql_connect('localhost','root','');
mysql_select_db('BD',$Connexion);
// Génération requete SQL entière
$requete_tot = 'SELECT * FROM `tablebod` WHERE'.$where;
// Compte le nombre total de champs à afficher pour toute la requete
$ret_total=mysql_query($requete_tot);
$nb_total=mysql_num_rows($ret_total);
// Détermination du 1er enregistrement à paginer
$debut=$page*$limit;
// construction de la requete pours la page en cours (avec restriction LIMIT)
$limit_str = "LIMIT ". $page * $limit .",$limit";
$requete_part_browse=$requete_tot." ".$limit_str;
// Compte le nombre d'enregistrements - page en cours
$result_pos = mysql_query($requete_part_browse);
$nb_enr_page=mysql_num_rows($result_pos);
// Execution de la requete et stockage des enregistrements de la page en cours --> tableau
$k=0;
while ($data = mysql_fetch_array ($result_pos) )
{
$nom[$k] = explode('/',$data['numtext']);
$nom = $nom[k];
$nomPDF[$k] = $nom[1].'_'.$nom[0];
$nomDossier[$k] = 'DGD_'.$data['annee'];
$numtext[$k] = $data['numtext'];
$objet[k] = $data['objet'];
$datebod[k] = $data['datebod'];
$annee[k] = $data['annee'];
$mois[k] = $data['mois'];
$numclassement[k] = data['numclassement'];
$k++;
}
// Si au moins un enregistrement à afficher
if ($nb_total != 0)
{
// Affichage des liens de pagination
echo "<CENTER>";
// Pagination arriere
if ($page>0)
{
$precedent=$page-1;
echo "<FORM NAME=FORM10 ACTION=Cette_Page.php?page=$precedent METHOD=POST>";
echo "<input type=hidden name=fonction value='BROWSE'>";
echo "<INPUT TYPE=SUBMIT VALUE='<< Page Precedente'>";
echo "</FORM>";
}
// Pagination avant
$i=0;
$j=1;
if($nb_total>$limit)
{
while($i<($nb_total/$limit))
{
if($i!=$page)
{
echo "<FORM NAME=FORM11 ACTION=Cette_Page.php?page=$i METHOD=POST>";
echo "<input type=hidden name=fonction value='BROWSE'>";
echo "</FORM>";
}
else
{
echo " <B>$j</B> ";
}
$i++;$j++;
}
}
if($debut+$limit < $nb_total)
{
$suivant=$page+1;
echo "<FORM NAME=FORM12 ACTION=Cette_Page.php?page=$suivant METHOD=POST>";
echo "<input type=hidden name=fonction value='BROWSE'>";
echo "<INPUT TYPE=SUBMIT VALUE='Page Suivante >>'>";
echo "</FORM>";
}
echo '</CENTER>';
// Mise en forme entete du tableau d'affichage
echo "<table border=1 cellspacing=0 class=style_tab2><tr class=entete_tab><td><b>N° Texte</b></td><td><b>Description</b>< /td><td><b>Date</b></td><td><b>N° Classement</b></td><td><b>PDF</b></td></tr> ";
// Parcours du tableau de stockage et affichage des enregistrements stockés
for ($i=0; $i <= $nb_enr_page; $i++)
{
// Affichage enregistrement
echo "<tr style='cursor:pointer;' onmouseover='ListOver(this);' onmouseout='ListOut_1(this);'> <a href=fileadmin/ download.php?Fichier_a_telecharger=".$nomPDF[i]].".pdf&chemin=BOD/".$nomDossier[i]]."/ />";
echo '<td>'.$numtext[i].'</td>';
echo '<td>'.$objet[i].'</td>';
echo '<td>'.$datebod[i].'</td>';
echo '<td>'.$annee[i].'</td>';
echo '<td>'.$mois[i].'</td>';
echo '<td>'.$numclassement[i].'</td>';
echo '<td><a href=fileadmin/download.php?Fichier_a_telecharger='.$nomPDF[i].'.pdf&chemin=BOD/'.$nomDossier[i]].'/ /><img src=uploads/acrobat.gif width=16 height=16 border=0 /></a></td></a></tr>';
}
echo "</table>";
}
// Table MySql vide
else
{
echo "<CENTER><H4><FONT COLOR='RED'> pas de donnees a afficher !! </FONT></H4></CENTER>";
}
}
// Accés incorrect à cette page
else
{
echo '<CENTER><H4><FONT COLOR="RED"> Vous devez reposter vos criteres de recherche</FONT></H4><CENTER>';
echo "<FORM NAME=FORM1 ACTION='Retour_Page_Du_Post.php' METHOD=POST>";
echo '<CENTER><INPUT TYPE=SUBMIT VALUE="Retour"></CENTER>';
echo '</FORM>';
}
?>