Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] Wyszukiwarka + Stronicowanie
Forum PHP.pl > Forum > Przedszkole
funky_beat
Witam,

Storzyłem skrypt do wyświetlania rekordów z tabeli USERZY (id, Nazwisko).
1.Skrypt poprawnie wyświetla rekordy i tworzy linki do następnych stron - stronicowanie działa.
2.Skrypt zaopatrzyłem w prostą wyszukiwarkę, która również działa, jednak po wyszukaniu rekordów stronicowanie się rozsypuje, tj. wyświetlany jest tylko link do pierwszej strony, który po naciśnięciu wyświetla wszystkie rekordy, czyli wraca do punktu 1..

Oto skrypt:

  1. <?php
  2.  
  3. require_once ('baza.php');
  4.  
  5.  
  6. $sql = "SET CHARSET latin2";
  7.  
  8.  
  9. $site = intval($_REQUEST['site']);
  10.  
  11. $start=$site*2;
  12.  
  13. $a=0;
  14. //for($a=0;$a<($ile/2);$a++)
  15. ?>
  16.  
  17.  
  18.  
  19. <form action="0porcjowanie.php?site=<?php echo $a?>" method="post">
  20. <fieldset>
  21.  
  22. </br><p>Nazwisko: <input type="text" name="Nazwisko" value="<?php if (isset($_POST['Nazwisko'])) echo $_POST['Nazwisko']; ?>" /><input type="submit" name="submit" value="Szukaj" />
  23.  
  24. </fieldset>
  25.  
  26.  
  27.  
  28. </form>
  29.  
  30. <?php
  31.  
  32. if (isset($_POST['submit'])) { 
  33. function escape_data ($data) {
  34. global $dbc; 
  35. if (ini_get('magic_quotes_gpc')) {
  36. $data = stripslashes($data);
  37. }
  38. return mysql_real_escape_string($data, $dbc);
  39. } 
  40. $message = NULL;
  41.  
  42. if (empty($_POST['Nazwisko'])) {
  43. $n = FALSE;
  44. } else {
  45. $n = escape_data($_POST['Nazwisko']);
  46. }
  47.  
  48.  
  49. $licz = mysql_query ("SELECT Nazwisko FROM userzy WHERE Nazwisko LIKE '%$n%' ORDER BY Nazwisko LIMIT $start,2") or die ("Error SQL: ");
  50. $ile = mysql_num_rows($licz);
  51.  
  52.  
  53.  
  54. $query = mysql_query("SELECT id, Nazwisko FROM userzy WHERE Nazwisko LIKE '%$n%' ORDER BY Nazwisko LIMIT $start,2") or die ("Error SQL: ");
  55.  
  56. echo '<table>
  57. <tr><td>Nazwisko</td></tr>';
  58.  
  59. while ($row = mysql_fetch_array($query)) {
  60.  
  61. echo '<tr><td>'.$row[1].'</td></tr>';
  62. }
  63.  
  64. echo '</table>';
  65.  
  66.  
  67. echo '<p>kolejne strony:';
  68. for($a=0;$a<($ile/2);$a++)
  69. echo '<a href=0porcjowanie.php?site='.$a.'>|'.$a.'|</a>';
  70. if ($a % 2 == 1) echo '<br />';
  71.  
  72.  
  73.  
  74. } else {
  75.  
  76.  
  77. $licz = mysql_query ("SELECT * FROM userzy");
  78. $ile = mysql_num_rows($licz);
  79.  
  80.  
  81. $query = mysql_query("SELECT id, Nazwisko FROM userzy ORDER BY Nazwisko LIMIT $start,2") or die ("Error SQL: ");
  82.  
  83. echo '<table>
  84. <tr><td>Nazwisko</td></tr>';
  85.  
  86. while ($row = mysql_fetch_array($query)) {
  87.  
  88. echo '<tr><td>'.$row[1].'</td>tr>';
  89. }
  90.  
  91. echo '</table>';
  92.  
  93.  
  94.  
  95. echo '<p>kolejne strony:';
  96. for($a=0;$a<($ile/2);$a++)
  97. echo '<a href=0porcjowanie.php?site='.$a.'>|'.$a.'|</a>';
  98. if ($a % 2 == 1) echo '<br />';
  99. }
  100.  
  101.  ?>



Z góry dziękuje za pomoc w rozwiązaniu problemu
cornholio666
Może poszukaj na forum klasy Pager autorstwa nospor'a
funky_beat
tak wiem że można wykorzystać te klase, ale czy bez niej juz sie nie da?
funky_beat
dowiedziałem się że skrypt gubi wyszukiwaną frazę i należy ją przekazywać metodą GET, nie wiem jednak jak sad.gif
Fishu
To proste wystarczy w formularzu zmień na metode GET w '<form action="jakisplik.php" method="get">'.No i po wysłaniu formularza (przyjmijmy że pole text w formularzu miało 'name="q" ' to teraz w tym pliku do którego wysłaliśmy formularz będzie w adresie jakisplik.php?q=WYRAZ.Widzisz jakie to proste, jak nie rozumiesz to poczytaj o odbieraniu danych z formularza.A jeżeli chodzi ci o co innego to pisz tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.