if record empty don't show it.
wil maar niet werken.
ik wil dit:
als adress niet is ingevuld; laat de id en naam ook niet zien.
kan je dit niet uitwerken met php wanneer je de gebruikers laat zien die WEL een adres ingevuld hebben?
dat weet ik dus niet... dat zou mooi zijn...
$sql = "SELECT id, name, adress FROM klanten WHERE adress <> ''";
$sql = "SELECT id, name, adress FROM klanten WHERE adress > 0 ";
Dus als je dingen wilt laten zien die alleen zijn ingevuld moet je een waarde opgeven met groter dan 0.
Dan kun je in je sql ingeven dat hij standaard 0 moet invullen als er niets staat of iets dergelijks.
Alleen is dit niet netjes wat je doet. Een adres is een string (een tekst) en die ga jij nu vergelijken met een getal. Ja dat werkt, maar het is zeker geen nette oplossing.
Code (php)
1
2
3
2
3
$sql = "SELECT id, name, adress
FROM klanten
WHERE adress > 0 AND adress LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
FROM klanten
WHERE adress > 0 AND adress LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
Stel ik wil dat sql de waarden met 0 niet moet laten zien maar wel de zoekactie...
Hoe laat ik het zo filteren dat hij de zoekactie uitvoert maar de records waar een 0 in zit niet laat zien ?
Netter zou het echter zijn om het veld gewoon leeg te laten als er geen adres ingevuld is en dan te controleren of het veld leeg is of niet.
Thanx ik ga het proberen wanneer ik over een paar uur weer op kantoor ben!
Joren de Wit op 01/04/2012 18:18:20:
Dit heeft natuurlijk niet zoveel zin. Als je al een LIKE statement erin zet, dan worden daarmee automatisch al alle "lege" velden eruit gefilterd. Dat "address != 0" is dus niet meer nodig. Tenzij je een lege waarde opgeeft in het LIKE statement, maar dat is al helemaal niet handig.
Daarnaast vraag ik me uberhaupt af waarom je een != 0 erin zou willen zetten (of > 0). Als het een string is kan je ook gewoon op een lege string testen:
Hiermee worden null waardes eruit gehaald en lege strings.
PS ik heb <> als operator gebruikt en niet != beide werken wel.
Moet je juist niet de controle hebben op het form? Kan aan mij lichen maar zo gaat het meestal....
and stel ik heb meerdere LIKES hoe kan ik dan zo filteren dat hij uiteindelijk de resultaten met een 0 niet laat zien?
Volgens mij laat ie alleen de 0 zien als je een LIKE '%0%' hebt.
Ja, dat klopt alleen stel dat ik nu op een andere term zoek bijvoorbeeld op naam laat hij de namen zien die een 0 bevatten ik wil dat hij de resultaten waar een 0 bij adres staat niet wordt weergeven... ookal zoek je op naam en die tabel bevat een 0
Zorg ervoor dat je kolom in je tabel 'NULL' is. Dan kun je wel de clause WHERE kolom IS NOT NULL gebruiken.
Robby Alexander op 02/04/2012 13:56:28:
Ja, dat klopt alleen stel dat ik nu op een andere term zoek bijvoorbeeld op naam laat hij de namen zien die een 0 bevatten
Als je op een andere term zoekt, waarom zou ie dan een 0 vinden? Lijkt mij niet logisch in ieder geval. Ik zie het probleem niet.
Code (php)
1
2
3
4
5
2
3
4
5
$sql = "SELECT id, name, address
FROM klanten
WHERE address IS NOT NULL
AND address LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'
OR name LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
FROM klanten
WHERE address IS NOT NULL
AND address LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'
OR name LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
Als ik dan zoek op 0 krijg ik nog steeds de waarden met een 0
mijn kolom address is NULL standaard in de database [correctie]
Gewijzigd op 02/04/2012 14:11:25 door Robby Alexander
WHERE ... AND ... OR ...
Maar gebruik haakjes:
WHERE (... AND ...) OR ...
of
WHERE ... AND (... OR ...)
Deze twee geven heel andere resultaten.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
$sql = "SELECT id, name, address
FROM klanten
WHERE
address LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'
OR name LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
AND address > 0
FROM klanten
WHERE
address LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'
OR name LIKE '%" . mysql_real_escape_string($_POST['search']) . "%'";
AND address > 0
dan zeg ik eigenlijk kijk naar de naam "zoekterm" EN of het adres groter is dan 0
Opgelost!
Toevoeging op 02/04/2012 14:56:10:
Bedankt voor de reacties! Santhe, Joran, Bas, Erwin, Allemaal bedankt especially Santhe die maakte me even wakker :)
Waarom vergelijk je met een getal????
Maar ik heb nog een vraagje... stel dat ik een gedeelte van een naam zoek en een gedeelte van het adress hoe moet dat dan?
Dus stel ik heb 3 maal records met de naam Hans en een hans woont op de Hoofdstraat en ik wil zoeken naar:
hans hooft hoe krijg ik dan alleen Hans op de Hooftstraat?