Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [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
Pyton_000
post
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

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


nie, ifem dodajesz tylko warunek do zapytania, a nie całe zapytania
Go to the top of the page
+Quote Post
Xart
post
Post #3





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

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


Mógłbyś podać przykład bo nigdy nie dawałem warunku w zapytaniu poza WHERE LIKE i tyle ;d
A może lepiej użyć LIKE ?

NP dam województwo i będzie to pole wyboru (select) i jak nie wybierze to będzie value="%" wieloznacznik i potem będę sprawdzał LIKE % będzie zawsze TRUE czyli tak jakby nie sprawdzało. Można tak ?

Ten post edytował Xart 1.05.2014, 22:53:30
Go to the top of the page
+Quote Post
Turson
post
Post #4





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Cytat(Xart @ 1.05.2014, 22:29:30 ) *
NP dam województwo i będzie to pole wyboru (select) i jak nie wybierze to będzie value="%" wieloznacznik i potem będę sprawdzał LIKE % będzie zawsze TRUE czyli tak jakby nie sprawdzało. Można tak ?

Można
Go to the top of the page
+Quote Post
Xart
post
Post #5





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

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


No i w związku z tym kolejny problem (IMG:style_emoticons/default/biggrin.gif)
Jak mam date w formacie DD-MM-RRRR
to jak sprawdzać date od do ? tzn ktos podaje od 01-05... do 03-05 ?
Go to the top of the page
+Quote Post
Turson
post
Post #6





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


Zmień na date czyli RRRR-MM-DD i "SELECT... WHERE CURDATE() BETWEEN data_od AND data_do"
Go to the top of the page
+Quote Post
Xart
post
Post #7





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

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


No i kolejny problemik (IMG:style_emoticons/default/biggrin.gif)
Żeby użytkownicy nie wpisywali daty dodałem datepicker i działa on na tym polu, na którym jest id="datepicker"

wywołuje wcześniej funkcję js

  1. <script type="text/javascript">
  2. $(function(){
  3.  
  4. // Datepicker
  5. $('#datepicker').datepicker({
  6. inline: true
  7. });
  8.  
  9. //hover states on the static widgets
  10. $('#dialog_link, ul#icons li').hover(
  11. function() { $(this).addClass('ui-state-hover'); },
  12. function() { $(this).removeClass('ui-state-hover'); }
  13. );
  14.  
  15. });
  16. </script>


da się to jakoś zrobić, żeby dodać nowe ID albo żeby działało na 2 pola ?
bo mam szukaj od i szukaj do a nie mogą mieć tego samego id dwa inputy ;/
Go to the top of the page
+Quote Post
Turson
post
Post #8





Grupa: Zarejestrowani
Postów: 4 291
Pomógł: 829
Dołączył: 14.02.2009
Skąd: łódź

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


To nadaj im klasę i zmień $('#datepicker') na $('.datepicker') (IMG:style_emoticons/default/ohmy.gif)
Go to the top of the page
+Quote Post
Xart
post
Post #9





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
ber32
post
Post #10





Grupa: Zarejestrowani
Postów: 332
Pomógł: 22
Dołączył: 6.07.2010

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


tu jest błąd

  1. switch($data_od){
  2. case '?': $data_od = "0001-01-01"; break;
  3. }
  4. switch($data_do){
  5. case '?': $data_do = "9999-12-31"; break;
  6. }
Go to the top of the page
+Quote Post
Xart
post
Post #11





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

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


@UP
Nie błąd był w zapytaniu (IMG:style_emoticons/default/smile.gif) już sobie poradziłem ;p
Go to the top of the page
+Quote Post

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: 14.10.2025 - 20:19