Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [mysql] Nie mam pomysłu na zapytanie dobre..., może ktoś pomoże
in5ane
post
Post #1





Grupa: Zarejestrowani
Postów: 1 335
Pomógł: 34
Dołączył: 9.11.2005
Skąd: Wrocław

Ostrzeżenie: (10%)
X----


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ć.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
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:
  1. <?php
  2. $result = mysql_query('JAKIEŚ_ZAPYTANIE') or die(mysql_error());
  3. ?>

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')
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: 26.12.2025 - 17:36