Page 1 sur 1

aide svp pagination

Posté : 03 mars 2012, 21:38
par pacphil
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&deg;</b></td>
    <td width="20%"><b>Pays</b></td>
    <td width="15%"><b>R&eacute;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...
?>

Re: aide svp pagination

Posté : 03 mars 2012, 23:54
par moogli
Et c'est quoi le problème ?

Re: aide svp pagination

Posté : 04 mars 2012, 10:27
par pacphil
j'ai un soucis avec les donnée de pagination je suis maillé les pinceaux

Re: aide svp pagination

Posté : 04 mars 2012, 11:19
par xTG
j'ai un soucis avec les donnée de pagination je suis maillé les pinceaux
Mais encore ? Car excuses nous de ne pouvoir lire et trouver rapidement une erreur dans autant de code. :P
Au passage jolie l'expression.

Re: aide svp pagination

Posté : 04 mars 2012, 21:42
par pacphil
bonjour , voilà en faite j'essaie de paginer suivant ma recherche page par page, la pagination c'est ok cela fonctionne super? , le soucis c'est quand tu passe de la premier page à la seconde je paire les données de la demande de recherche??? une idée la dessus 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'];
}
$target_page = "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());
 
// PAGINATION //
// je suppose que ton index affiche 10 pages
$index_range = 10;
 
// détermination des bornes à afficher
if ($nb_pages <= $index_range) {
   $index_start = 1;
   $index_end = $nb_pages;
}
else
if ($asked_page === 1) {
   $index_start = 1;
   $index_end = $index_range;
}
else {
   $index_start = $asked_page;
   $index_end   = (($index_start + $index_range) > $nb_pages) ? $nb_pages : ($index_start + $index_range);
}
 
// affichage des liens spéciaux : Premier Précedent Suivant Dernier
$show_first = ($index_start > 1);
$show_prev  = ($asked_page > 1);
$show_next  = ($asked_page < $nb_pages);
$show_last  = ($index_end < $nb_pages);
 
// génération des la pagination
$paginate = array();
$paginate[] = '<div class="paginate">';
 
// lien Premier
if ($show_first) {
   $paginate[] = '<a href="'.$target_page.'?page=1">First</a>';
}
 
// lien Précédent
if ($show_prev) {
   $paginate[] = '<a href="'.$target_page.'?page='.($asked_page - 1).'">Previous</a>';
}
 
// affichage des numéros des pages
for ($i = $index_start; $i <= $index_end; ++$i) {
   $paginate[] = ($i === $asked_page)
                    ? '<span class="current">'.$i.'</span>'
                    : '<a href="'.$target_page.'?page='.$i.'">'.$i.'</a>';
}
 
// lien Suivant
if ($show_next) {
   $paginate[] = '<a href="'.$target_page.'?page='.($asked_page + 1).'">Next</a>';
}
 
// lien Dernier
if ($show_last) {
   $paginate[] = '<a href="'.$target_page.'?page='.$index_end.'">Last</a>';
}
 
$paginate[] = '</div>';
 
echo'<table width="100%" bgcolor="#0099FF" class="messagerie" border="0">
  <tr>
    <td width="10%"><b>N&deg;</b></td>
    <td width="20%"><b>Pays</b></td>
    <td width="15%"><b>R&eacute;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 implode(null, $paginate);
include("cssstyle/bas.php");

Re: aide svp pagination

Posté : 05 mars 2012, 02:21
par AB
Pour voir les données transmises dans l'url tu peux mettre temporairement en haut de ta page :
echo '<pre>';
print_r($_GET);
echo '</pre>';
cela te permettra de vérifier si toutes les variables nécessaires à la pagination sont présentes.