wyszukiwarka mysql

0

Stworzyłem baze adrsową w mysql, i mam następujący problem:

Oto przykładowa tabela

id |Imie |Nazwisko


1 |Piotr |Kowalski
2 |Tomek |Ptak

szukane kryteria wprowadzam w formularzu itd, mam 2 zmienne $imie i $nazwisko
i teraz mam zapytanie "SELECT * FROM nkt WHERE nazwisko='$anazwisko' OR imie='$aimie'";

jeżeli użyje operatora OR to w przpadku szukania np. Piotr Ptak (czyli imie pierwszego wpisu a nazwisko drugiego) wyświetla mi obie pozycje chociaż żadna nie spełnia moich kryteri, w takim przypadku nie powinien nic pokazać, więc spróbowałem z operatorem AND i tu też mam problem ponieważ jeżeli nie wypełnie któregoś pola w formularzu np. nie podam imienia, to nic mi nie znajduje.

A więc jak zrobić tak aby w przypadku operatora AND on nie brał pod uwagę pustej zmiennej lub w przypadku OR szukał rekordu który zawiera w sobie obie zmienne ($imie i $nazwisko).

0

Widzę dwa sposoby: 1 - kontrola zawartości zmiennych przed podstawieniem do zapytania SQL
2 - poeksperymentuj z SQL-ową składnią like = '%cos%'

0
if ($anazwisko)
{
    $search = 'nazwisko = "' . $anazwisko . '"';
}
if ($aimie)
{
    $search .= ($search?' OR ':null) . 'nazwisko = "' . $aimie. '"';
}


"SELECT * FROM `nkt` WHERE " . $search;
0

Ok działa, tylko jeden bląd był zamiast OR ma być AND, a teraz jak zrobić to samo tylko z trzema zmiennymi $imie $nazwisko $ulica

0

Analogicznie.

if ($aulica)
{
    $search .= ($search?' OR ':null) . 'ulica= "' . $aulica. '"';
}
0

czy nie lepiej użyć LIKE?

0
DarkAdex napisał(a)

czy nie lepiej użyć LIKE?

like tu nie pomoże - jedynie dyamicxzne genoane wnków

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.