[résolu]moteur de recherche & affichage des résultats multipage

  • Auteur de la discussion nina_bee
  • Date de début

nina_bee

Nouveau membre
bonjour,
je suis en train de créer un moteur de recherche en php qui permettrait de trouver les produits inscrits dans une base de données. J'aimerais limiter le nombre de résultats à 5 par page. Deux boutons font le liens vers la page suivante et la page précédente. Idéalement ces boutons bouclent le résultat (par exemple si on est sur la premiere page et que lon clique sur précédent, on arrive à la dernière page).
Le problème est que lorsque je clique sur ces boutons, mon script ne parvient pas à récupérer la valeur de la variable de recherche... Du coup je tombe sur la page "veuillez entrer un mot pour la recherche".
J'ai essayé de récuperer la variable grace à un champ caché mais ca ne marche pas non plus.... :??:
Le bout de code:
Code:
require_once ('connection.inc.php');
//include_once ("fonctions.inc.php");
mysql_select_db($base)or die("erreur sql reception.inc.php ".mysql_error()); 
// définition de la variable $recherche:
if(isset($_POST['recherche'])){
	$recherche=$_POST['recherche'];
}else{
$cache = $_POST['cache'];
$recherche = $cache;
}
echo "recherche: ".$recherche;
echo "<br> cache: ".$cache;

//si la variable recherche est définie
if ($recherche!=''){
//////////////////////////////////////////////////////////////
/*
  $nombre  : Nombre d'enregistrements que l'on veut afficher par page.
  $num_rows : Le nombre total d'enregistrements de la table .
  $limite : Où en sommes-nous dans notre affichage. 
  $page : numéro de la page sur laquelle on est

*/
if(!isset($_GET['page']) || $page<2){
	$page=1;
}else{
	$page=$_GET['page'];
}//fin de la condition pour la page

//nombres d'entrées dans la table:
$NB="SELECT id FROM produits ";
$reqNB = mysql_query($NB);
$num_rows=mysql_num_rows($reqNB);
$nombre = 5;  // on va afficher 5 résultats par page.

//on veut faire boucler le résultat:
if (!isset($limite)||$num_rows-1<$limite){//
 $limite = 0; // si on arrive sur la page pour la première fois ou si on a vu toutes les pages on met limite à 0.          
} //fin de la condition de la limite 
/////////////////////////////////////////////////////////////////////
/////////////requette d'affichege des produits://///////////////////
	$requette="SELECT * FROM produits WHERE nom LIKE '"."%".$recherche."%"."' OR description LIKE '"."%".$recherche."%"."' OR prix LIKE  '"."%".$recherche."%"."'OR taille LIKE '"."%".$recherche."%"."' ORDER BY nom ASC LIMIT ".$limite.",".$nombre;
	//on récupere les réponses que l'on range dans la variable résultat
	$resultat = mysql_query($requette);//or die("erreur sql reception.inc.php: ".mysql_error());
	//echo "<br>resultat = ".$resultat."<br>requette = ".$requette."<br> nombre!!=".$nombre."<br> limite!!: ".$limite;
$req = mysql_query($select);

//limite next
$limNext = $limite + $nombre;
}//fin de condition de la var $recherche
?>


page:
<div class="centre">
			<?php 
			//AFFICHAGE DU RESULTAT
			//on veut afficher la liste des résultats trouvés par le moteur de recherche
			$Ncur = 0; // n° de la fiche courante
			while ($ligne=mysql_fetch_array($resultat)){
				  // une de plus
				   $Ncur++;
			?><!--on créé un lien qui permettra le passage de parametres php par url et dans une autre fenetre  -->
			<div class="lien_detailpdt">
				<a href="detail_produit.php?id=<?php echo $ligne['id'] ?>" target="_blank"><?php echo $ligne['nom']?></a>
			</div><?php }//on sort de la boucle while
			 ?>
			<!-- on créé un champ caché qui sert à récuperer la variable recherche -->
			<form name="cache" method="post" action="<?php $PHP_SELF ?>" >
			<input type="texte" id="cache" value="<?php echo $recherche ?>" />
			</form>
			<!-- fin cu formulaire -->
		</div>
<div class="arrow"><?php if($_GET['page'] != 1){//a modifier
							if($page*$nombre_resultats < $num_rows){//a modifier
								$debut-=5;
								$nombre_resultats-=5; 
								 echo '<a href="reception.inc?limite='.$limPrev.'"><img src="img/fleche_up.gif.gif" alt="passer aux articles suivants" border="0px" /></a>'; 
									 }
								 }?>
				</div><!--vers page précédente -->
				<div id="middlearrow"></div>
				<div class="arrow">
					<?php if($_GET['page'] != 1){
							if($page*$nombre_resultats < $num_rows){
								$debut+=5;
								$nombre_resultats+=5; 
								 echo '<a href="reception.inc?limite='.$limNext.'"><img src="img/fleche_up.gif.gif" alt="passer aux articles suivants" border="0px" /></a>'; 
									 }
								 }?>
				</div><!--vers page suivante -->


Merci d'avance à ceux qui m'aideront.
 

nina_bee

Nouveau membre
coucou!
j'ai résolu le problème avec un peu d'aide (merci à Belphégor)
pour ceux qui tomberaient dans le panneau comme moi:
j'ai oublié de faire passer ma var $recherche dans l'url. Résultat les pages précédente et suivantes n'ont rien à afficher
le code :
echo '<a href="receptionphp?limite='.$limNext.&recherche='.$recherche.'"><img src="img/fleche_up.gif.gif" alt="passer aux articles suivants" border="0px" /></a>';

du coup le formulaire ne sert à rien
voila !!
bonne journée
 
Vous devez vous inscrire ou vous connecter pour répondre ici.
Derniers messages publiés
Statistiques globales
Discussions
730 129
Messages
6 717 853
Membres
1 586 373
Dernier membre
https://forum.tomshardwar
Partager cette page
Haut