23. oktober 2011 - 16:42
Der er
14 kommentarer og 1 løsning
mange checkboxe data i samme mysql felt
Hej eksperten Jeg er ved at lave en hjemmeside og er stødt ind i et problem :) Jeg får php til at hente data fra en database og lave en checkbox for hver række i tabellen. Del af min kode: <?php $result = mysql_query("SELECT * FROM MINTABEL"); while ($row = mysql_fetch_array($result)) {?><tr><td> <?php echo($row['name']); ?> - <?php echo($row['info']); ?> | <input type="checkbox" name="<?php echo($row['name']); ?>" value="<?php echo($row['name']); ?>" /> </td></tr> <?php }?> Nu er mit spørgsmål så når folk trykker send i min form hvordan får jeg så lagt de afkrydsede felter ind i min database og kun de afkrydsede :)
Annonceindlæg fra Novataris
Vejen til devops med Bavarian Nordic
Bavarian Nordics vækst blev starten på et DevOps-samarbejde med Novataris for hurtigt at kunne tilpasse IT-organisation til forretningen.
7. december 2023
23. oktober 2011 - 19:01
#1
du henter én række pr. checkbox? og du vil kun have de rækker tilbage i databasen hvor checkboxen er checked? jeg er ikke helt med hér - kan du uddybe / omformulere ?
23. oktober 2011 - 19:14
#2
Hej. Når jeg skal bruge noget i en checkbox som True / False som du har der. Så plejer jeg at bruge det der i MSSQL hedder BIT. en bit den kan være 1 eller 0. dvs hvis noget er sandt / findes sætter jeg den til 1 og hvis den ikke er afkrydset eller findes sætter jeg den til 0 1 = true = afkrydset. 0 = false = ikke afkrydset. håber det her gav mening :)
23. oktober 2011 - 19:23
#3
Ps. Hvis du bruger min måde skal du gemme alle dem som ikke er krydset af f.eks. TableInteresser: Drame bit, TV bit, Computer bit, Natur bit, osv bit dvs når en bruger godt kan lide TV og Computer, så gemmer du 0,1,1,0,0. dvs du får en for hver. Dette vil jeg helt klart mene er den bedste løsning
23. oktober 2011 - 19:23
#4
<ole>
Du kan bruge
bit shifting . Så kan du rumme værdien af omkring 30 checkboxe i én integer - som så kan indsættes i ét felt.
Jeg er på vej ud af døren, men hvis du har problemer med at finde ud af det, prøver jeg at lægge et eksempel, når jeg kommer hjem igen =)
/mvh
</bole>
23. oktober 2011 - 19:32
#5
Tak for svarene :) Jeg har selv fundet ud af følgende: $cbox = $_POST['cbox']; $selected_cbox = ""; foreach($cbox as $cbox) { $selected_cbox .= $cbox . ", "; } $selected_cbox = substr($selected_cbox, 0, -2); .-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.- <?php $result = mysql_query("SELECT * FROM programmer"); while ($row = mysql_fetch_array($result)) {?> <tr><td> <?php echo($row['name']); ?> - <?php echo($row['info']); ?> | <input type="checkbox" name="cbox[]" value="<?php echo($row['name']); ?>" /> </td></tr> <?php }?> Når jeg gør det på den måde så får jeg de afkrydsede ind i mit felt men jeg får også en foreach() fejl selvom det virker. Fejlen: Warning: Invalid argument supplied for foreach() in *** on line *** Og jeg kan også kun checke to boxe af ellers kommer de ikke ind
23. oktober 2011 - 19:34
#6
Når jeg gør det på den måde så får jeg checkboxenes value ind i databasen og det er det jeg ønsker :)
23. oktober 2011 - 19:40
#7
super, husk at luk tråden...
23. oktober 2011 - 19:45
#8
Hvis det er nok for dig, så er det okay med mig =)
23. oktober 2011 - 19:49
#9
Jamen jeg får ju en fejl? Hvorfor gør jeg det
23. oktober 2011 - 19:51
#10
Fordi, du gør noget forkert. Prøv at begave os andre med indblik i, hvad fejlen fortæller dig
23. oktober 2011 - 19:53
#11
Er der ikke nogen der har en løsning der virker på at få checkboxenes value ind i database feltet så der står i database feltet fx. biler, både, cykkler, tv, radio, osv. Mange tak :)
23. oktober 2011 - 19:54
#12
Et eksempel måske, det ville være rigtigt fint :)
23. oktober 2011 - 20:01
#13
Du fandt en tilfredsstillende løsning. Den gav fejl, og du spurgte, hvorfor. Vil du have det svar, må du være lidt informativ (læs #10)
23. oktober 2011 - 20:05
#14
LUKKER. Smid et svar
24. oktober 2011 - 18:39
#15
.
Vi tilbyder markedets bedste kurser inden for webudvikling