Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Porcjowanie wyników PHP MySQL problem z przekazaniem zmiennych
merys
post 2.04.2010, 22:21:02
Post #1





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 24.06.2003

Ostrzeżenie: (0%)
-----


witam

mam wyszukiwarkę która sprawdza zaznaczone lub wybrane opcje i wyświetla wynik z podziałem na strony. Problem polega na tym że działa to tylko przy pierwszym przekazaniu zmiennych. Generuje prawidłowo ilość stron odpowiednio do ilości rekordów ale po kliknięciu w link odrazu wyświetla wynik wszystkich stron i pokazuje ilość stron wszystkich rekordów a nie tylko dalszą część wyszukiwanych. Przekazywałem już zmienne POST i GET i efekt jest ten sam. Może ktoś ma pomysł jak to rozgryźć. poniżej plik z kodem :




search_advanced.php

  1. <?php
  2. if (!isset($_SESSION['check'])){
  3. $_SESSION['check'] = true;
  4. $_SESSION['adres_ip'] = $_SERVER['REMOTE_ADDR'];
  5. }
  6. if($_SESSION['adres_ip'] !== $_SERVER['REMOTE_ADDR']){
  7. echo 'Error: Próba przejęcia sesji';
  8. }
  9.  
  10. function pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s) {
  11. $stron = ceil($rekordow/$na_stronie);
  12. if ($s<1) $s=1;
  13. if ($s>$stron) $s=$stron;
  14. $koniec = $s+$na_pasku;
  15. if ($s<=$na_pasku) $koniec = $na_pasku*2+1;
  16. if ($koniec>$stron) $koniec = $stron;
  17. $start = $koniec-$na_pasku*2;
  18. if ($start<1) $start=1;
  19. if ($s>1) $p = "<a href='$skrypt".($s-1)."'>&lt;&lt;&lt;</a>";
  20. else $p = "<span style='color:gray'>&lt;&lt;&lt;</span>";
  21. if ($s<$stron) $n = "<a href='$skrypt".($s+1)."'>&gt;&gt;&gt;</a>";
  22. else $n = "<span style='color:gray'>&gt;&gt;&gt;</span>";
  23. for ($i=$start; $i<=$koniec; $i++) {
  24. if ($i==$s) $l .= "&nbsp;<span style='color:#cc0000;'><b>$i</b></span>&nbsp;";
  25. else $l .= "&nbsp;<a href='$skrypt$i'>$i</a>&nbsp;";
  26. }
  27. if ($rekordow<1) $wynik = "brak informacji spełniających kryteria wyszukiwania";
  28. else $wynik = "znalezionych: $rekordow, strona $s z $stron<br />";
  29. if ($stron>1) $wynik .= "$p&nbsp; - $l - &nbsp;$n";
  30. return $wynik;
  31. }
  32.  
  33. $s = ($_GET["s"]>1)?number_format($_GET["s"], 0, "", ""):1; // numer strony
  34. $na_stronie = 1; // liczba rekordow widocznych na stronie
  35. $na_pasku = 5; // liczba odpowiedzi/2 na pasku
  36. $skrypt = "search_advanced.php?post_code=".$_POST['post_code']."&fuel=".$_POST['fuel']."&s="; // skrypt do wysyłania danych
  37. ?>
  38.  
  39. <?
  40.  
  41.  
  42. $post_code = $_POST['post_code'];
  43. $make = $_POST['mid'];
  44. $model = $_POST['model'];
  45. $fuel = $_POST['fuel'];
  46. $param_w = '>=';
  47. $param_m = '<=';
  48.  
  49. if($_POST['age']=='up_to_1_year_old')
  50. { $age = $param_w." '2010'"; }
  51. if($_POST['age']=='up_to_2_years_old')
  52. { $age = $param_w." '2008'"; }
  53. if($_POST['age']=='up_to_3_years_old')
  54. { $age = $param_w." '2007'"; }
  55. if($_POST['age']=='up_to_4_years_old')
  56. { $age = $param_w." '2006'"; }
  57. if($_POST['age']=='up_to_5_years_old')
  58. { $age = $param_w." '2005'"; }
  59. if($_POST['age']=='up_to_7_years_old')
  60. { $age = $param_w." '2003'"; }
  61. if($_POST['age']=='up_to_10_year_old')
  62. { $age = $param_w." '2000'"; }
  63. if($_POST['age']=='over_10_years_old')
  64. { $age = '< 2000'; }
  65.  
  66. $szukaj=array();
  67.  
  68. if($_POST['post_code']<>"") $szukaj[] = "post_code LIKE '$post_code%'";
  69. if($_POST['mid']<>"") $szukaj[] = "make LIKE '$make%'";
  70. if($_POST['model']<>"") $szukaj[] = "model LIKE '$model%'";
  71. if($_POST['fuel']<>"") $szukaj[] = "fuel LIKE '$fuel%'";
  72. if($_POST['age']<>"") $szukaj[] = "age $age";
  73.  
  74. $pytanie = implode(" AND ", $szukaj);
  75.  
  76. if ($pytanie<>"") $pytanie = "WHERE $pytanie";
  77.  
  78.  
  79. $start = ($s-1)*$na_stronie;
  80.  
  81. $pytanie = [sql]"select SQL_CALC_FOUND_ROWS * from notice $pytanie LIMIT $start, $na_stronie";[/sql]
  82. //echo $pytanie;
  83.  
  84. $wynik =[sql] mysql_query($pytanie)or die (mysql_error());[/sql]
  85.  
  86. $rekordow = [sql]mysql_result(mysql_query("SELECT FOUND_ROWS()"),0);[/sql]
  87.  
  88. echo "<p style='text-align:center;'>";
  89. echo pasek($rekordow,$na_stronie,$na_pasku,$skrypt,$s);
  90. echo "</p>";
  91.  
  92. while ($rek = mysql_fetch_array($wynik))
  93. {
  94. echo "<div>".$rek['id_notice']."&nbsp;".$rek['make']."&nbsp;".$rek['model']."</div>";
  95. }
  96.  
  97.  
  98. ?>

Go to the top of the page
+Quote Post
pedro84
post 2.04.2010, 22:25:55
Post #2





Grupa: Nieautoryzowani
Postów: 2 249
Pomógł: 305
Dołączył: 2.10.2006

Ostrzeżenie: (0%)
-----


Moim zdaniem lepiej zrobić to z użyciem GET. W zapytaniu musisz ustalić LIMIT oraz OFFSET. Zagoogluj, zajrzyj do jakiejkolwiek klasy paginacji i zobaczysz jak mają to zrobione i sobie poradzisz.


--------------------
Google knows the answer...
Go to the top of the page
+Quote Post
merys
post 2.04.2010, 22:37:47
Post #3





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 24.06.2003

Ostrzeżenie: (0%)
-----


Użycie GET nie działa wogóle nie pobiera zmiennych. Co do paginacji to jak dla mnie czeski film. Przglądałem te klasy ale nie mam pojecia jak je zaimplementować do swojego kodu. sad.gif tak więc powrót do punktu wyjścia
Go to the top of the page
+Quote Post
mortus
post 2.04.2010, 22:52:25
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

Ostrzeżenie: (0%)
-----


nospor napisał małe co nieco na temat stronicowania i przekazywania danych wyszukiwania. Myślę, że znajdziesz tam rozwiązanie swojego problemu.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 03:37