Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [PHP]Wyszukiwarka
Xart
post
Post #1





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Witam nie wiem jak wykonać jedną z części mojego skryptu a mianowicie.
Mam tabele w bazie eventy i tam miasto i wojewodztwo i pare innych rzeczy ale mniejsza oto bo chodzi mi tylko o sam sposób.
Zakładamy, że mam pola do wyszukiwarki i przekazuje dane metodą GET i jest do wyboru miasto i wojewodztwo i po wciśnięciu szukaj na dole ma wyświetlić liste znalezionych wyników. I teraz chodzi mi czy da radę zrobić to na jednym zapytaniu tzn.

SELECT FROM ... WHERE miasto=$_GET['miasto'] AND wojewodztwo=$_GET['wojewodztwo'] i chodzi mi oto, że np ktoś poda tylko jeden parametr czyli np samo miasto to żeby skrypt szukał poprawnie. bo mógłbym zrobić to if'em i kilka zapytań że jeżeli dał samo miasto to szuka miasto, wojewodztwo szuka wojewodztwa a jak oba to 3 zapytanie.
Da się to zrobić na jednym ? Bo jak nie poda mi wojewodztwa to to zapytanie będzie wyglądało tak ..... AND wojewodztwo = '' a w bazie takiego wyniku nie znajdzie. Można dodać jakoś isstet czy coś ?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Xart
post
Post #2





Grupa: Zarejestrowani
Postów: 267
Pomógł: 6
Dołączył: 8.04.2013

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


Napisałem sobie na tescik skrypt do wyszukiwania i wszystko działa oprócz daty:

  1. public function szukaj() {
  2. if(isset($_POST['wyslano'])) {
  3. $sport = $this->mysqli->real_escape_string($_POST['sport']);
  4. $wojewodztwo = $this->mysqli->real_escape_string($_POST['wojewodztwo']);
  5. $miasto = $this->mysqli->real_escape_string($_POST['miasto']);
  6. $kategoria = $this->mysqli->real_escape_string($_POST['kategoria']);
  7. $data_od = $this->mysqli->real_escape_string($_POST['data1']);
  8. $data_do = $this->mysqli->real_escape_string($_POST['data2']);
  9. switch($miasto){
  10. case '': $miasto = "%"; break;
  11. }
  12. switch($kategoria){
  13. case '': $kategoria = "%"; break;
  14. }
  15. switch($data_od){
  16. case '': $data_od = "0001-01-01"; break;
  17. }
  18. switch($data_do){
  19. case '': $data_do = "9999-12-31"; break;
  20. }
  21. $wyszukiwanie = $this->mysqli->query("SELECT * FROM `wydarzenia` WHERE `status` = 1 AND `sport` LIKE '$sport' AND `wojewodztwo` LIKE '$wojewodztwo' AND `miasto` LIKE '$miasto' AND `kategoria` LIKE '$kategoria' AND CURDATE() BETWEEN '$data_od' AND '$data_do'");
  22. $sql = $wyszukiwanie->num_rows;
  23. echo $sql;
  24. }
  25. }


jeżeli podam jakiś przedział daty nawet 1 dzien od np 30 do 31 niezależnie od tego zwraca że znaleziono wszystkie wyniki a jak podam od 1 do 1 albo od 2 do 2 to zwraca 0
Mimo np że między 30 a 31 nie mam w bazie nic to itak zwróci wszystkie zaptania jakie są tak samo np 17-18

Ten post edytował Xart 2.05.2014, 12:21:31
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 17.10.2025 - 00:12