Avatar billede cronaldo Nybegynder
09. juni 2006 - 22:13 Der 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 ? (:
Avatar billede jakobdo Ekspert
09. juni 2006 - 22:23 #1
Kan du komme med noget tabel struktur?
For ja, det burde kunne laves.
Avatar billede cronaldo Nybegynder
09. juni 2006 - 22:46 #2
forumemner:

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 (:
Avatar billede jakobdo Ekspert
09. juni 2006 - 22:54 #3
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.

Det burde give dig det du søger.
Avatar billede cronaldo Nybegynder
09. juni 2006 - 23:00 #4
hvorfor 2 ? :S .. og hvad er fe og fi ? :$
Avatar billede jakobdo Ekspert
09. juni 2006 - 23:03 #5
2 sql'er var lige nemmest for mig! :o)

fi og fe skal du ikke tænke på.
Du skal bare udskrive forumemne
Avatar billede cronaldo Nybegynder
09. juni 2006 - 23:15 #6
Den gør ikke det helt rigtige.

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
Avatar billede jakobdo Ekspert
09. juni 2006 - 23:16 #7
Jeg forstår dig ikke helt så.
Avatar billede cronaldo Nybegynder
09. juni 2006 - 23:42 #8
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
Avatar billede cronaldo Nybegynder
10. juni 2006 - 00:01 #9
$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 ? (:
Avatar billede jakobdo Ekspert
10. juni 2006 - 09:06 #10
Din sql herover burde nu ellers se rigtig ud.
Prøv at ret:
GROUP BY fe.id");
til:
GROUP BY fe.id") or die(mysql_error());
Avatar billede cronaldo Nybegynder
03. december 2006 - 01:09 #11
smid svar, jakobdo (:
Avatar billede jakobdo Ekspert
03. december 2006 - 08:25 #12
Et svar!
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester