30. november 2009 - 23:47
Der er
15 kommentarer og 1 løsning
Checkboxe
Jeg har en form der ser sådan ud. Den opdaterer databasen fint nok, men når den trækker data ud, er begge checkboxe afkrydset, selvom kun et felt er afkrydset i databasen. Kan nogen se hvad der er galt ? <form action="opdater.php?id=<?=$row["id"]?>" method="POST" name="form1">'; <tr><td>Færdig</td></tr> <tr><td> <input type="checkbox" name="done" value="ja" <?php $row['done'] ?> == "ja" ? " checked" : "")."> Ja </font> <input type="checkbox" name="done" value="nej" <?php $row['done'] ?> == "nej" ? " checked" : "")."> Nej</td></tr> <tr><td>Leveret</td></tr> <tr><td> <input type="checkbox" name="leveret" value="ja" <?php $row['leveret'] ?> == "ja" ? " checked" : "")."><font color="#3799CF"> Ja </font> <input type="checkbox" name="leveret" value="nej" <?php $row['leveret'] ?> == "nej" ? " checked" : "")."><font color="#3799CF"> Nej</font></td></tr> <tr><td><input type="hidden" name="id" value="<? $row['id'] ?>"></td></tr> <tr><td align="left"><input type="submit" value="Opdater"></td></tr> </form>
Annonceindlæg fra Computerworld it-jobbank
01. december 2009 - 00:38
#1
I alle dine input-tags afslutter du php for tidligt. Erstat <input type="checkbox" name="done" value="ja" <?php $row['done'] ?> == "ja" ? " checked" : "")."> med <input type="checkbox" name="done" value="ja" <?php ($row['done'] == "ja") ? " checked" : "" ?> />
01. december 2009 - 00:47
#2
Det virker desværre ikke efter hensigten, for nu er ingen af checkboxene afkrydset.
01. december 2009 - 01:00
#3
Hvad giver dine $row['done'] af output, hvis du f.eks laver en echo på dem ?
01. december 2009 - 01:06
#4
De giver den rigtige værdi af feltet i databasen.
01. december 2009 - 01:39
#5
Tror der mangler et echo, prøv med : <input type="checkbox" name="done" value="ja" <?php echo ($row == "ja") ? " checked" : "" ?> />
01. december 2009 - 01:45
#6
Det gjorde ingen forskel, ingen af checkboxene er afkrydset.
01. december 2009 - 01:50
#7
Så lige en lille fejl i min input, hvis du bare tog den. Den skal selvfølgelig hedde : <input type="checkbox" name="done" value="ja" <?php echo ($row['done'] == "ja") ? " checked" : "" ?> /> Havde glemt et ['done'] ved ikke om du fangende den, og det stadig ikke virker med denne?
01. december 2009 - 01:58
#8
Tilføjede blot echo istedet for copy/paste, så den virker desværre stadig ikke.
01. december 2009 - 02:09
#9
Hvordan caster du helt bestemt din type på row['done'], er det en boolean eller string ?
01. december 2009 - 02:23
#10
Jeg ville gerne svare dig, men så langt rækker min viden på området desværre ikke. Kan du omformulere det, til et mindre fagligt sprog ?
01. december 2009 - 02:26
#11
Ja da selvfølgelig. Ville vide hvordan du havde gemt din data i databasen, som en tekst-streng, hvor der stod "ja" eller "nej" eller som en true eller false som kaldes boolean. Du kan evt. lige prøve at ændre "ja" til true og "nej" til false, altså uden anførelsestegn og se om det gør en forskel.
01. december 2009 - 02:33
#12
Det er gemt som en enum 'ja','nej'
01. december 2009 - 02:40
#13
Sidste desperate forsøg her for mig i aften, skal have lidt søvn snart, prøv med : <input type="checkbox" name="done" value="ja" <?php if ($row['done'] == "ja") echo "checked"; ?> /> <input type="checkbox" name="done" value="nej" <?php if ($row['done'] == "nej") echo "checked"; ?> /> Burde jo være det samme, men man ved jo aldrig.
01. december 2009 - 02:45
#14
Desværre ingen ændring, men foreløbig tak for din tid og hjælp. Det er værdsat :)
01. december 2009 - 02:54
#15
norsgaard dit forslag virkede fint, jeg havde blot kvajet mig. I databasen stod enum angivet som 'Ja','Nej' (stort forbogstav) mens den i php koden stod med småt ja nej. Jeg beklager hvis min fejl har givet unødig hovedbrud. Men smid et svar så du kan få dine point. Endnu engang tak for hjælpen :)
01. december 2009 - 11:25
#16
Hehe, sådan er det jo tit. Kunne heller ikke begribe at det ikke ville virke, men godt det kom til at lykkes. :)
Vi tilbyder markedets bedste kurser inden for webudvikling