Se connecter avec
S'enregistrer | Connectez-vous

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

Dernière réponse : dans Programmation

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:
  1. require_once ('connection.inc.php');
  2. //include_once ("fonctions.inc.php");
  3. mysql_select_db($base)or die("erreur sql reception.inc.php ".mysql_error());
  4. // définition de la variable $recherche:
  5. if(isset($_POST['recherche'])){
  6. $recherche=$_POST['recherche'];
  7. }else{
  8. $cache = $_POST['cache'];
  9. $recherche = $cache;
  10. }
  11. echo "recherche: ".$recherche;
  12. echo "<br> cache: ".$cache;
  13.  
  14. //si la variable recherche est définie
  15. if ($recherche!=''){
  16. //////////////////////////////////////////////////////////////
  17. /*
  18. $nombre : Nombre d'enregistrements que l'on veut afficher par page.
  19. $num_rows : Le nombre total d'enregistrements de la table .
  20. $limite : Où en sommes-nous dans notre affichage.
  21. $page : numéro de la page sur laquelle on est
  22.  
  23. */
  24. if(!isset($_GET['page']) || $page<2){
  25. $page=1;
  26. }else{
  27. $page=$_GET['page'];
  28. }//fin de la condition pour la page
  29.  
  30. //nombres d'entrées dans la table:
  31. $NB="SELECT id FROM produits ";
  32. $reqNB = mysql_query($NB);
  33. $num_rows=mysql_num_rows($reqNB);
  34. $nombre = 5; // on va afficher 5 résultats par page.
  35.  
  36. //on veut faire boucler le résultat:
  37. if (!isset($limite)||$num_rows-1<$limite){//
  38. $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.
  39. } //fin de la condition de la limite
  40. /////////////////////////////////////////////////////////////////////
  41. /////////////requette d'affichege des produits://///////////////////
  42. $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;
  43. //on récupere les réponses que l'on range dans la variable résultat
  44. $resultat = mysql_query($requette);//or die("erreur sql reception.inc.php: ".mysql_error());
  45. //echo "<br>resultat = ".$resultat."<br>requette = ".$requette."<br> nombre!!=".$nombre."<br> limite!!: ".$limite;
  46. $req = mysql_query($select);
  47.  
  48. //limite next
  49. $limNext = $limite + $nombre;
  50. }//fin de condition de la var $recherche
  51. ?>
  52.  
  53.  
  54. page:
  55. <div class="centre">
  56. <?php
  57. //AFFICHAGE DU RESULTAT
  58. //on veut afficher la liste des résultats trouvés par le moteur de recherche
  59. $Ncur = 0; // n° de la fiche courante
  60. while ($ligne=mysql_fetch_array($resultat)){
  61. // une de plus
  62. $Ncur++;
  63. ?><!--on créé un lien qui permettra le passage de parametres php par url et dans une autre fenetre -->
  64. <div class="lien_detailpdt">
  65. <a href="detail_produit.php?id=<?php echo $ligne['id'] ?>" target="_blank"><?php echo $ligne['nom']?></a>
  66. </div><?php }//on sort de la boucle while
  67. ?>
  68. <!-- on créé un champ caché qui sert à récuperer la variable recherche -->
  69. <form name="cache" method="post" action="<?php $PHP_SELF ?>" >
  70. <input type="texte" id="cache" value="<?php echo $recherche ?>" />
  71. </form>
  72. <!-- fin cu formulaire -->
  73. </div>
  74. <div class="arrow"><?php if($_GET['page'] != 1){//a modifier
  75. if($page*$nombre_resultats < $num_rows){//a modifier
  76. $debut-=5;
  77. $nombre_resultats-=5;
  78. echo '<a href="reception.inc?limite='.$limPrev.'"><img src="img/fleche_up.gif.gif" alt="passer aux articles suivants" border="0px" /></a>';
  79. }
  80. }?>
  81. </div><!--vers page précédente -->
  82. <div id="middlearrow"></div>
  83. <div class="arrow">
  84. <?php if($_GET['page'] != 1){
  85. if($page*$nombre_resultats < $num_rows){
  86. $debut+=5;
  87. $nombre_resultats+=5;
  88. echo '<a href="reception.inc?limite='.$limNext.'"><img src="img/fleche_up.gif.gif" alt="passer aux articles suivants" border="0px" /></a>';
  89. }
  90. }?>
  91. </div><!--vers page suivante -->



Merci d'avance à ceux qui m'aideront.
Lassé par la pub ? Créez un compte

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
Lassé par la pub ? Créez un compte