09. oktober 2006 - 01:39Der er
11 kommentarer og 1 løsning
Søgning i databasen
Jeg har leget lidt med at lave en søgefunktion, der søger i min databasen.
Pr. standard søger vha. et tekstfelt, men det er også muligt at lave en udvidet søgning hvor man fx bestemmer prisniveauet.
Her er et uddrag af koden, og det her det giver problemer:
if(isset($_POST['sSearch'])) { $search = mysql_real_escape_string($_POST['sSearch']); $sql = "SELECT * FROM model"; $sql .= " INNER JOIN mobil"; $sql .= " ON model.mobil_id = mobil.mobil_id"; $sql .= " WHERE model_navn LIKE '%".$search."%' "; //$sql .= " OR mobil_producent LIKE '%".$search."%' ";
if (@$_POST['pris'] == 1) { $sql .= " AND pris <= 99 "; }
Jeg har udkommenteret OR delen for ellers virker 'pris' ikke medmindre man søge på et ord samtidig. Men uden OR kan man godt vælge en pris uden at skulle indtaste noget i tekstfeltet, så MIT PROBLEM er, at man skal kunne søge på den valgte pris uden at indtaste noget i feltet, og samtidig skal man kunne søge i de to attributter(model_navn og mobil_producent).
Det er k******** løgn, har bare bøvlet med det. Men nu spiller det ;)
Smid et svar
En anden ting, vil gerne have den til at man også skal kunne søge i begge på een gang (mobil_producent og model_navn): $sql .= " OR mobil_producent AND model_navn LIKE '%".$search."%') ";
$sql .= " WHERE (model_navn LIKE '%".$search."%' "; $sql .= " OR mobil_producent LIKE '%".$search."%') ";
Men ud over det vil jeg gerne have at man kan søge i begge på een gang, altså model_navn kunne være lig med 6600, og mobil_producent = nokia, så vil jeg gerne have at man kan søge på nokia 6600, og den skal så komme frem. Troede dette ville gøre det:
$sql .= " WHERE (model_navn LIKE '%".$search."%' "; $sql .= " OR mobil_producent LIKE '%".$search."%' "; $sql .= " OR mobil_producent AND model_navn LIKE '%".$search."%') ";
Tja hmmm.... så skal jeg dele søgelinjen op i to! men vil du ikke mene at dette burde virke:
$sql .= " WHERE (model_navn LIKE '%".$search."%' "; $sql .= " OR mobil_producent LIKE '%".$search."%' "; $sql .= " OR mobil_producent AND model_navn LIKE '%".$search."%') ";
$sql .= " WHERE (model_navn LIKE '%".$search."%' "; $sql .= " OR mobil_producent LIKE '%".$search."%' "; $sql .= " OR CONCAT(mobil_producent,' ',model_navn) LIKE '%".$search."%') ";
Selvfølgelig skal jeg bruge concat. Det havde jeg helt glemt. Tester lige
Synes godt om
Ny brugerNybegynder
Din løsning...
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.