Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php]/[mysql] wyszukiwarka, like i stronicowanie
Forum PHP.pl > Forum > PHP
Lejto
Mam kod wyszukiwarki który wyszukuje mi wyniki. Chcę dodać to tego stronicowanie, mam kod mojego stronicowana ale nie wiem jak to zacząć bo wyszukiwanie jest skomplikowane.
  1. $page = htmlspecialchars($_GET['page']);
  2. $zapytanie = trim(htmlspecialchars($_POST['zapytanie']));
  3. $wartosc = htmlspecialchars($_POST['wartosc']);
  4. $h = htmlspecialchars($_GET['h']);
  5.  
  6.  
  7. if(isset($zapytanie) && ($wartosc))
  8. {
  9. $faza = $zapytanie;
  10. $podziel = explode(',',$faza);
  11. $data = date('d.m.y');
  12.  
  13. foreach ($podziel as $value)
  14. {
  15. $sql = $db->query('insert into words (word,czas) values ("'.$value.'", "'.$data.'")');
  16. }
  17.  
  18. }
  19. if($zapytanie == NULL)
  20. {
  21. $zapytanie = htmlspecialchars($_GET['q']);
  22. }
  23. if($wartosc == 'all' or $wartosc == NULL)
  24. {
  25. if($h)
  26. {
  27. echo $h;
  28. $sql = $db->query("select distinct * from linki_dane where hosting = '".$h."' and tytul like '".$zapytanie."%' or opis like '".$zapytanie."%' or tagi like '".$zapytanie."%' AND hosting =
  29. (SELECT hosting FROM linki_dane WHERE hosting '".$h."') "); // szukanie wg hostingu nie działa nie wiem czemu, dane są poprawne
  30. }
  31. else
  32. {
  33.  
  34. $sql = $db->query("select distinct * from linki_dane where tytul
  35. like '%".$zapytanie."%' or opis like '%".$zapytanie."%' or tagi like '%".$zapytanie."%'");
  36. }
  37. }
  38. else
  39. {
  40. if($h)
  41. {
  42.  
  43. $sql = $db->query("select distinct * from linki_dane where hosting = '".$h."'
  44. and tytul like '".$zapytanie."%' or opis like '".$zapytanie."%' or tagi like '".$zapytanie."%'");
  45. }
  46. else
  47. {
  48. $sql = $db->query("select distinct * from linki_dane where rozszerzenie = '".$wartosc."'
  49. and tytul like '%".$zapytanie."%' and opis like '%".$zapytanie."%' or tagi like '%".$zapytanie."%'");
  50. }
  51. }
  52.  
  53.  
  54.  
  55.  
  56. include('config.php');
  57.  
  58. $ile_na_strone = $config['szukane'];
  59. $strona = isset($_GET['p'])? $ile_na_strone * $_GET['p'] - $ile_na_strone : "0";
  60. $iles = 0;
  61. $rows = $sql->num_rows; // jak pobrać liczbęquestionmark.gif
  62. $str = $r / $ile_na_strone;
  63. $a = $r % $ile_na_strone;
  64. $page_news2 = explode(".", $str);
  65. $page_news1 = ($a!=0)? $page_news2[0] + 1 : $str; // stronicowanie
  66.  

Proszę o korektę i ewentualna optymalizację kodu.

Pozdrawiam

da się jakoś rozwiązać ten problem ze stronicowaniem i różnymi zapytaniami?
thek
Jak już napisałem w innym Twoim temacie... Kontroluj właściwie kwantyfikatory AND i OR oraz nawiasy.
A co do stronicowania to tyle się tematów przez to forum przewinęło o nim, że ręce opadają. Wyszukiwarka nie gryzie.Sam w wielu tematach gotowce dawałem więc może rusz swoje paluchy do klawiatury i nie czekaj aż ktoś Ci raczy dać gotowca, bo to forum już teraz ich ma wiele. Tylko wystarczy poszukać.
quality
Najlepie uzyj "UNION" do polaczen kilku zapytan i standardowy "LIMIT" do stronnicowania.
W twoim przypadku jesli jest spelniony dany warunek to polacz nastepne zapytanie "UNION" + nastepne pytanie.

Na koncu doda "LIMIT" do stronnicowania i po problemie.

pamietaj ze aby uzyc union musisz w kazdym z zapytan pobierac te same dane np "SELECT id, nazwa, itp FROM ..." a o łączeniu zapytan prze UNION poczytaj na necie.

Pozdrawiam
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.