Avatar billede jarobert Nybegynder
17. juni 2008 - 08:08 Der er 8 kommentarer og
4 løsninger

Hjælp til udskrivning fra 2 tabeller (MySql)

Hej.

Jeg henvender mig fordi jeg har et problem som jeg ikke kan løse selv.

Det drejer sig om at hente indhold fra 2 tabeller i en database og så vise 10 resultater ad gangen.

Jeg har lavet flg. database struktur:
Min Sql kommando ser sådan ud:

Tabel "subcat":
id_sub(int 10)
name_sub(varchar 255)

Tabel "content":
id_content(int 10)
idsub_content(int 10)
name_content(text)

Jeg har flg. Sql kommando:

SELECT subcat.*, content.*
FROM (content LEFT JOIN subcat ON subcat.id_sub=content.idsub_content)

Når jeg klikker på en Subcatagori(dem er der 30 forskellige af) får jeg alle de records der er i tabellen "content".
Jeg vil kun have dem udskrevet som relaterer til selve Subcatagorien.

Det jeg eftersøger er, at når jeg f.eks klikker på en Subkatagori "Bookstores", så kommer der kun de resultater ud som omhandler "Bookstores" og ikke dem alle som nu.

Jeg håber at I kan hjælpe.

Robert
Avatar billede erikjacobsen Ekspert
17. juni 2008 - 14:03 #1
SELECT subcat.*, content.*
FROM (content LEFT JOIN subcat ON subcat.id_sub=content.idsub_content)  WHERE name_sub='Bookstores'

(eller på det id_sub, der hører til Bookstores)
Avatar billede jarobert Nybegynder
17. juni 2008 - 16:56 #2
Det jeg gerne vil er, at uanset hvilken katagori jeg vælger, så kommer der kun de resultater frem som tilhører den bestemte katagori.
Så hvis man sætter WHERE name_sub='Bookstores' får jeg jo kun 'Bookstores' frem.
Der er 30 forskellige katagorier og meningen er at hvis du f.eks klikker på katagorien "Bookstores" får du kun resultater frem om hører til "Bookstores".
Hvis jeg klikker på en anden af de 30 katagorier f.eks "Music", skal der kun komme resultater som hører under "Music" frem.

Alle katagorier udskrives iøjeblikket med den seneste først.

Robert
Avatar billede erikjacobsen Ekspert
17. juni 2008 - 18:33 #3
Ja, og hvad er så problemet helt præcist?
Avatar billede jarobert Nybegynder
17. juni 2008 - 20:18 #4
Problemet er at med Sql sætningen SELECT subcat.*, content.*
FROM (content LEFT JOIN subcat ON subcat.id_sub=content.idsub_content)
skrives alt ud og ikke præcis det indhold som hører til den bestemte katagori.
Avatar billede erikjacobsen Ekspert
17. juni 2008 - 21:03 #5
Ja. Men sker det så ikke når du sætter den WHERE på?
Avatar billede jarobert Nybegynder
17. juni 2008 - 22:31 #6
Tak for din tålmodighed. Jeg er ikke helt med på hvad du mener med WHERE i denne forbindelse.
Så får jeg jo "kun" lige præcis et bestemt indhold ud og ikke et variabelt i forhold til, når brugeren klikker på en bestemt katagori. Jeg har svært ved at forklare det bedre.
Avatar billede erikjacobsen Ekspert
17. juni 2008 - 22:47 #7
' Så får jeg jo "kun" lige præcis et bestemt indhold ud '  - det svarer vel til det du vil jævnfør ' Hvis jeg klikker på en anden af de 30 katagorier f.eks "Music", skal der kun komme resultater som hører under "Music" frem. '

Jeg forstår fortsat ikke hvor problemet er.
Avatar billede jarobert Nybegynder
18. juni 2008 - 07:12 #8
Jeg forestiller mig at mysql sætningen skal se nogenlunde sådan her ud:
SELECT subcat.*, content.*
FROM (content LEFT JOIN subcat ON subcat.id_sub=content.idsub_content)
WHERE name_sub=name-content
Billede af katagorier:

Bookstores              Computer Games      Entertainment
Childrens stories        Family Games        Film
Comics, Magazines        Internet Games      TV
Shool Bokks              Playstation          Radio

Når man klikker på en af ovenstående katagorier skal alle emner som ligger under skrives ud. Hvis jeg følger dit foreslag, vil jeg skulle lave en sql sætning for hver katagori.
Der må være en måde hvor man laver én sætning som gælder alle katagorier.
Avatar billede jarobert Nybegynder
18. juni 2008 - 08:07 #9
Jeg har fået det til at virke , næsten.

Jeg har lavet flg. sql:

SELECT subcat.*, content.*
FROM (content LEFT JOIN subcat ON subcat.id_sub=content.idsub_content)
WHERE id_sub=colname (colname er en variabel som har flg. parametre:
Type: Numeric
Default Value: -1
Runtime Value: $_GET['id_sub'])

Mit problem er nu, at når jeg klikker på en anden katagori kan Browseren ikke vise siden: http://localhost/kindernet/3?id_sub=3

Der kommer dette 3? foran id.
Hvad gør jeg nu forkert?
Avatar billede erikjacobsen Ekspert
18. juni 2008 - 08:46 #10
"Hvis jeg følger dit foreslag, vil jeg skulle lave en sql sætning for hver katagori."  - selvfølgelig ikke. Navnet eller nummeret på kategorien skal så sættes ind ud fra det valgte. Og da du tilsyneladende bruger PHP, er det der du skal sætte den valgte værdi ind.

Hvor 3-tallet kommer fra? Det må være noget i din kode ;)
Avatar billede jarobert Nybegynder
18. juni 2008 - 09:36 #11
Jeg tror bare at jeg laver 2 PHP sider som henviser til hinanden. Så skulle det problem være løst.
Tak for din respons alligevel. Du har fået 60 point for hjælpen.
Avatar billede erikjacobsen Ekspert
18. juni 2008 - 09:52 #12
Jeg samler slet ikke på point, tak.

Du kan gøre det på en side, eller 2, du skal bare teste på hvad/om der står i $_GET['id_sub'].
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
Computerworld tilbyder specialiserede kurser i database-management

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