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.
Message édité par nina dj le 15-03-2007 à 14:03:17