Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Wyszukiwarka
NickOver
post
Post #1





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Siemka
Próbuję napisać wyszukiwarkę na stronie. Ogólnie ma ona wyszukiwać rekordy z bazy danych.
Wymyśliłem coś takiego:
  1. <?php
  2. include('head.php');
  3. include('include/db.php');
  4. echo '<form action="wy.php" method="POST">
  5. <input type="text" name="a">
  6. <input type="text" name="b">
  7. <input type="text" name="c">
  8. <input type="text" name="d">
  9. <input type="submit" name="ok" value="Szukaj">
  10. </form>';
  11. if(isset($_POST['ok']))
  12. {
  13. $a = trim($_POST['a']);
  14. $b = trim($_POST['b']);
  15. $c = trim($_POST['c']);
  16. $d = trim($_POST['d']);
  17. $e = NULL;
  18. if(!empty($a)) $e .= "AND imie = '$a'";
  19. if(!empty($a)) $e .= "AND nazwisko = '$b'";
  20. if(!empty($a)) $e .= "AND woj = '$c'";
  21. if(!empty($a)) $e .= "AND rokur = '$d'";
  22. echo $e;
  23. }
  24. ?>

Lecz po kliknieciu z wpisanymi polami nie wyswietla mi nic ( w sensie $e jest pusta).
Co zrobić aby to działało?
Chyba że ktoś ma lepszy pomysł jakby to zrobić ( w sensie nie każde pole musi byc wpisane żeby działało).
Próbowałem wcześniej coś takiego:
  1. <?php
  2. include('head.php');
  3. include('include/db.php');
  4. echo '<form action="wy.php" method="POST">
  5. <input type="text" name="a">
  6. <input type="text" name="b">
  7. <input type="text" name="c">
  8. <input type="text" name="d">
  9. <input type="submit" name="ok" value="Szukaj">
  10. </form>';
  11. if(isset($_POST['ok']))
  12. {
  13. $a = trim($_POST['a']);
  14. $b = trim($_POST['b']);
  15. $c = trim($_POST['c']);
  16. $d = trim($_POST['d']);
  17. $select = mysql_query("SELECT * FROM users WHERE imie = '$a' AND nazwisko = '$b' AND rokur = '$c' AND woj = '$d' ORDER BY id");
  18. while($e = mysql_fetch_array($select))
  19. {
  20. echo ''.$e["imie"].' '.$e['nazwisko'].'';
  21. }
  22. }
  23. ?>

Ale niestety nie działa jeśli wszystko nie jest wpisane ;(.
Z góry dzięki za pomoc.

Ten post edytował NickOver 24.04.2014, 20:00:44
Go to the top of the page
+Quote Post
Mega_88
post
Post #2





Grupa: Zarejestrowani
Postów: 360
Pomógł: 34
Dołączył: 20.08.2011

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


Poczytaj o Like dla MySql - WHERE imie LIKE '%$a[0]%' ,czy coś w tym stylu worriedsmiley.gif

Ten post edytował Mega_88 24.04.2014, 20:30:41
Go to the top of the page
+Quote Post
mmmmmmm
post
Post #3





Grupa: Zarejestrowani
Postów: 1 421
Pomógł: 310
Dołączył: 18.04.2012

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


W pierwszej metodzie (poprawnej) dostajesz SQL-a takiego:
SELECT * FROM tabela WHERE AND imie='anna' AND woj='slaskie'
Widzisz co jest nie tak?
Najłatwiej wybrnąc z tego w ten sposób, że tam gdzie masz $e=NULL daj $e='1=1'. Wtedy twój SQL będzie wyglądał tak:
SELECT * FROM tabela WHERE 1=1 AND imie='anna' AND woj='slaskie'
Go to the top of the page
+Quote Post
nospor
post
Post #4





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




Tu masz dokladnie opisane jak to sie robi
http://nospor.pl/wyszukiwarka-zapytanie-za...d-warunkow.html


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

"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
NickOver
post
Post #5





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Cytat(mmmmmmm @ 25.04.2014, 07:30:13 ) *
W pierwszej metodzie (poprawnej) dostajesz SQL-a takiego:
SELECT * FROM tabela WHERE AND imie='anna' AND woj='slaskie'
Widzisz co jest nie tak?
Najłatwiej wybrnąc z tego w ten sposób, że tam gdzie masz $e=NULL daj $e='1=1'. Wtedy twój SQL będzie wyglądał tak:
SELECT * FROM tabela WHERE 1=1 AND imie='anna' AND woj='slaskie'


Wiem jak będzie wyglądało zapytanie. W sumie nic to nie przeszkadzało, poniewaz na początku i tak doszło by sprawdzanie statusu danego użytkownika więc zapytanie było by poprawne. W nensie chodzi mi o to '1=1' lecz problem był taki iż $e była pusta mimo wpisania danych, tj nic się nie wyswietlało.

Dzięki Nospor za link wink.gif

Cytat(mmmmmmm @ 25.04.2014, 07:30:13 ) *
W pierwszej metodzie (poprawnej) dostajesz SQL-a takiego:
SELECT * FROM tabela WHERE AND imie='anna' AND woj='slaskie'
Widzisz co jest nie tak?
Najłatwiej wybrnąc z tego w ten sposób, że tam gdzie masz $e=NULL daj $e='1=1'. Wtedy twój SQL będzie wyglądał tak:
SELECT * FROM tabela WHERE 1=1 AND imie='anna' AND woj='slaskie'


Wiem jak będzie wyglądało zapytanie. W sumie nic to nie przeszkadzało, poniewaz na początku i tak doszło by sprawdzanie statusu danego użytkownika więc zapytanie było by poprawne. W nensie chodzi mi o to '1=1' lecz problem był taki iż $e była pusta mimo wpisania danych, tj nic się nie wyswietlało.

Dzięki Nospor za link wink.gif
Go to the top of the page
+Quote Post
nospor
post
Post #6





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




To juz dziala? Bo ten twoj ostatni post nic nie mowi czy dziala czy nie smile.gif


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

"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
NickOver
post
Post #7





Grupa: Zarejestrowani
Postów: 332
Pomógł: 10
Dołączył: 13.03.2014
Skąd: Bydgoszcz

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


Cytat(nospor @ 25.04.2014, 09:26:22 ) *
To juz dziala? Bo ten twoj ostatni post nic nie mowi czy dziala czy nie smile.gif

Jeszcze nie dotykałem ponieważ rano musiałem wcześniej wyjść i dopiero wróciłem. Jutro zedytuje i napiszę co nie działa biggrin.gif
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 Aktualny czas: 20.08.2025 - 19:23