Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:21 Der er 21 kommentarer og
1 løsning

Udskille data for celle!

Jeg har en celle i en tabel der hedder brugere, hvor rækken hedder basketbold.

I denne celle findes f.eks. disse data 3;67;11;32;8
Dette henviser til de brugere som spiller basketbold. I dette tilfælde 5 brugere!
En bruger kan sagtens findes i andre række såsom fodbold og håndbold.

Nu vil jeg gerne lave en funktion som gør at når en bruger er logget ind på siden så kan han få en oversigt over de sportgrene han er tilmeldt og desuden en liste over de brugere som er tilmeldt samme sportsgrene som ham!

Det må være noget med at kunne adskille strengen ad, altså 3;67;11;32;8, men hvordan løser jeg problemet?
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:22 #1
Hvis jeg skal bruge andet end semi-kolon (;) til at adskille dataerne, så bare sig til!
Avatar billede Slettet bruger
07. januar 2003 - 18:26 #2
Det er ikke en smart måde at gemme de informationer på. Så kan du ikke udnytte fordelene ved en relationel database.

Du burde have en anden tabel der indeholder noget ala:

spiller_kategori
------------------
id, bruger_id, kategori_id

Denne tabel indeholder så oplysninger om i hvilke kategorier (hvilke sportsgrene) de enkelte brugere deltager. En bruger kan godt deltage i flere sportsgrene.

Hvor id er et AUTO_INCREMENT felt. bruger_id er brugerens id (3, 67 osv.), og kategori_id er id'et for de forskellige sportstyper (1 = basketball, 2 = volly osv.).

Du bør omdesigne dit database til at implementere ovenstående.
Ikke at det du efterlyser ikke kan lade sig gøre, men det er bare ikke måden at gøre det på, og er alt for besværligt (og langt fra optimalt).

Når du har gjort ovenstående vil du ikke have problemer med at implementere den funktion du efterlyser, og hvis du har, så spørg du bare igen.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:38 #3
Vil det sige at jeg skal have 3 tabeller.
En med alle sportsgrenene, en anden med alle brugerne og så en sidste hvor alle brugerne findes med deres sportsgrene?
Avatar billede Slettet bruger
07. januar 2003 - 18:43 #4
Præcis.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:44 #5
Problemet er jo at én bruger kan være tilmeldt FLERE sportsgrene. For ellers ville jeg bare have en celle i tabellen for brugere der hed sportsgren. Men vedkommende skal kunne tilmelde sig flere sportsgrene af gangen.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:45 #6
Vil det så igen sige at i tabellen med brugerne og deres sportsgrene, der kan samme brugere forekomme flere gange, samt samme sportsgren også kan forekomme flere gange?
Avatar billede Slettet bruger
07. januar 2003 - 18:46 #7
Det er netop meningen med den 3 tabel (spiller_kategori) eller hvad du kalder den. Her kan en bruger jo godt optræde flere gange tilmeldt forskellige sportsgrene.

id, spiller_id, sportsgren_id
1  4          1
2  4          2
3  4          5
4  5          2
Osv.
Avatar billede Slettet bruger
07. januar 2003 - 18:47 #8
Ja netop. Nøglen for den tabel er (spiller_id, sportsgren_id). Der vil altså ikke eksitere 2 rækker heri, der har disse 2 atributter tilfælles.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:50 #9
Jeg prøver :-)
Avatar billede Slettet bruger
07. januar 2003 - 18:52 #10
Fint når du har de 3 tabeller på plads, så paste her dit samlede nye database design (tabel navne, kolonne navne osv.), så kan jeg vise dig hvordan du laver relevante udtræk herfra.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 18:52 #11
Men den sidste tabel behøver da ikke et særskilt id?, den skal vel bare så således ud:

spiller_id, sportsgren_id
4            1
4            2
4            5
5            2
Avatar billede Slettet bruger
07. januar 2003 - 18:53 #12
Det er korrekt. Den behøver ikke id. Lav istedet (spiller_id, sportsgren_id) til en nøgle.
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 19:05 #13
Jeg har:

link:
-------------------
sport_id, bruger_id

sportsgrene:
-------------------
id, navn

brugere:
-------------------
id, navn, password
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 19:05 #14
Det er dem jeg har...!
Avatar billede Slettet bruger
07. januar 2003 - 19:11 #15
# navne på sportsgrene som brugeren med $id deltager i

$result = mysql_query("SELECT s.navn FROM sportsgrene AS s, link AS l WHERE s.id = l.sport_id AND l.bruger_id = '$id'") or die(mysql_error());

# som ovenstående men uskriver også brugerens navn

$result = mysql_query("SELECT s.navn, b.navn FROM sportsgrene AS s, link AS l, brugere AS b WHERE s.id = l.sport_id AND l.bruger_id = b.id AND b.id = '$id'") or die(mysql_error());
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 19:14 #16
Hva' så hvis jeg vil have alle de mennesker frem som f.eks. deltager i fodbold med id 7?
Avatar billede Slettet bruger
07. januar 2003 - 19:18 #17
# navne på alle brugere med sportsgenre id = $sportsgenre_id

$result = mysql_query("SELECT b.navn FROM sportsgrene AS s, link AS l, brugere AS b WHERE s.id = l.sport_id AND l.bruger_id = b.id AND s.id = '$sportsgenre_id'") or die(mysql_error());
Avatar billede Slettet bruger
07. januar 2003 - 19:20 #18
Hvis du ikke er vant til at anvende flere tabeller samtidigt (at JOINE tabeller) så er:

http://www.mysql.com/doc/en/Tutorial.html

Et godt sted at starte, med vægt på sidste afsnit 3.3.4.9:

http://www.mysql.com/doc/en/Multiple_tables.html
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 19:52 #19
Jeg kan godt få funktionen med # navne på sportsgrene som brugeren med $id deltager i til at virke, men funktionen # navne på alle brugere med sportsgenre id = $sportsgenre_id virker ikke!
Hvis du gider kigge på den igen, så er pointene dine og jeg takker rigtig mange gange :-)
Avatar billede hejmedmigselv Nybegynder
07. januar 2003 - 20:18 #20
Næ, nu virker det!
Jeg takker for alle svar :-)
Avatar billede Slettet bruger
07. januar 2003 - 22:22 #21
Selv tak.

En fornøjelse at hjælpe en, der selv yder en indsats. Det er efterhånden en sjældenhed i dette forum :)
Avatar billede hejmedmigselv Nybegynder
08. januar 2003 - 09:54 #22
:-)
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