Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Wyszukiwarka, wyświetlanie kolejnych stron
Lethys
post 7.11.2011, 19:28:46
Post #1





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Witam,

Posiadam na swojej strony wyszukiwarke, ktora pokazuje po 10 wynikow na strone.

Problem mój polega na tym, że przy działa tylko pierwsza strona wyszukiwania (czyli pierwsze dziesiec wynikow).

Po kliknieciu na kolejna strone zostaje zwrocny moj komunikat zabezpieczajacy "musisz wpisac poszukiwana fraze". Czyli po prostu przy kolejnej stronie zmienna z formularza ($szukaj) już nie działa i skrypt traktuje to tak jak bysmy zostawili puste miejsce na fraze i klikneli szukaj.

Nie wiem jak przekazac zmienna $szukaj aby dzialala rowniez na innych stronach. Probowalem w sesji, w hidden form ale nie dzialalo ;?


Skrypt:

  1.  
  2. if ($action == "wyszukiwanie"){
  3.  
  4. include("config.php");
  5.  
  6.  
  7. if (!$szukaj){
  8. $problem = TRUE;
  9. echo("<p id='uwaga'><h2>Musisz wpisać co chcesz znaleźć.</h2></p>");
  10. echo '<br><p><img border="0" src="images/loader.gif"> Powrót do wyszukiwarki</p><meta http-equiv="Refresh" content="2; url=poradniki.php">';
  11.  
  12. }
  13.  
  14.  
  15.  
  16. if (!$problem){
  17.  
  18.  
  19.  
  20. $liczenie = mysql_num_rows(mysql_query("select * from poradniki where nazwa like '%$szukaj%' || opis like '%$szukaj%' || nazwa_small like '%$szukaj%'"));
  21.  
  22.  
  23. echo 'Wyszukiwanie dla frazy: '.$szukaj.'';
  24. echo '<p>Znaleziono <b>'.$liczenie.'</b> poradników.</p><br>';
  25.  
  26. $wyszukane = mysql_fetch_array(mysql_query("select * from poradniki where nazwa like '%$szukaj%' || opis like '%$szukaj%' || nazwa_small like '%$szukaj%'"));
  27.  
  28.  
  29. $perPage = 10;
  30. if (is_numeric($_REQUEST['page'])) {
  31. $page = (int) $_REQUEST['page'];
  32. if ($page < 1) {
  33. $page = 1;
  34. }
  35. } else {
  36. $page = 1;
  37. }
  38. $start = ($page - 1) * $perPage;
  39. $query = "select * from poradniki where nazwa like '%$szukaj%' || opis like '%$szukaj%' || nazwa_small like '%$szukaj%' order by licznik desc LIMIT $start, $perPage";
  40. $result = mysql_query($query);
  41. while ($record = mysql_fetch_array($result)) {
  42.  
  43.  
  44.  
  45. <div class="ui-state-highlight-opis ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
  46.  
  47. <b><h2><A HREF="przekierowanie.php?link='.$record['nazwalink'].'">'.$record['nazwa'].'</A></h2></b>Opis: '.$record['opis'].'<br/><br/>Data dodania: 12.03.2004<br/><A HREF="/link4sms/link.php?link='.$record['nazwalink'].'">Zobacz szczegóły</a></div>';
  48.  
  49.  
  50.  
  51.  
  52. }
  53.  
  54.  
  55. $prev = $page - 1;
  56. $next = $page + 1;
  57. $prevLink = $_SERVER['PHP_SELF'] . '?action=wyszukiwanie&page=' . $prev;
  58. $nextLink = $_SERVER['PHP_SELF'] . '?action=wyszukiwanie&page=' . $next;
  59. $a = $page*10;
  60. $b = mysql_num_rows(mysql_query("select * from poradniki where nazwa like '%$szukaj%' || opis like '%$szukaj%' || nazwa_small like '%$szukaj%'"));
  61.  
  62. if ($b < 11){
  63. }else{
  64. if ($page == 0 or $page == 1){
  65. echo '<br><center>Brak poprzedniej strony | <a href='.$nextLink.'>Następna strona</a></center>';
  66. }else{
  67. if ($b >= $page*10){
  68. echo '<br><center><a href='.$prevLink.'>Poprzednia strona</a> | <a href='.$nextLink.'>Następna strona</a></center>';
  69. }else{
  70. echo '<br><center><a href='.$prevLink.'>Poprzednia strona</a> | Brak więcej wyników</center>';
  71.  
  72. }
  73. }
  74. }
  75.  
  76.  
  77. }else{
  78.  
  79. }
  80. }
  81. ?>


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
croc
post 7.11.2011, 23:10:50
Post #2





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


A jak wysyłasz dane do wyszukiwania? POST czy GET? Lepiej GET-em i przypisać tę samą zmienną do $prevLink i $nextLink, czyli dodać do nich np. &szukaj=$szukaj
Go to the top of the page
+Quote Post
CuteOne
post 7.11.2011, 23:12:10
Post #3





Grupa: Zarejestrowani
Postów: 2 958
Pomógł: 574
Dołączył: 23.09.2008
Skąd: wiesz, że tu jestem?

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


  1. if(!empty($_POST['szukaj'])) {
  2.  
  3. $fraza = $_POST['szukaj'];
  4. }
  5. elseif(!empty($_GET['szukaj'])) {
  6.  
  7. $fraza = $_GET['szukaj'];
  8. }
  9. else {
  10.  
  11. echo "Nie wpisałeś frazy";
  12. }


W ten sposób, możesz przekazywać dane zarówno formularzem jak i url

Ten post edytował CuteOne 7.11.2011, 23:12:31
Go to the top of the page
+Quote Post
croc
post 7.11.2011, 23:43:44
Post #4





Grupa: Zarejestrowani
Postów: 706
Pomógł: 108
Dołączył: 12.03.2010

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


Użycie empty to bardzo słaby pomysł. Dlaczego nie mamy prawa wyszukać frazy "0"? Ta funkcja powinna być przeznaczona tylko dla tablic, bo jej działanie dla innych wartości jest moim zdaniem absurdalne.

chyba jednak łatwiej użyć:
  1. $szukaj = $_REQUEST['szukaj'];
Go to the top of the page
+Quote Post
nospor
post 8.11.2011, 10:51:36
Post #5





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Wynik wyszukiwania możesz przenosić w sesji lub w URL (jak wspomnieli przedmowcy)
Tu omówiłem obie metody
http://nospor.pl/formularz-i-stronicowanie...anie-stanu.html
może ci się przyda


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
Lethys
post 9.11.2011, 15:10:07
Post #6





Grupa: Zarejestrowani
Postów: 642
Pomógł: 2
Dołączył: 9.03.2006

Ostrzeżenie: (30%)
XX---


Nospor zrobiłem to twoją metodą, ale nadal przy zmianie strony nie czyta mi wyszukiwanej frazy (tak jak bym nie wpisał do wyszukiwania).

Kawałek forma:

  1. <form method=post action=szukaj.php?action=wyszukiwanie name=formularz>
  2. <input type="text" name="szukaj" maxlength="25" size="43" class="podpowiedz" title="Wpisz nazwę szukanego poradnika np. dieta" />
  3. <input type="submit" value="Szukaj" name="submitek" class="ui-state-default ui-corner-all" />


Kod:

  1. <?php
  2.  
  3. if ($action == "wyszukiwanie"){
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10. $_SESSION['form'] = array(
  11. 'szukaj' => $_POST['szukaj'],
  12. );
  13.  
  14.  
  15. //niezależnie, czy wysłano formularz, czy nie,
  16. //pobierz jego stan z sesji
  17. $formData = array(
  18. 'szukaj' => !isset($_SESSION['form']) ? null : $_SESSION['form']['szukaj'],
  19. );
  20.  
  21. include("config.php");
  22.  
  23.  
  24. if (!$formData['szukaj']){
  25. $problem = TRUE;
  26. echo("<p id='uwaga'><h2>Musisz wpisać co chcesz znaleźć.</h2></p>");
  27. echo '<br><p><img border="0" src="images/loader.gif"> Powrót do wyszukiwarki</p><meta http-equiv="Refresh" content="2; url=poradniki.php">';
  28.  
  29. }
  30.  
  31.  
  32.  
  33.  
  34.  
  35. if (!$problem){
  36.  
  37.  
  38.  
  39. $liczenie = mysql_num_rows(mysql_query("select * from poradniki where nazwa like '%$formData[szukaj]%' || opis like '%$formData[szukaj]%' || nazwa_small like '%$formData[szukaj]%'"));
  40.  
  41.  
  42. echo 'Wyszukiwanie dla frazy: '.$formData['szukaj'].'';
  43. echo '<p>Znaleziono <b>'.$liczenie.'</b> poradników.</p><br>';
  44.  
  45. $wyszukane = mysql_fetch_array(mysql_query("select * from poradniki where nazwa like '%$formData[szukaj]%' || opis like '%$formData[szukaj]%' || nazwa_small like '%$formData[szukaj]%'"));
  46.  
  47.  
  48. $perPage = 10;
  49. if (is_numeric($_REQUEST['page'])) {
  50. $page = (int) $_REQUEST['page'];
  51. if ($page < 1) {
  52. $page = 1;
  53. }
  54. } else {
  55. $page = 1;
  56. }
  57. $start = ($page - 1) * $perPage;
  58. $query = "select * from poradniki where nazwa like '%$formData[szukaj]%' || opis like '%$formData[szukaj]%' || nazwa_small like '%$formData[szukaj]%' order by licznik desc LIMIT $start, $perPage";
  59. $result = mysql_query($query);
  60. while ($record = mysql_fetch_array($result)) {
  61.  
  62.  
  63.  
  64. <div class="ui-state-highlight-opis ui-corner-all" style="margin-top: 20px; padding: 0 .7em;">
  65.  
  66. <b><h2><A HREF="przekierowanie.php?link='.$record['nazwalink'].'">'.$record['nazwa'].'</A></h2></b>Opis: '.$record['opis'].'<br/><br/>Data dodania: 12.03.2004<br/><A HREF="/link4sms/link.php?link='.$record['nazwalink'].'">Zobacz szczegóły</a></div>';
  67.  
  68.  
  69.  
  70.  
  71. }
  72.  
  73.  
  74.  
  75. $prev = $page - 1;
  76. $next = $page + 1;
  77. $prevLink = $_SERVER['PHP_SELF'] . '?action=wyszukiwanie&page=' . $prev;
  78. $nextLink = $_SERVER['PHP_SELF'] . '?action=wyszukiwanie&page=' . $next;
  79. $a = $page*10;
  80. $b = mysql_num_rows(mysql_query("select * from poradniki where nazwa like '%$formData[szukaj]%' || opis like '%$formData[szukaj]%' || nazwa_small like '%$formData[szukaj]%'"));
  81.  
  82. if ($b < 11){
  83. }else{
  84. if ($page == 0 or $page == 1){
  85. echo '<br><center>Brak poprzedniej strony | <a href='.$nextLink.'>Następna strona</a></center>';
  86. }else{
  87. if ($b >= $page*10){
  88. echo '<br><center><a href='.$prevLink.'>Poprzednia strona</a> | <a href='.$nextLink.'>Następna strona</a></center>';
  89. }else{
  90. echo '<br><center><a href='.$prevLink.'>Poprzednia strona</a> | Brak więcej wyników</center>';
  91.  
  92. }
  93. }
  94. }
  95.  
  96.  
  97. }else{
  98.  
  99. }
  100. }
  101. ?>


Przy zmienie strony tak jak by nie czytało zmiennej z ciasteczka.


--------------------
filmy podobne do - wyszukiwarka podobnych filmów
motywacja do działania - Bądź Lepszy
Go to the top of the page
+Quote Post
nospor
post 9.11.2011, 20:39:57
Post #7





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




if ($action == "wyszukiwanie"){

Czemu całość robisz dopiero gdy wyślesz formularz? W ogóle nie przeczałeś tego co pisałem a teraz piszesz, ze robisz po mojemu. Nie, nie robisz po mojemu. Robisz po swojemu.

Z danych z sesji masz korzystać zawsze, niezależnie czy form był wysłany czy nie.
A do sesji masz zapisywać tylko gdy form jest wysłany. Przeczytaj jeszcze raz arta uważnie. Przecież tam przykład doskonale to pokazuje.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

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: 13.08.2025 - 23:12