Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 1 335 Pomógł: 34 Dołączył: 9.11.2005 Skąd: Wrocław Ostrzeżenie: (10%)
|
Witam, nie mam pomysłu na dobre zapytanie, może mógłby mi ktoś pomóc.
Struktura formularza: Nick (tekstowe) Wiek pomiędzy (lista rozwijana) a (lista rozwijana) Płeć (lista rozwijana) Miejscowość (tekstowe) Cel ogłoszenia (lista rozwijana) Kolor oczu (lista rozwijana) Kolor włosów (lista rozwijana) Długość włosów (lista rozwijana) Nie wszystkie pola muszą być wypełnione. Aha i ma uwzględnić, żeby wyszukiwać osoby tylko ze statusem równym 1 czyli STATUS = '1' Z góry dziękuję za pomoc. Najlepiej jakby to miało ręce i nogi. Po prostu nie wiem jak to za bardzo dobrze stworzyć. |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 1 033 Pomógł: 125 Dołączył: 17.09.2005 Skąd: Żywiec Ostrzeżenie: (0%)
|
Po pierwsze to jeśli jakieś zapytanie nie za bardzo chce działać, to stosuj taki zapis:
Dzięki temu w oknie przeglądarki pojawi się jeden, trochę bardziej czytelny błąd. Więcej informacji tutaj: musql_error" title="Zobacz w manualu PHP" target="_manual Po drugie napisałem: Cytat Sprawdzasz wszystkie pola formularza i jeśli nie są puste/domyślne to dodajesz nowy warunek do tego zapytania Czyli jeśli ktoś nie wypełni żadnego pola w formularzu, to powinieneś uzyskać takie zapytanie: SELECT * FROM users WHERE status = '1' Jeśli ktoś uzupełni jedno pole, to coś w rodzaju: SELECT * FROM users WHERE status = '1' AND nick = '$nick' Jeśli dwa pola, to coś w rodzaju: SELECT * FROM users WHERE status = '1' AND nick = '$nick' AND kolor_oczu = '$kolor_oczu' itd. Po prostu sprawdzasz sprawdzasz czy dane pole tekstowe z formularza jest puste empty" title="Zobacz w manualu PHP" target="_manual. Co do tej wartości domyślnej, to chodziło mi o pola SELECT. Nie wiem jak je utworzyłeś, ale jeśli zrobiłeś coś w rodzaju: Kod <select name="plec"> <option value="0">Wybierz płeć</option> <option value="1">Kobieta</option> <option value="2">Mężczyzna</option> </select> to sprawdzasz, czy $_POST['plec'] jest równe zero. Jeśli tak, to znaczy że użytkownik nie "wypełnił" tego pola, i nie dodajesz warunku do zapytania. A teraz kilka szczegółów. Po pierwsze to zapis: nick LIKE '$nick' wydaje mi się bez sensu. Jeśli chcesz znaleźć dokładnie takie nicki jak podany w formularzu, to użyj: nick = '$nick'. Jeśli natomiast chcesz znaleźć nicki podobne, to dodaj tam jeszcze znaczek procenta: nick LIKE '$nick%'. Więcej informacji tutaj: http://dev.mysql.com/doc/refman/5.0/en/str...l#operator_like Po drugie zastanów się, czy na pewno warto używać zapisu: wiek BETWEEN '$wiek1' AND '$wiek2'. Co będzie, gdy użytkownik poda tylko $wiek1 albo tylko $wiek2. IMHO lepiej będzie rozbić to na dwa warunki: (wiek >= '$wiek1') AND (wiek <= '$wiek2') |
|
|
|
in5ane [mysql] Nie mam pomysłu na zapytanie dobre... 8.05.2007, 17:59:45
Kicok Zakładam, że chodzi ci o pobranie danych z bazy sp... 8.05.2007, 19:36:05
Cienki1980 Jako uzupełnienie tego co napisał Kicok zrobiłbym ... 8.05.2007, 19:42:29
Kicok W sumie jeśli ma być STATUS = '1' to można... 8.05.2007, 19:44:26
in5ane Ale ja pisałem (jeżeli nie to teraz pisze), że nie... 8.05.2007, 20:40:29
Cienki1980 Przeczytaj dokładnie to co napisał Kicok w swojej ... 8.05.2007, 21:34:41
in5ane Czy tak?
SELECT * FROM users WHERE status = ... 9.05.2007, 06:11:42 
Cienki1980 Cytat(in5ane @ 9.05.2007, 07:11:42 ) ... 9.05.2007, 07:22:59
in5ane Wielkie dzięki 9.05.2007, 15:15:45 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 17:36 |