11. august 2004 - 10:03
Der er
8 kommentarer og 1 løsning
Fra Checkbox til Mysql DB
Hejsa. Jeg kan ikke rigtigt få min php side til at smide værdierne fra checkboksen ind i en DB.............og dog. Jeg har 4 checkbox felter. Hvis jeg bare vælger en af dem, bliver de lagt ind i db'en, men hvis jeg nu ønsker at alle 2, 3 eller alle 4 værdier skal skrives ind i DB'en, så skriver den stadig kun en enkelt. Her et uddrag fra min kode. if (isset($_POST['Ok'])); { $db = mysql_connect("127.0.0.1", "root", ""); mysql_select_db("mathiesen",$db); $datot = $_POST['datot']; $tiden = $_POST['tiden']; $afsluttet = $_POST['afsluttet']; $arbejdssdl = $_POST['arbejdssdl']; $rekvi = $_POST['rekvi']; $lokat = $_POST['lokat']; $probl = $_POST['probl']; $radio = $_POST['radio']; $klaret = $_POST['klaret']; mysql_query("INSERT INTO logfil(datot, tiden, afsluttet, arbejdssdl, rekvi, lokat, probl, radio, klaret) VALUES ('$datot','$tiden','$afsluttet','$arbejdssdl','$rekvi','$lokat','$probl','$radio','$klaret')")or die(mysql_error()); echo "<center>"; echo "<BR>"; } ?> <center> <FORM METHOD=POST ACTION="<? echo $PHP_SELF;?>"> ---------------------------------------------------------------- <td align="center"> <p align="left"><font face="Tahoma">Udført af </font></td> <td width="284" align="center"> <table border="0" width="100%" id="table10" style="border-collapse: collapse"> <tr> <td width="91"><font face="Tahoma">ChrR</font></td> <td width="47"><font face="Tahoma">Erik</font></td> <td><font face="Tahoma">Chr</font></td> <td width="50"><font face="Tahoma">Peter</font></td> </tr> </table> </td> <td align="center"> </td> </tr> <tr> <td align="center"> </td> <td width="284" align="center"> <table border="0" width="100%" id="table9" style="border-collapse: collapse"> <tr> <td align="center"><font face="Tahoma"> <input type="checkbox" name="klaret" value="ChristianR"></font></td> <td align="center"><font face="Tahoma"> <input type="checkbox" name="klaret" value="Erik"></font></td> <td align="center"><font face="Tahoma"> <input type="checkbox" name="klaret" value="Christian"></font></td> <td align="center"><font face="Tahoma"> <input type="checkbox" name="klaret" value="Peter"></font></td> </tr> </table> </td>
Annonceindlæg fra Lector
11. august 2004 - 12:17
#1
Der er en hel del fejl i den kode du viser. Et eks.: if (isset($_POST['Ok'])); { der skal ikke være semikolon her. Ønsker du at indsætte flere værdier i et felt og i så fald adskilt af hvad (mellemrum, komma, e.l.) eller er felttypen fx et SET?
11. august 2004 - 14:31
#2
Se dette eksempel: <? if (isset($_POST['submit']) && $_POST['submit'] =='Send') { $klaret = $_POST['klaret']; print_r($klaret); echo "<br />"; echo "Streng = " . implode(',', $klaret); } ?> <form method="post" action="<? echo $_SERVER['PHP_SELF'];?>"> <div> <span>CristianR</span> <input type="checkbox" name="klaret[]" value="CristianR"> <span>Erik</span> <input type="checkbox" name="klaret[]" value="Erik"> <span>Christian</span><input type="checkbox" name="klaret[]" value="Christian"> <span>Peter</span><input type="checkbox" name="klaret[]" value="Peter"> </div> <div><input type="submit" name="submit" value="Send" /></div> </form>
12. august 2004 - 12:54
#3
Da jeg jo i forvejen har det sat op på denne måde: $datot = $_POST['datot']; $tiden = $_POST['tiden']; $afsluttet = $_POST['afsluttet']; $arbejdssdl = $_POST['arbejdssdl']; $rekvi = $_POST['rekvi']; $lokat = $_POST['lokat']; $probl = $_POST['probl']; $radio = $_POST['radio']; $klaret = $_POST['klaret']; hvordan er det så muligt at flette denne funktion ind? if (isset($_POST['submit']) && $_POST['submit'] =='Send') { $klaret = $_POST['klaret']; print_r($klaret); echo "<br />"; echo "Streng = " . implode(',', $klaret);
12. august 2004 - 13:22
#4
Det vigtige er at du bruger et array i formen (altså med: name="klaret[]). Spørgsmålet er så stadig hvilken felttype du bruger i databasen. Skal det bare stå som fx: 'Erik,Christian,Peter'? I så fald kan du bytte: $klaret = $_POST['klaret']; ud med: $klaret = implode(',', $_POST['klaret']);
13. august 2004 - 11:55
#5
Hmmm. Jeg brugte denne funktion "$klaret = implode(',', $_POST['klaret']);" Jeg fik en warning, og der blev ikke skrevet noget ned i DB'en! Warningen lød "Warning: Bad arguments to implode() in c:\programmer\easyphp\www\skriv_log.php on line 30
13. august 2004 - 13:23
#6
Så har du nok ikke rettet din form som jeg har beskrevet?
13. august 2004 - 13:46
#7
Min felttype i DB'en er SET.
17. august 2004 - 01:15
#8
Hov den her havde jeg overset. Med felttypen SET er det jo oplagt at ligge oplysningerne ind med binære værdier. Fx: <? if (isset($_POST['submit']) && $_POST['submit'] =='Send') { $klaret = array_sum($_POST['klaret']); // Så er $klaret den binære værdi af de valgte navne, lige til at smide i databasen. } ?> <form method="post" action="<? echo $_SERVER['PHP_SELF'];?>"> <div> <span>CristianR</span> <input type="checkbox" name="klaret[]" value="1"> <span>Erik</span> <input type="checkbox" name="klaret[]" value="2"> <span>Christian</span><input type="checkbox" name="klaret[]" value="4"> <span>Peter</span><input type="checkbox" name="klaret[]" value="8"> </div> <div><input type="submit" name="submit" value="Send" /></div> </form>
25. oktober 2005 - 16:36
#9
Jeg ved det er længe siden, men jeg sidder lige og rydder op. Smid lige et svar, så får du point!
Vi tilbyder markedets bedste kurser inden for webudvikling