07. april 2007 - 18:31Der er
4 kommentarer og 1 løsning
Søge funktion viser alt i databasen
Jeg arbejder lidt på en søge funktion, problemer er nu at uanset hvad jeg søger efter så lister den alt hvad der i databasen uanset om jeg skriver et navn præcist som det står i databasen, jeg har også prøvet at søge på id men da lister den også alt..
$result = mysql_query(" SELECT * FROM databasen WHERE id LIKE '%$bookid%' OR name LIKE '%$demoname%' OR sang LIKE '%$map%' OR abc LIKE '%$mod%' OR date LIKE '%$date%' ");
Fixxer's løsning ville nok løse dit problem, dog synes jeg det er utrolig grimt med så mange LIKE paramtere hvis felterne reelt ikke er udfyldt, du bør checke på dit input og konstruere din SQL ud fra det så du får optimeret din søgning, et eksempel:
if (isset($bookid) && !empty($bookid)) { $tmpsql[] = "id = '$bookid'"; } if (isset($demoname) && !empty($demoname)) { $tmpsql[] = "name LIKE '%$demoname%'"; } if (isset($map) && !empty($map)) { $tmpsql[] = "sang LIKE '%$map%'"; } if (isset($mod) && !empty($mod)) { $tmpsql[] = "abc LIKE '%$mod%'"; } if (isset($date) && !empty($date)) { $tmpsql[] = "date LIKE '%$date%'"; }
$result = mysql_query("SELECT * FROM databasen WHERE ". implode(' AND ', $tmpsql));
undgå også LIKE hvor det er muligt, jeg ville antage at id er en integer eller lign. derfor kan du må fordel lave en sammenligning istedet for en søgning, date kunne også godt tyde på at være et DATETIME felt eller lign. igen er LIKE langt fra optimalt, men det kræver self. lidt uddybning fra spørgers side at svare på
Ja dog ikke med nogen af jeres løsninger, jeg lavede en dropdown box med de ting jeg ville søge i og begrænsede sådan min søgning da jeg syntes din løsning virker meget indviklet (nok fordi jeg ikke har sat mig så meget ind i den endnu)
$res = mysql_query("SELECT * FROM database WHERE `$type` LIKE '%$input%' AND public=1");
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.