aide svp pagination
Posté : 03 mars 2012, 21:38
je recherche mon erreur je la voix pas seriez vous m'aidez svp?
<?php
include("cssstyle/haut.php");
include("sources/config.php");
// montage du critère
$where = array();
// j'ai considéré que tous ces champs étaient des varchar dans ta base de données
if (isset($_POST['typeb']) && strlen($_POST['typeb'])) {
$where[] = "typeb = '".mysql_real_escape_string($_POST['typeb'])."'";
}
if (isset($_POST['pays']) && strlen($_POST['pays'])) {
$where[] = "pays = '".mysql_real_escape_string($_POST['pays'])."'";
}
if (isset($_POST['province']) && strlen($_POST['province'])) {
$where[] = "province = '".mysql_real_escape_string($_POST['province'])."'";
}
if (isset($_POST['ville']) && strlen($_POST['ville'])) {
$where[] = "ville = '".mysql_real_escape_string($_POST['ville'])."'";
}
if (isset($_POST['vendeur']) && strlen($_POST['vendeur'])) {
$where[] = "vendeur = '".mysql_real_escape_string($_POST['vendeur'])."'";
}
// uniquement les entiers sont acceptés pour les prix
if (isset($_POST['prix']) && isset($_POST['prix1'])
&& ctype_digit($_POST['prix']) && ctype_digit($_POST['prix1']))
{
$where[] = 'prixb BETWEEN '.$_POST['prix'].' AND '.$_POST['prix1'];
}
$targetpage = "search-val.php";
$sql_where = (empty($where)) ? null : 'WHERE '.implode(' AND ', $where);
// on compte le nombre total d'enregistrements renvoyés par la requête filtrée
$sql = 'SELECT COUNT(*) AS nbOfRec FROM annonce '.$sql_where;
$qry = mysql_query($sql) or die(mysql_errno().' :: '.mysql_error());
$nb_records = mysql_result($qry, 0, 0);
// on vérifie si la page demandée est dans les limites fixées par la pagination
$nb_items_per_page = 10;
$nb_pages = ceil($nb_records / $nb_items_per_page);
$asked_page = (isset($_GET['page']) && ctype_digit($_GET['page']) && ($_GET['page']))
? (int) $_GET['page']
: 1;
if ($asked_page > $nb_pages) {
// si la page demandée est supérieure au nombre total de pages alors
// page demandée = dernière page
$asked_page = $nb_pages;
}
// on détermine la clause LIMIT du sql à partir des données de pagination
$offset = ($asked_page - 1) * $nb_items_per_page;
$length = $nb_items_per_page;
$sql_limit = "LIMIT $offset, $length";
// on extrait les données à afficher
$sql = "SELECT * FROM annonce $sql_where $sql_limit";
$data = mysql_query($sql) or die(mysql_error());
$paginate = '';
if($length > 1)
{
$paginate .= "<div class='paginate'>";
// Previous
if ($page > 1){
$paginate.= "<a href='$targetpage?page=$prev'>previous</a>";
}else{
$paginate.= "<span class='disabled'>previous</span>"; }
// Pages
if ($length < 7 + ($stages * 2)) // Not enough pages to breaking it up
{
for ($counter = 1; $counter <= $length; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
elseif($length > 5 + ($stages * 2)) // Enough pages to hide a few?
{
// Beginning only hide later pages
if($page < 1 + ($stages * 2))
{
for ($counter = 1; $counter < 4 + ($stages * 2); $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$offset'>$offset</a>";
$paginate.= "<a href='$targetpage?page=$length'>$length </a>";
}
// Middle hide some front and some back
elseif($sql_limit - ($stages * 2) > $page && $page > ($stages * 2))
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $page - $stages; $counter <= $page + $stages; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
$paginate.= "...";
$paginate.= "<a href='$targetpage?page=$offset'>$offset</a>";
$paginate.= "<a href='$targetpage?page=$length'>$length </a>";
}
// End only hide early pages
else
{
$paginate.= "<a href='$targetpage?page=1'>1</a>";
$paginate.= "<a href='$targetpage?page=2'>2</a>";
$paginate.= "...";
for ($counter = $length - (2 + ($stages * 2)); $counter <= $length ; $counter++)
{
if ($counter == $page){
$paginate.= "<span class='current'>$counter</span>";
}else{
$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}
}
}
}
// Next
if ($page < $counter - 1){
$paginate.= "<a href='$targetpage?page=$next'>next</a>";
}else{
$paginate.= "<span class='disabled'>next</span>";
}
$paginate.= "</div>";
}
// ici : il faut générer tes lien vers les pages
// nombre de pages à afficher,
// centrage de la page courante entre des limites
// affichage des liens si nécessaire Premier Précédent num_pages Suivant Dernier
echo'<table width="100%" bgcolor="#0099FF" class="messagerie" border="0">
<tr>
<td width="10%"><b>N°</b></td>
<td width="20%"><b>Pays</b></td>
<td width="15%"><b>Région</b></td>
<td width="20%"><b>Commune</b></td>
<td width="15%"><b>Type de vente</b></td>
<td width="15%"><b>Prix</b></td>
<td width="5%"><b>Voir</b></td>
</tr></table>';
while($plus = mysql_fetch_assoc($data))
{
$ligne = $data["idA"];
//Affichage l'aannonce
echo'<table width="100%" bgcolor=" '. (($ligne++ % 2)?"#C0F3AB":"#ABEF8D") .'">
<tr>
<td width="10%">'.$plus["ref"].'</td>
<td width="20%">'.$plus["pays"].'</td>
<td width="15%">'.$plus["province"].'</td>
<td width="20%">'.$plus["ville"].'</td>
<td width="15%">'.$plus["vendeur"].'</td>
<td width="15%"><font color="#FF0000"><b>'.$plus["prixb"].'</b></font></td>
<td width="5%"><a href="detail_anno.php?detail='.$plus["idA"].'"><img src="cssstyle/imdesign/oeil.png" width="30" height="30" border="0" /></a></td>
</tr></table>';
}
echo $paginate;
include("cssstyle/bas.php");
// ici viennent tes données dans ton tableau...
?>