Avatar billede neo-fisk Nybegynder
23. juni 2008 - 13:41 Der er 11 kommentarer og
1 løsning

checkboxe mysql

hej jeg har søgt lidt efter noget og at hente nogle data ud af en mysql db og derved krydse en checkbox af men kan ikke rigtig finde noget...

jeg er ved at lave en edit side hvor jeg har 5 checkboxe med vær deres sprog, som jo gerne skulle være checked hvis brugeren har valgt det... hvordan gør jeg så de er checked? det skal måske siges at alle mulighederne hentes fra samme celle og så bruger jeg dette til at dele det med:

$str1 = explode(",",$sprog);
Avatar billede pidgeot Nybegynder
23. juni 2008 - 13:52 #1
I det du skriver checkboxen ud, checker du om det var valgt i databasen (kig i dit array). Hvis det var, skriver du checked="checked" inde i det <input>-tag.

I øvrigt bør du kraftigt overveje at omdesigne din database - et felt bør aldrig kunne rumme mere end en værdi. Du bør have sprogene i en tabel, og så have en ekstra tabel der knytter sprog og bruger sammen (to felter i alt, et sprog-ID og et bruger-ID). Det bliver nemlig noget rod hvis du med din nuværende struktur eks. skal finde ud af hvor mange der har valgt et givent sprog.
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 13:57 #2
kunne du komme med noget kode eksempel :/?

det er ikke til noget stort bruger community det er til et dvd script :)
men kan godt se problematiken
Avatar billede pidgeot Nybegynder
23. juni 2008 - 14:27 #3
Uanset om det er en stor eller en lille database, så vil du drage fordel af at konvertere din struktur. Selvom MySQL har en funktion der kan hjælpe på netop komma-separerede værdier, så er det på alle måder bedre at gøre det "rigtigt" - det er mere fleksibelt, det bruger mindre diskplads, det er hurtigere for MySQL at arbejde med det, og du slipper for at skulle lave din SQL om til en meget lang og træls WHERE hvis du nogensinde får lyst til at bruge noget andet end MySQL (eks. MSSQL).

Hvis du lige nu har:
<input type="checkbox" name="foo" value="1">

Så skriver du i stedet:
<input type="checkbox" name="foo" value="1" <?PHP if (in_array('foo',$str1)) { echo 'checked="checked"'; }?>>
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 14:58 #4
hmm de bliver ikke makeret :/ går ud fra at jeg skal ændre foo til mit checkbox navn? og det samme i if sætningen
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 14:59 #5
så min linie kommer til at se såden ud: <input type="checkbox" name="undertekster[]" value="eng" <?PHP if (in_array('undertekster[]',$str1)) { echo 'checked="checked"'; }?>>Engelsk
Avatar billede olebole Juniormester
23. juni 2008 - 15:14 #6
<ole>

Ellers kan man gemme 30 checkbox'e i en bit-shifted integer. Jeg mener, brugeren LJWeb engang skrev en artikel om emnet her på E  =)

/mvh
</bole>
Avatar billede pidgeot Nybegynder
23. juni 2008 - 15:15 #7
Nej - for det er jo ikke teksten "undertekster[]" du gemmer i dit array, men "eng". Derfor skal du bruge in_array('eng',$str1) (og selvfølgelig tilsvarende for de andre sprog).

Jeg gættede på at du ikke brugte den metode til at returnere et array af data - det var så forkert gættet. ^_^; (Dermed ikke sagt at der er noget i vejen med at gøre det sådan - tværtimod)
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 15:23 #8
hmm virker ikke... tror ligeså godt jeg kan lave det om som du siger :/ skal jeg så lave et felt til værd sprog?
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 15:24 #9
eller er der måske en nemmere måde at gøre det på ? er helt blank lige nu, ved at være længe siden jeg har arbejdet med scriptet
Avatar billede pidgeot Nybegynder
23. juni 2008 - 15:38 #10
For at lave det om skal du have 2 tabeller: En sprog-tabel der indeholder to felter (et sprog-ID som primærnøgle med auto-increment, og sprognavn til navnet), og så en relationstabel til at linke sprogene til din DVD, ligeledes med to felter (her skal de være et sprog-ID og et DVD-ID, begge en del af primærnøglen).

I sprog-tabellen indsætter du alle de sprog du har med at gøre.
I relationstabellen indsætter du en række pr. DVD pr. valgt sprog - så hvis du har en DVD der har 3 sprog, så er der 3 rækker med den DVD's ID. Tilsvarende, hvis der fjernes et sprog fra en DVD, sletter du den række der har den tilsvarende DVD-ID og sprog-ID.
Avatar billede neo-fisk Nybegynder
23. juni 2008 - 15:42 #11
ok :) smid et svar og du for points
Avatar billede pidgeot Nybegynder
23. juni 2008 - 15:44 #12
Værsgo :)
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