[php] kan man kolla upp text i en kolumm? mysql

Permalänk
Medlem

[php] kan man kolla upp text i en kolumm? mysql

Vet ej riktigt hur jag ska koda detta

Men jag har en sida där man kan registrera sig för att delta i en tävling.

Tabellen ser ut

id
namn
information
tid
deltagare

----------------------
Ett exempel

1
Jaga ankor
Du ska under 50 sekunder jaga 3040 st ankor
2071 - 12 - 24 kl 13:00
janne hulken spiderman batman nisse gunnar

----------------------

På deltagarens egna sida så vill jag att det ska finnas en länk som antingen raderar eller lägger till sitt namn

Så om spiderman trycker på avanmäl så ska spiderman försvinna från "deltagare" men ifall spiderman inte finns i "deltagare" så ska det stå anmäl istället. Och när den klickas så ska spiderman addas till "deltagare"

Går detta eller behöver jag skapa en ny tabell för varje tävling som håller deltagare?

Exempel
--------------------
Tabell Jaga ankor_deltagare
id
namn

Hoppas ni fattar

Permalänk
Medlem
Skrivet av downup:

Vet ej riktigt hur jag ska koda detta

Men jag har en sida där man kan registrera sig för att delta i en tävling.

Tabellen ser ut

id
namn
information
tid
deltagare

----------------------
Ett exempel

1
Jaga ankor
Du ska under 50 sekunder jaga 3040 st ankor
2071 - 12 - 24 kl 13:00
janne hulken spiderman batman nisse gunnar

----------------------

På deltagarens egna sida så vill jag att det ska finnas en länk som antingen raderar eller lägger till sitt namn

Så om spiderman trycker på avanmäl så ska spiderman försvinna från "deltagare" men ifall spiderman inte finns i "deltagare" så ska det stå anmäl istället. Och när den klickas så ska spiderman addas till "deltagare"

Går detta eller behöver jag skapa en ny tabell för varje tävling som håller deltagare?

Exempel
--------------------
Tabell Jaga ankor_deltagare
id
namn

Hoppas ni fattar

Du har antagligen redan en tabell som representerar användare (t ex spiderman). Den vanligaste lösningen på ditt problem är att skapa en extra tabell som binder samman användare med en tävling. I sin enklaste form ser den ut så här:

Tävlingsdeltagare tävlingsid användarid constraints composite primary key: tävlingsid+användarid foreign key: tävlingsid foreign key: användarid

En rad i tabellen kopplar samman en användare med en tävling. Med en composite key över tävlingsid + användarid riskerar man inte att skapa dubletter, och genom foreign key-relationen med de båda tabellerna som kopplas samman försäkrar man sig om att relationen existerar.

Att ha det uppdelat på detta vis ger många fördelar när det kommer till sökbarhet. Det är exempelvis en baggis att kolla ifall en viss användare är anmäld till en viss tävling:

select count(*) from tävlingsdeltagare td where td.användarid = ? and td.tävlingsid = ?

Vilka användare (med namn) som är anmälda till en viss tävling:

select a.användarid a.användarnamn from tävlingar t inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid inner join användare a on a.användarid = td.användarid where t.tävlingsid = ?

Vilka tävlingar en användare har anmält sig till:

select t.tävlingsid t.tävlingsnamn from tävlingar t inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid inner join användare a on a.användarid = td.användarid where a.användarid = ?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Du har antagligen redan en tabell som representerar användare (t ex spiderman). Den vanligaste lösningen på ditt problem är att skapa en extra tabell som binder samman användare med en tävling. I sin enklaste form ser den ut så här:

Tävlingsdeltagare tävlingsid användarid constraints composite primary key: tävlingsid+användarid foreign key: tävlingsid foreign key: användarid

En rad i tabellen kopplar samman en användare med en tävling. Med en composite key över tävlingsid + användarid riskerar man inte att skapa dubletter, och genom foreign key-relationen med de båda tabellerna som kopplas samman försäkrar man sig om att relationen existerar.

Att ha det uppdelat på detta vis ger många fördelar när det kommer till sökbarhet. Det är exempelvis en baggis att kolla ifall en viss användare är anmäld till en viss tävling:

select count(*) from tävlingsdeltagare td where td.användarid = ? and td.tävlingsid = ?

Vilka användare (med namn) som är anmälda till en viss tävling:

select a.användarid a.användarnamn from tävlingar t inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid inner join användare a on a.användarid = td.användarid where t.tävlingsid = ?

Vilka tävlingar en användare har anmält sig till:

select t.tävlingsid t.tävlingsnamn from tävlingar t inner join tävlingsdeltagare td on td.tävlingsid = t.tävlingsid inner join användare a on a.användarid = td.användarid where a.användarid = ?

Tack för den tid du la ner! Inte alls dumt! Tackar