Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Wyszukiwarka i wyświetlanie wyników na kilku stronach
Forum PHP.pl > Forum > Przedszkole
dopal
Witam,
Mam taki problem. Zrobiłem sobie wykuszkiwarkę, w której wybieram dwie pozycje, dział i miasto. Kod poniżej ( tutaj raczej jest dobrze )
  1. <?php
  2. require_once('class/class.SQL.php');
  3. require_once('class/class.User.php');
  4. $sql = new SQL;
  5. $sql->connection();
  6. $user = new User;
  7. $title = 'Wyszukiwarka wyników ';
  8. require_once('themes/header.php');?>
  9.  
  10. <?php
  11. require_once('themes/menu3.php');
  12. ?>
  13. <h3>Sprzęt wg oddziałów i pracowni</h3>
  14. <table>
  15. <form method="post" action="walidacja3.php">
  16.  
  17. <tr><td>Oddział: </td><td>
  18. <select name="city"><?php
  19. $set = mysql_query("SELECT * FROM `city` ORDER BY `name");
  20. while( $get = mysql_fetch_assoc( $set)){
  21. echo '<option>'.$get['name'].'</option>';
  22. } echo '<option value="-----" selected="selected">-----</option>';?></select> </td>
  23. </tr>
  24.  
  25. <td>Pracownia/ Dział: </td><td>
  26. <select name="section"><?php
  27. $set = mysql_query("SELECT * FROM `section` ORDER BY `name");
  28. while( $get = mysql_fetch_assoc( $set)){
  29. echo '<option>'.$get['name'].'</option>';
  30. } echo '<option value="-----" selected="selected">-----</option>';?></select>
  31. </td></tr>
  32. <input type="submit" style="background-color:yellow" value="Szukaj wyników">
  33.  
  34. </form>
  35. </table>
  36. <?php
  37. if (isset($_SESSION['komentarz'])) {
  38. echo $_SESSION['komentarz'];
  39. unset($_SESSION['komentarz']);
  40. }
  41. ?>
  42. <?php
  43. require_once('themes/footer.php');
  44. ?>


Drugim plikiem jest walidacja3.php gdzie są wyświetlane wyniki. Wyniki również się wyświetlają prawidłowo. Problem pojawił się gdy dołożyłem dzielenie
wyników na strony np. po 25 jak w kodzie poniżej. Wtedy wyświetla mi się pierwsza strona z wynikami, a na kolejnych widnieje 0. Próbowałem tworzyć to z sesją, ale nie było oczekiwanego rezultatu. Oczywiście, jeśli nie daję tego podziału na strony, to ilość wyników wyświetla się prawidłowo. Gdzie jest błąd i jak to można zrobić?

  1. <?php
  2. $_POST['city']=trim($_POST['city']);
  3. $_POST['section']=trim($_POST['section']);
  4. $oddzial=$_POST['city'];
  5. $pracownia=$_POST['section'];
  6.  
  7. if ( $oddzial=='-----' && $pracownia=='-----'){
  8. $info = 'MUSISZ WYBRAĆ PRZYNAJMNIEJ ODDZIAŁ LUB PRACOWNIĘ.';
  9. $_SESSION['info'] = $info;
  10. $color1='red';
  11. $_SESSION['color1'] = $color1;
  12. $komentarz = '<font color="'.$_SESSION['color1'].'" size="3"><b>'.$_SESSION['info'].'</b></font>';
  13. $_SESSION['komentarz'] = $komentarz;
  14. header('location: walidacja3_szuk.php');
  15. }
  16. elseif ( $oddzial!='-----' or $pracownia!='-----') {
  17. ?>
  18. <center>
  19. <img src="../images/logo genkart.jpg" alt="" width="756" height="150" />
  20. <h3>Sprzęt w oddziałach terenowych i pracowniach</h3>
  21. <?php
  22. require_once('themes/menu3.php');
  23. ?>
  24. <br>&nbsp;
  25. <td><b>Wyniki wyszukiwania dla:</b></td> <br><td>Oddział: <b><?php echo $oddzial;?></b></td><br><td>Pracownia/Dział: <b><?php echo $pracownia; ?></b></td>
  26. <br>&nbsp;
  27. <table width="100%" border="1">
  28. <tr bgcolor="#0033ff">
  29. <td width="3%" align="center"><b>Lp.</b></td>
  30. <td width="20%" align="center"><b>Nazwa sprzętu</b></td>
  31. <td width="10%" align="center"><b>Nr seryjny</b></td>
  32. <td width="7%" align="center"><b>Nr inwent.</b></td>
  33. <td width="20%" align="center"><b>Pracownia</b></td>
  34. <td width="10%" align="center"><b>Oddział</b></td>
  35. <td width="7%" align="center"><b>Pozostało</b></td>
  36. <td width="5%" align="center"><b>Historia</b></td>
  37. <td width="5%" align="center"><b>Etykieta</b></td></tr>
  38. <?php
  39. if ($oddzial!='-----' && $pracownia=='-----') {
  40. $query_nr = mysql_query("SELECT COUNT(*) FROM sprzet WHERE TO_DAYS(`data_nast`) - TO_DAYS(NOW()) >= '-1000' AND sp_mier='Nie' AND blokada='Tak' AND miasto='$oddzial'")or die( mysql_error());}
  41.  
  42. if ($oddzial=='-----' && $pracownia!='-----'){
  43. $query_nr = mysql_query("SELECT COUNT(*) FROM sprzet WHERE TO_DAYS(`data_nast`) - TO_DAYS(NOW()) >= '-1000' AND sp_mier='Nie' AND blokada='Tak' AND pracownia='$pracownia'")or die( mysql_error());}
  44.  
  45. if ($oddzial!='-----' && $pracownia!='-----'){
  46. $query_nr = mysql_query("SELECT COUNT(*) FROM sprzet WHERE TO_DAYS(`data_nast`) - TO_DAYS(NOW()) >= '-1000' AND sp_mier='Nie' AND blokada='Tak' AND pracownia='$pracownia' AND miasto='$oddzial'")or die( mysql_error());}
  47.  
  48. //tworzenie stronicowania wyników
  49. $nastr = mysql_fetch_array($query_nr);
  50.  
  51. $wynikow = 25;
  52.  
  53. $stron = ceil($nastr[0]/$wynikow);
  54.  
  55. if(isset($_GET['page'])){
  56. $page = $_GET['page'];
  57. $odkad = $page * $wynikow - $wynikow;
  58. } else {
  59. $page = 1;
  60. $odkad = 0;
  61. }
  62.  
  63. $poprzenia = $page -1;
  64. $nastepna = $page +1;
  65.  
  66.  
  67.  
  68. if ($oddzial!='-----' && $pracownia=='-----'){
  69. $query = mysql_query("SELECT `id`, `nazwa`, `producent`, `typ`, `nr_ser`, `nr_inw`, `pracownia`, `miasto`, `osoba`, `czas_wal`, TO_DAYS(`data_nast`) - TO_DAYS(NOW()) AS `roznica` FROM sprzet WHERE sp_mier='Nie' AND blokada='Tak' AND miasto='$oddzial' ORDER BY `roznica` ASC LIMIT $odkad, $wynikow")or die( mysql_error());
  70. }
  71. if ($oddzial=='-----' && $pracownia!='-----'){
  72. $query = mysql_query("SELECT `id`, `nazwa`, `producent`, `typ`, `nr_ser`, `nr_inw`, `pracownia`, `miasto`, `osoba`, `czas_wal`, TO_DAYS(`data_nast`) - TO_DAYS(NOW()) AS `roznica` FROM sprzet WHERE sp_mier='Nie' AND blokada='Tak' AND pracownia='$pracownia' ORDER BY `roznica` ASC LIMIT $odkad, $wynikow")or die( mysql_error());
  73. }
  74. if ($oddzial!='-----' && $pracownia!='-----'){
  75. $query = mysql_query("SELECT `id`, `nazwa`, `producent`, `typ`, `nr_ser`, `nr_inw`, `pracownia`, `miasto`, `osoba`, `czas_wal`, TO_DAYS(`data_nast`) - TO_DAYS(NOW()) AS `roznica` FROM sprzet WHERE sp_mier='Nie' AND blokada='Tak' AND pracownia='$pracownia' AND miasto='$oddzial' ORDER BY `roznica` ASC LIMIT $odkad, $wynikow")or die( mysql_error());
  76. }
  77. $i = 0;
  78. while( $set = mysql_fetch_assoc( $query)){
  79. $i++;
  80.  
  81. $wynik = $i%2;
  82. if($wynik == "0"){
  83. $kolor = "white";}
  84. else {
  85. $kolor = "#99ffff";
  86. }
  87. if ($set['roznica'] >='30'){
  88. $kolor3='black';
  89. }
  90. elseif ($set['roznica']<'30'){
  91. $kolor3='red';
  92. }
  93.  
  94. echo '<tr bgcolor='.$kolor.'>
  95. <td width="3%">'.$i.'.</td>
  96. <td width="20%"> '.$set['nazwa'].'</td>
  97. <td width="5%"> '.$set['nr_ser'].'</td>
  98. <td width="5%"> '.$set['nr_inw'].'</td>
  99. <td width="20%"> '.$set['pracownia'].'</td>
  100. <td width="10%"> '.$set['miasto'].'</td>
  101. <td width="7%" align="center"><font color='.$kolor3.'><b> '.$set['roznica'].' dni</b></font></td>
  102. <td width="5%"><a href="walidacja.php?get=hist&id='.$set['id'].'" target=_blank>Historia</a></td>
  103. <td width="5%"><a href="walidacja.php?get=wizyt&id='.$set['id'].'" target=_blank>Etykieta</a></td></tr>';
  104. }
  105. ?>
  106. </table>
  107. <?php
  108. echo('<<');
  109. // odnośnik na poprzednią stronę
  110. if($page != 1){
  111. echo('&nbsp;<a href="?page='.$poprzenia.'"> Poprzenia </a>&nbsp;');
  112. }
  113. // pętla for za pomocą której wyświetlamy odnośniki do poszczególnych stron
  114. for($str=1; $str<=$stron; $str++){
  115. echo('&nbsp;<a href="?page='.$str.'"> '.$str.' </a> &nbsp;');
  116. }
  117. // odnośnik na następną stronę
  118. if($page != $stron){
  119. echo('&nbsp;<a href="?page='.$nastepna.'"> Następna </a>&nbsp;');
  120. }
  121. echo('>>');
  122.  
  123. ?>
  124. <br>
  125. <?php
  126. }
  127. ?>
nospor
Tu masz napisane jak pamietac dane wyszukiwania miedzy stronami
http://nospor.pl/formularz-i-stronicowanie...anie-stanu.html
Damonsson
Nie zagłębiałem się do końca w kod, ale skoro dane do mysql bierzesz z $_POSTa, to po wywołaniu tego samego kodu dla innej strony paginacji, $_POST jest już pusty, musisz przekazywać te dane przy wywoływaniu kolejnych stron. Najlepiej chyba $_GETem, bo jakby trzeba komuś wysłać link dla konkretnego wyszukiwania, to wszystkie parametry są w linku.

No właśnie jak wyżej, fajnie wytłumaczone. Jest chyba jeszcze jakiś sposób, żeby to zapisywać po stronie SQL, kiedyś czytałem o czymś takim.
dopal
Cytat(nospor @ 23.07.2013, 11:14:53 ) *
Tu masz napisane jak pamietac dane wyszukiwania miedzy stronami
http://nospor.pl/formularz-i-stronicowanie...anie-stanu.html


Takie banalne rozwiązanie...ok, dzieki, działa smile.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.