Avatar billede davidskp Nybegynder
02. april 2008 - 01:10 Der er 4 kommentarer og
1 løsning

Råd til array løsning i mysql og php

Jeg er i gang med at lave en hjemmeside til mit 7-mands fodboldhold. Jeg arbejder pt. på en funktion hvor man skal kunne til/framelde sig kampe. Jeg har pt. en tabel med spiller data (identificeres ved rygnummer (int)) og en tabel med kampe (datoer, modstandere etc.).

i kamp tabellen har jeg også lavet et felt hvor det er meningen at der skal stå hvem der er tilmeldt og frameldt hver kamp. Men problemet er at mysql jo ikke understytter arrays, så jeg kan ikke gemme spillerne (deres nummer id) som et array i feltet.

Den bedste metode jeg kan komme på er at bruge explode() implode() til at gemme "snyde array" i mysql og så lave det til et rigtigt array når jeg henter det ud.
Jeg tænkte så at hver spiller hørte til det plads i array'et som han nummer er, altså nummer 9 er array[9] hvor den plads så kunne indeholde infoen om hvorvidt denne spiller kan komme eller ej feks array[9] = "ja" betyder at spiller 9 godt kan komme til pågældende kamp.

Er dette en hendigsmæssig måde at gøre det på eller er der en bedre metode?

På forhånd tak for hjælpen :)

/dave
Avatar billede nielle Nybegynder
02. april 2008 - 06:45 #1
Det er ikke sædvanligvis nogen god ide at forsøge at gemme mange værdire (listen af deltagende spilleer) i et felt som f.eks. en kommasepareret liste.

I stedet bør du indføre en 3. tabel:

= kampe =
kamp_id
dato
... osv

= spillere =
spiller_id
navn
... osv

= spillerVsKamp =
id
kamp_id
spiller_id
deltager/deltagerIkke
Avatar billede davidskp Nybegynder
02. april 2008 - 13:58 #2
ok jeg har oprettet en tabel og prøver nu at indsæte flere entries ad gangen vha et for loop...men det virker ikke og jeg kan simpelthen ikke finde fejlen - har stirret mig blind på det...

  for($i=1;$i<23;$i++)
  {
    mysql_query("INSERT INTO attend (match, player, attending) VALUES ($i, $_POST[number], 'unknown')") or die (mysql_error());
  }

Den siger at der er fejl i mit syntax men jeg ka bare ikk se hvor....

Det virker heller ikke uden for loopet....
Avatar billede nielle Nybegynder
02. april 2008 - 15:54 #3
Prøv at du skrive din SQL. Så kan det være at en eventuel felt var mere synlig:

for ($i=1; $i<23; $i++) {
    $sql = "INSERT INTO attend (match, player, attending) VALUES ($i, $_POST[number], 'unknown')";
    echo "DEBUG: $sql<br>";
    mysql_query($sql) or die (mysql_error());
}
Avatar billede davidskp Nybegynder
02. april 2008 - 17:38 #4
ok jeg fandt problemet - "match" er åbenbart et reserveret ord - det er nu fixet og det hele virker vist som det skal.

Hvis du lige smider et svar så får du points :)

/dave
Avatar billede nielle Nybegynder
02. april 2008 - 17:59 #5
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