pagination moteur recherche

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : pagination moteur recherche

Re: pagination moteur recherche

par Mazarini » 05 mars 2012, 13:01

Cela provient surement du fait que tu ne conserve pas les critères de recherche entre 2 lectures de ta base.

Le plus simple est de mettre les paramètres de recherche dans des variables de session pour les réutiliser ou tout simplement le code sql de recherche sans la partie LIMIT qui permet la pagination.

Il faut organiser ton code par bloc de traitement.

Si lancement d'une recherche (bouton rechercher ?)
sauvegarde des critères de recherche
Fin si
Recupération des critères de recherche
Affichage de la page demandé

pagination moteur recherche

par pacphil » 02 mars 2012, 21:53

Bonsoir j'ai réalisé avec l'aide d'un ami un moteur de recherche sur plusieurs champs de recherche , le soucis que j'ai que je reste dans la paginations sur les page avant ou précédente dans ma recherche et pas sur une autre suivant les champs que j'ai choisi ?

Et j'ai un problème sur la recherche de ma fourchette de prix entre prix et prix1 une idée aussi
<?php
include("cssstyle/haut.php");
include("sources/config.php");
?>
<br />
<div id="messamain">
<div id="messamenu">
<div id="menu11">
<img src="cssstyle/imdesign/pub1.png" width="150" height="150" border="0" /><br/><br/>
<img src="cssstyle/imdesign/pub1.png" width="150" height="150" border="0" />
</div></div>
<div id="conmessa">
<br />
<table width="600" border="0" align="center">
  <tr>
    <td>
      <table width="100%" border="0">
        <tr>
          <td bgcolor="#0099CC">
            <div align="center" class="messagerie"><b>R&eacute;sultat de la recherche</b></div>
          </td>
        </tr>
      </table>
<?php
$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'];
}

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>';

	$tableName="annonce";		
	$targetpage = "search-val.php"; 	
	$limit = 10; 
	$sqlWhere = (empty($where)) ? null : 'WHERE '.implode(' AND ', $where);
	$query = "SELECT COUNT(*) as num FROM $tableName ".$sqlWhere."";
	$total_pages = mysql_fetch_array(mysql_query($query));
	@$total_pages = $total_pages[num];
	
	$stages = 3;
	@$page = mysql_escape_string($_GET['page']);
	if($page){
		$start = ($page - 1) * $limit; 
	}else{
		$start = 0;	
		}	
	
    // Get page data
	
	$query1 = "SELECT * FROM $tableName ".$sqlWhere." LIMIT $start,$limit";
	$result = mysql_query($query1);
	
	// Initial page num setup
	if ($page == 0){$page = 1;}
	$prev = $page - 1;	
	$next = $page + 1;							
	$lastpage = ceil($total_pages/$limit);		
	$LastPagem1 = $lastpage - 1;					
	
	
	$paginate = '';
	if($lastpage > 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 ($lastpage < 7 + ($stages * 2))	// Not enough pages to breaking it up
		{	
			for ($counter = 1; $counter <= $lastpage; $counter++)
			{
				if ($counter == $page){
					$paginate.= "<span class='current'>$counter</span>";
				}else{
					$paginate.= "<a href='$targetpage?page=$counter'>$counter</a>";}					
			}
		}
		elseif($lastpage > 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=$LastPagem1'>$LastPagem1</a>";
				$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</a>";		
			}
			// Middle hide some front and some back
			elseif($lastpage - ($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=$LastPagem1'>$LastPagem1</a>";
				$paginate.= "<a href='$targetpage?page=$lastpage'>$lastpage</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 = $lastpage - (2 + ($stages * 2)); $counter <= $lastpage; $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>";		
	
	
} 


		while($plus = mysql_fetch_assoc($result))
		{
		$ida = $plus["idA"];
	    $ligne = $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='.$ida.'"><img src="cssstyle/imdesign/oeil.png" width="30" height="30" border="0" /></a></td>
  </tr></table>';
		}		
echo $paginate;	
	?>

<?php
echo'</td></tr>
    <tr>
    <td>
    <table width="100%" border="0">
  <tr><hr>
    <td></td>
  </tr>
</table>
     </td>
  </tr>
</table>
<br />
</div>
</div>';
include("cssstyle/bas.php");
?>