den første tabel indeholder 50 felter.... (entlig er det kun ca. 25 af felterne det er nødvendigt at søge i... så skal der evt laves et array med disse felters navne ?) de 3 sidste tabeller indeholder 3 felter hver id, kunde_id & opt
kunde_id referere til sel_kunde tabellen\'s id felt
Jeg vil så gerne lave en fritekst søgning hvor søgestrengen kreres \"on the fly\"
Jeg indtaster eks. søgeorene \"Catering møde\" (feltet de indtastes i hedder fri)
Så skal der kreres en søgning der søger i alle ovennævnte tabeller og i alle ovennævnte felter
Jeg kan ikke hitte ud af at få den til at lave det sådant her
select kunde_id, opt from sel_lok_typpe where kunde_id like \'%catering%\' or kunde_id like \'%møde%\'or opt link \'%catering%\' or opt like \'%møde%\'
o gtil slut skal den søge i sel_kunde og så sotere efter et bestemt felt i sel_kunde tabellen.... så det skal vel entlig laves som en join søgning....... vil det blive alt for langsomt at gøre det på den måde ??
Hvordan skal jeg evt. ellers gøre det ?? Vi starter med 60 point... og kan snilt hæve det hvis de re rnogen der kan hitte ud af det!
kan du forklare lidt om hvad de forskellige linier gør. så det er muligt selv at bygge vidre :-) ??
$felter = array(\"fee\", \"foo\", \"foom\"); // her lister jeg de felter der skal søges i $sogeord = \"ord\"; // dette er de ord der skal søges på... de kommer dog fra en formular. og det skal svære muligt at sæge på mere end 1 ord uafhængigt af hinanden........
$komma_sep = implode(\", \",$felter); // listen med felter der skal søges i her.... ?
$sql = \"SELECT $komma_sep FROM bar WHERE \"; // starten på min søgning, bar erstattes med mit database navn ?
foreach($felter as $f) { // ??
$where[] = \"$f LIKE \'%$sogeord %\'\"; // $where[] hvad gør den... syntes ikke variablen er defineret nogen steder før ?? }
$komma_sep = implode(\", \",$felter); // limer alle felter sammen \", \" som lim så det bliver en lang streng
foreach($felter as $f) { // gentag en lykke for alle felter. $f bliver navnet på hvert felt.
$sql = \"SELECT $komma_sep FROM bar WHERE \"; // starten på min søgning, bar erstattes med mit database navn ? JEPS
$where[] = \"$f LIKE \'%$sogeord %\'\"; // $where blever en dynamisk array, med et element for hvert felt i $felter
$sql .= implode(\" OR \", $where); // tager vores start sql som vi før lavede og sætter den sammen med det nye $where array som ci somer om til en streng med \" OR \" som lim.
print($sql); // skriver bare hele sætningen ud
du skal i stedet bruge $sql sammen med mysql_query() ... men start bare med at få den til at skrive en sql sætning ud der virker
$sql1 = \"SELECT $komma_sep FROM sel_kunde WHERE \";
foreach($felter as $f) {
$where[] = \"$f LIKE \'%$sogeord %\'\"; }
$sql1 .= implode(\" OR \", $where);
print($sql1); ?>
Og her er strengen der kommer ud af det SELECT tlf_paa_stedet, website, pris_eks_lok FROM sel_kunde WHERE tlf_paa_stedet LIKE \'%98 198%\' OR website LIKE \'%98 198%\' OR pris_eks_lok LIKE \'%98 198%\'
De 2 søgeord skal opfattes som enkelte ord.. så snart der er mellemrum i orene så skal de opfattes som enkelte ord.... således at strengen komme rtil at se sådant her ud
SELECT tlf_paa_stedet, website, pris_eks_lok FROM sel_kunde WHERE tlf_paa_stedet LIKE \'%98%\' OR tlf_paa_stedet LIKE \'%198%\' OR website LIKE \'%98%\' OR website LIKE \'%198 %\' OR pris_eks_lok LIKE \'%98%\' OR pris_eks_lok LIKE \'%198%\'
variablen $sogeord er den streng der vil komme fra søgeformularen.....
Kunne forestille mig noget ala $sogeord_sep = implode(\" \",$sogeord);
Men hvor skal det ind og hvordan skal det bygges på så der laves en xxxx LIKE \'%xxx%\' OR Det skal jo gentages x antal gange afh. hvor mange søgeord der er....
kom lige til at tænke på om man kan gøre det sådant at hvis folk skriver \"du er sød\" altså i mellem \" \" så bliver det opfattet som én streng og ikke som 3 selvstændige ord... ?
evt bare lave det med et + tegn mellem hvet ord du+er+sød fest
så vil der blive søgt på like \'%du er sød%\' OR like \'%fest%\'
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.