09. juni 2006 - 22:13Der er
11 kommentarer og 1 løsning
Hjælp til MYSQL i en søge-funktion
Jeg har to tabeller:
- forumemner - forumindlaeg
Jeg vil så have, at man kan søge på et ord, og så hvis den finder noget i forumemner eller forumindlaeg, så udskriver den emnenavnet. Altså hvis den finder noget matchende i forumindlaeg skal den bruge "tilid" til at identificere id'et på det emne, som det hører til i forumemner. Dog hvis der er to eller ti indlæg under samme emne, så skal det stadig kun udskrive emnet én gang. Kan dette laves ? (:
id int(11) auto_increment emne text indlaeg text - det tekst der er skrevet i emnet. tilforum text - det forum, emnet er placeret i. forfatter text vis text - om emnet skal vises eller ej; altså om det er slettet eller ej. ip text status text
-------------
id int(11) auto_increment emne text indlaeg text - teksten i indlægget. tilid text - hvilket emne, indlægget ligger i. tilforum text - hvilket forum, det emne, som indlægget tilhører, er placeret i. forfatter text vis text ip text - om indlægget skal vises eller ej; altså om det er slettet eller ej. dato text
Endelig spørg hvis der er det mindste du/I ikke forstår (:
Jeg kan ikke helt gennemskue hvordan dine tabeller er bygget om. Men du skal bruge en SQL ala:
//Tjekker forumemner... $query = mysql_query("SELECT * FROM forumemner WHERE emne LIKE '%" . $det_vi_kigger_efter . "%'"); //så skriver du dine rækker der findes ud her.
//Tjekker forumindlæg... $query = mysql_query("SELECT * FROM forumemner AS fe INNER JOIN forumindlaeg AS fi ON fe.id = fi.tilid WHERE fi.indlaeg LIKE '%" . $det_vi_kigger_efter . "%' GROUP BY fi.tilid"); //så skriver du dine rækker der findes ud her.
Den skal jo KUN hente info fra forumemner, men tjekke om der er noget i forumindlaeg der matchede - hvis der var det skulle den hente alt det hele fra fe WHERE id = fi.tilid ? :P
Jeg er igang med at prøve at få det til at virke, men den glemmer lige at hente fra forumemner .. den henter fra forumindlæg, ellers gør den det rigtigt :P
$query = mysql_query("SELECT * FROM forumemner AS fe INNER JOIN forumindlaeg AS fi ON fe.id = fi.tilid WHERE fi.indlaeg LIKE '%" . $seek . "%' OR fi.emne LIKE '%" . $seek . "%' OR fe.emne LIKE '%" . $seek . "%' OR fe.indlaeg LIKE '%" . $seek . "%' GROUP BY fe.id"); << den finder kun ting i forumindlaeg der matcher $seek, det er højst sandsynligt pga. ON fe.id= fi.tilid .. Hvordan kan det gøres så den også tjekker om $seek forekommer i forumemner ? (:
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.