Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1510 connectés 

  FORUM HardWare.fr
  Programmation
  PHP

  comment garder une valeur de requete?

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

comment garder une valeur de requete?

n°1860860
chanteur06
Posté le 12-03-2009 à 18:03:52  profilanswer
 

Hello
je tourne en rond depuis klk jours.
je cherche à afficher des resultats d'une base importante,donc sur plusieures pages.J'arrive à afficher une pagination,sauf que les pages suivantes ne gardent pas la requete récupérée du formulaire. donc je me disais que créer une session permettrait de garder cette requete sur chaque page appelées,je me trompe..?
et comment écrire et intégrer cette session si necessaire,car j'ai des retours parse errors.
Si vous avez une autre idée,je prends
(le script est classique pour pagination et requete de BDD)

Code :
  1. <?php
  2. session_start() ;
  3. $recherche = isset($_POST['recherche']);
  4. //enregistrement d'une variable de session
  5. $_SESSION['recherche'] = $recherche;
  6. function barre_navigation ($nb_total,
  7. $nb_affichage_par_page,
  8. $debut,
  9. $nb_liens_dans_la_barre) {
  10. $barre = '';
  11. // on recherche l'URL courante munie de ses paramètre auxquels on ajoute le paramètre 'debut' qui jouera le role du premier élément de notre LIMIT
  12. if ($_SERVER['QUERY_STRING'] == "" ) {
  13. $query = $_SERVER['PHP_SELF'].'?debut=';
  14. }
  15. else {
  16. $tableau = explode ("debut=", $_SERVER['QUERY_STRING']);
  17. $nb_element = count ($tableau);
  18. if ($nb_element == 1) {
  19. $query = $_SERVER['PHP_SELF'].'?'.$_SERVER['QUERY_STRING'].'&debut=';
  20. }
  21. else {
  22. if ($tableau[0] == "" ) {
  23. $query = $_SERVER['PHP_SELF'].'?debut=';
  24. }
  25. else {
  26. $query = $_SERVER['PHP_SELF'].'?'.$tableau[0].' '.$recherche.'debut=';
  27. }
  28. }
  29. }
  30. // on calcul le numéro de la page active
  31. $page_active = floor(($debut/$nb_affichage_par_page)+1);
  32. // on calcul le nombre de pages total que va prendre notre affichage
  33. $nb_pages_total = ceil($nb_total/$nb_affichage_par_page);
  34. // on calcul le premier numero de la barre qui va s'afficher, ainsi que le dernier ($cpt_deb et $cpt_fin)
  35. // exemple : 2 3 4 5 6 7 8 9 10 11 << $cpt_deb = 2 et $cpt_fin = 11
  36. if ($nb_liens_dans_la_barre%2==0) {
  37. $cpt_deb1 = $page_active - ($nb_liens_dans_la_barre/2)+1;
  38. $cpt_fin1 = $page_active + ($nb_liens_dans_la_barre/2);
  39. }
  40. else {
  41. $cpt_deb1 = $page_active - floor(($nb_liens_dans_la_barre/2));
  42. $cpt_fin1 = $page_active + floor(($nb_liens_dans_la_barre/2));
  43. }
  44. if ($cpt_deb1 <= 1) {
  45. $cpt_deb = 1;
  46. $cpt_fin = $nb_liens_dans_la_barre;
  47. }
  48. elseif ($cpt_deb1>1 && $cpt_fin1<$nb_pages_total) {
  49. $cpt_deb = $cpt_deb1;
  50. $cpt_fin = $cpt_fin1;
  51. }
  52. else {
  53. $cpt_deb = ($nb_pages_total-$nb_liens_dans_la_barre)+1;
  54. $cpt_fin = $nb_pages_total;
  55. }
  56. if ($nb_pages_total <= $nb_liens_dans_la_barre) {
  57. $cpt_deb=1;
  58. $cpt_fin=$nb_pages_total;
  59. }
  60. // si le premier numéro qui s'affiche est différent de 1, on affiche << qui sera un lien vers la premiere page
  61. if ($cpt_deb != 1) {
  62. $cible = $query.(0);
  63. $lien = '<A HREF="'.$cible.'"><<</A>  ';
  64. }
  65. else {
  66. $lien='';
  67. }
  68. $barre .= $lien;
  69. // on affiche tous les liens de notre barre, tout en vérifiant de ne pas mettre de lien pour la page active
  70. for ($cpt = $cpt_deb; $cpt <= $cpt_fin; $cpt++) {
  71. if ($cpt == $page_active) {
  72. if ($cpt == $nb_pages_total) {
  73. $barre .= $cpt;
  74. }
  75. else {
  76. $barre .= $cpt.' - ';
  77. }
  78. }
  79. else {
  80. if ($cpt == $cpt_fin) {
  81. $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page).'&recherche='.$_POST['recherche'];
  82. $barre .= "'>".$cpt."</A>";
  83. }
  84. else {
  85. $barre .= "<A HREF='".$query.(($cpt-1)*$nb_affichage_par_page).'&recherche='.$_POST['recherche'];
  86. $barre .= "'>".$cpt."</A> - ";
  87. }
  88. }
  89. }
  90. $fin = ($nb_total - ($nb_total % $nb_affichage_par_page));
  91. if (($nb_total % $nb_affichage_par_page) == 0) {
  92. $fin = $fin - $nb_affichage_par_page;
  93. }
  94. // si $cpt_fin ne vaut pas la dernière page de la barre de navigation, on affiche un >> qui sera un lien vers la dernière page de navigation
  95. if ($cpt_fin != $nb_pages_total) {
  96. $cible = $query.$fin;
  97. $lien = '  <A HREF="'.$cible.'">>></A>';
  98. }
  99. else {
  100. $lien='';
  101. }
  102. $barre .= $lien;
  103. return $barre;
  104. }
  105. ?>
  106. <html>
  107. <head>
  108. <title>Les livres de la bibliothèque</title>
  109. </head>
  110. </body>
  111. Les différents restaurants :<br /><br />
  112. <?php
  113. // on se connecte à notre base
  114. $base = mysql_connect ('localhost', 'root', '');
  115. mysql_select_db ('youresto', $base);
  116. // Récupère la variable
  117. $recherche = isset($_POST['recherche']) ? $_POST['recherche'] : '';
  118. // on prépare une requête permettant de calculer le nombre total d'éléments qu'il faudra afficher sur nos différentes pages
  119. $sql = "SELECT count(city) FROM jos_restaurante WHERE city LIKE '".$recherche."%'";
  120. // on exécute cette requête
  121. $resultat = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  122. // on récupère le nombre d'éléments à afficher
  123. $nb_total = mysql_fetch_row($resultat);
  124. // on teste si ce nombre de vaut pas 0
  125. if (($nb_total = $nb_total[0]) == 0) {
  126. echo 'Aucune réponse trouvée';
  127. }
  128. else {
  129. echo '<table>'."\n";'<tr><td><td>Description</td></tr>';
  130. // sinon, on regarde si la variable $debut (le x de notre LIMIT) n'a pas déjà été déclarée, et dans ce cas, on l'initialise à 0
  131. if (!isset($_GET['debut'])) $_GET['debut'] = 0;
  132. $nb_affichage_par_page = 15;
  133. // Préparation de la requête avec le LIMIT
  134. $sql = "SELECT title, city FROM jos_restaurante WHERE city LIKE '".$recherche."%' ORDER BY city ASC LIMIT ".$_GET["debut"].",".$nb_affichage_par_page;
  135. echo($sql);
  136. // on exécute la requête
  137. $req = mysql_query($sql) or die('Erreur SQL !<br />'.$sql.'<br />'.mysql_error());
  138. // on va scanner tous les tuples un par un
  139. while ($data = mysql_fetch_array($req)) {
  140. // on affiches les résultats dans la <table>
  141. echo '<tr><td><td>' , htmlentities(trim($data['title'])) , '</td></tr>';
  142. echo '<tr><td><td>' , htmlentities(trim($data['city'])) , '</td></tr>'."\n";
  143. }
  144. // on libère l'espace mémoire alloué pour cette requête
  145. mysql_free_result ($req);
  146. echo '</table><br />'."\n";
  147. // on affiche enfin notre barre
  148. echo '<span class="gras">'.barre_navigation($nb_total, $nb_affichage_par_page, $_GET['debut'], 10).'</span>';
  149. }
  150. // on libère l'espace mémoire alloué pour cette requête
  151. mysql_free_result ($resultat);
  152. // on ferme la connexion à la base de données.
  153. mysql_close ();
  154. echo '</table><br />';
  155. ?>
  156. </body>
  157. </html>


 
 
merci


Message édité par chanteur06 le 13-03-2009 à 10:46:42
mood
Publicité
Posté le 12-03-2009 à 18:03:52  profilanswer
 

n°1860889
chanteur06
Posté le 12-03-2009 à 19:38:21  profilanswer
 

Si ça peut aider, voilà l'erreur affichée sur l'appel de la page suivante:
 
Notice: Undefined index: recherche in C:\Program Files\wamp\www\rech3\recherche.php on line 102
 
ce serait pas le code session ou autre à mettre dans la navigation...?

n°1860917
grosbin
OR die;
Posté le 12-03-2009 à 20:46:10  profilanswer
 

ouch ..
$recherche = isset($_POST['recherche']);
=rien si rien
if($_POST['recherche'])$_SESSION[r]=$_POST['recherche'];
voilà


Message édité par grosbin le 12-03-2009 à 20:46:48

---------------
Photos Panoramiques Montagnes Haute Savoie
n°1860918
Ricco
Retour au pays
Posté le 12-03-2009 à 20:46:21  profilanswer
 

Comme ça là je dirais tu accède à un index qui s'appelle recherche et qui n'existe pas. En poussant mes investigation je dirais que ça se passe à la ligne 102 du fichier C:\Program Files\wamp\www\rech3\recherche.php


---------------
"L'informatique n'est pas plus la science des ordinateurs que l'astronomie n'est celle des télescopes." Michael R. Fellows & Ian Parberry
n°1860955
grosbin
OR die;
Posté le 12-03-2009 à 21:41:39  profilanswer
 

simplement ce que j'ai noté il a soit 1 soit rien dans recherche
du coup notice ligne 102


---------------
Photos Panoramiques Montagnes Haute Savoie
n°1861038
chanteur06
Posté le 13-03-2009 à 09:49:30  profilanswer
 

Je n'ai fait que deux pages: l'une est le formulaire,et l'autre est celle du code ci dessus.
le formulaire n'a pas de session...(peut etre là l'erreur)
ou peut etre mettre session dans l'appel de navigation <a href...   ?
L'appel est ok sur le premier affichage de ce code,où la pagination est affichée,mais lorsque je clique sur la pagination en appelant la page deux (qui ne correspond qu'à php self) la base est appelé à zero (le départ de la base) et la requete du formulaire n'est pas tenue...
C'est normal?


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  PHP

  comment garder une valeur de requete?

 

Sujets relatifs
modifier une requête access depuis vb[débutant] Récupération de valeur dans un fichier texte
Requête SQL complexe et éviter table temporaireUne requête qui n'est pas tout à fait correcte
[Access] Regrouper plusieurs résultats d'1 requête sur 1 seule ligne?Valeur à un champs de plusieurs lignes
Bête requete ...Recuperer la valeur d'un BoundField dans un DetailsView (en VB.NET) ?
Défilement images d'une requete php avec javascriptExtraction d' une valeur en utilisant sed
Plus de sujets relatifs à : comment garder une valeur de requete?


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR