Po pierwsze to jeśli jakieś zapytanie nie za bardzo chce działać, to stosuj taki zapis:
<?php
?>
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="_manualPo 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_likePo 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')