13. oktober 2010 - 19:20
Der er
13 kommentarer og 2 løsninger
Hente data fra checkboks
Jeg er ved at lave en medlemsdatabase, hvor jeg bla har 4 checkbokse som jeg kan "vinge" af. Min side ser sådan her ud (det hele er ikke med) <table width="700" border="1"> <tr> <td colspan="5"><font face="verdana" size="1" color="#ffffff"><form action="insert_row.php?do=insert" method="post"> Alm <input type="checkbox" name="alm" value="valgt"> Bestyr. <input type="checkbox" name="bestyr" value="valgt"> Mand <input type="checkbox" name="mand" value="valgt"> Kvinde <input type="checkbox" name="kvinde" value="valgt"></td> </tr> <tr> <td><font face="verdana" size="1" color="#ffffff"><b> Medlemsnr:</td><td> <input type="text" id="t1" name="medlemsnr"></td> </tr> Det hele bliver indsat i databasen. Når jeg skal rette i dataene gør jeg følgende: <?php $id = (int)$_GET["id"]; $sql = "SELECT * FROM hog_medlemmer WHERE id = ".$id." LIMIT 1"; $result = mysql_query($sql); $id = mysql_result($result, 0, "id"); $alm = mysql_result($result, 0, "alm"); $bestyr = mysql_result($result, 0, "bestyr"); $mand = mysql_result($result, 0, "mand"); $kvinde = mysql_result($result, 0, "kvinde"); $medlemsnr = mysql_result($result, 0, "medlemsnr"); $navn = mysql_result($result, 0, "navn"); $adresse = mysql_result($result, 0, "adresse"); $postnr = mysql_result($result, 0, "postnr"); $sted = mysql_result($result, 0, "sted"); $privattlf = mysql_result($result, 0, "privattlf"); $mobiltlf = mysql_result($result, 0, "mobiltlf"); $email = mysql_result($result, 0, "email"); ?> Jeg får ikke dataene frem på checkboksene alm, bestyr, mand og kvinde. Alle andre data fremkommer. Hvordan får data fra checkboksene med. Hvad gør jeg forkert???
Annonceindlæg fra Admin By Request
13. oktober 2010 - 20:02
#1
Du faar ikke checkbox-dataerne udtrukket fra database-tabellen. Kunne det skyldes at disse dataer ikke bliver indfoert i tabellen? Den kode du viser ovenfor indeholder et par syntax fejl. Den foerste td skal vaere <td colspan="5" font face="verdana" size="1" color="#ffffff"> (du har <td colspan="5"><font ....) Din anden td skal vaere <td font face="verdana" size="1" color="#ffffff"><b> Medlemsnr:</td> (du har <td><font ....) Hvis koden i din fil indeholder de samme problemer, saa ret dem og proev igen.
13. oktober 2010 - 21:12
#2
f.eks. Mand <input type="checkbox" name="mand" value="valgt"<?= $mand == 'valgt' ? ' checked="checked"' : '' ?>> osv... Altså denne del: <?= $mand == 'valgt' ? ' checked="checked"' : '' ?> Checker om $mand indeholder "valgt" og så skriver den: checked="checked" eller skriver den intet.
14. oktober 2010 - 08:06
#3
Hej Christian Det var i der jeg havde problemet, men jeg siger tak for svaret.
14. oktober 2010 - 08:15
#4
Hej coderdk Det hjalp, nu får jeg dataene ned i databasen og jeg kan hive dem frem hvis jeg vil rette i nogle data. Problemet er nu bare, at når jeg sætter et flueben ved f.eks mand og bestyr ved oprettelse at en person og jeg efterfølgende vil rette disse, er der flueben i alle 4 checkbokse når jeg hiver datene frem og ikke kun i de to der blev sat ved oprettelsen. Jeg har gjort følgende: <?php $id = (int)$_GET["id"]; $sql = "SELECT * FROM hog_medlemmer WHERE id = ".$id." LIMIT 1"; $result = mysql_query($sql); $id = mysql_result($result, 0, "id"); $alm = mysql_result($result, 0, "alm"); $bestyr = mysql_result($result, 0, "bestyr"); $mand = mysql_result($result, 0, "mand"); $kvinde = mysql_result($result, 0, "kvinde"); $medlemsnr = mysql_result($result, 0, "medlemsnr"); $navn = mysql_result($result, 0, "navn"); $adresse = mysql_result($result, 0, "adresse"); $postnr = mysql_result($result, 0, "postnr"); $sted = mysql_result($result, 0, "sted"); $privattlf = mysql_result($result, 0, "privattlf"); $mobiltlf = mysql_result($result, 0, "mobiltlf"); $email = mysql_result($result, 0, "email"); ?> <table width="700" border="1"> <tr> <td colspan="5"><font face="verdana" size="1" color="#ffffff"><form action="update_medlemmer.php" method="post"> Alm <input type="checkbox" name="alm" value="valgt"<?= $alm == 'valgt' ? ' checked="checked"' : '' ?> Bestyr. <input type="checkbox" name="bestyr" value="valgt"<?= $bestyr == 'valgt' ? ' checked="checked"' : '' ?> Mand <input type="checkbox" name="mand" value="valgt"<?= $mand == 'valgt' ? ' checked="checked"' : '' ?> Kvinde <input type="checkbox" name="kvinde" value="valgt"<?= $kvinde == 'valgt' ? ' checked="checked"' : '' ?> </tr> <tr> <td><font face="verdana" size="1" color="#ffffff"><b> Medlemsnr:</td> Her er min update-fil: $conn = mysql_connect("localhost", "root") or die(mysql_error()); mysql_select_db("hog",$conn) or die(mysql_error()); $id = (int)$_POST["id"]; $alm = mysql_real_escape_string($_POST["alm"]); $bestyr = mysql_real_escape_string($_POST["bestyr"]); $mand = mysql_real_escape_string($_POST["mand"]); $kvinde = mysql_real_escape_string($_POST["kvinde"]); $medlemsnr = mysql_real_escape_string($_POST["medlemsnr"]); $navn = mysql_real_escape_string($_POST["navn"]); $adresse = mysql_real_escape_string($_POST["adresse"]); $postnr = mysql_real_escape_string($_POST["postnr"]); $sted = mysql_real_escape_string($_POST["sted"]); $privattlf = mysql_real_escape_string($_POST["privattlf"]); $mobiltlf = mysql_real_escape_string($_POST["mobiltlf"]); $email = mysql_real_escape_string($_POST["email"]); $sql = "UPDATE hog_medlemmer SET alm='".$alm."', bestyr='".$bestyr."', mand='".$mand."', kvinde='".$kvinde."', medlemsnr='".$medlemsnr."', navn='".$navn."', adresse='".$adresse."', postnr='".$postnr."', sted='".$sted."', privattlf='".$privattlf."', mobiltlf='".$mobiltlf."', email='".$email."' WHERE id=".$id; mysql_query($sql); header("Location: medlemmer.php"); exit; ?> Håber du kan gennemskue problemet.
14. oktober 2010 - 11:55
#5
Jeg kan ikke lige se hvad problemet er, men prøv at se hvad der er gemt i databasen, og prøv exit($sql); inden mysql_query, så du kan se hvad der bliver kørt.
14. oktober 2010 - 12:51
#6
Problemet er, at når jeg vil rette i en given persons data, henter jeg data fra databasen. Alle data kommer frem på personen undtagen de checkbokse jeg udfyldte ved oprettelsen af personen. Eks. Ved oprettelse af person sættes f.eks følgende flueben Alm. V Bestyr Mand V Kvinde Disse flueben bliver opdateret i databasen som de skal. Når jeg vil rette personen, får jeg ikke fluebenene med tilbage i min formular og kan ændre dem. Håber du forstår:-)
14. oktober 2010 - 15:03
#7
Prøv lige at lave en print_r($mand); Hvorfor i øvrigt ikke bruge mysql_fetch_assoc eller mysql_fetch_object i stedet for alle de kald til mysql_result? E.g.: $sql = "SELECT * FROM hog_medlemmer WHERE id = ".$id." LIMIT 1"; $result = mysql_query($sql); $row = mysql_fetch_object( $result ); echo "Mand: " . $row->mand;
14. oktober 2010 - 16:43
#8
Det hjalp desværre ikke. Jeg får ikke vist fluebenene som blev sat ved oprettelsen af personen. Jeg må kæmpe videre.
15. oktober 2010 - 14:09
#9
Når jeg sætter et flueben i en af 4 checkbokse bliver det indført i min database. Så langt så godt. Når jeg vil se og evt rette i checkboksene bliver det ikke ført fra databasen til min retteformular. Her er min rette-fil: <?php $id = (int)$_GET["id"]; $sql = "SELECT * FROM hog_medlemmer WHERE id = ".$id." LIMIT 1"; $result = mysql_query($sql); $id = mysql_result($result, 0, "id"); $alm = mysql_result($result, 0, "alm"); $bestyr = mysql_result($result, 0, "bestyr"); $mand = mysql_result($result, 0, "mand"); $kvinde = mysql_result($result, 0, "kvinde"); $medlemsnr = mysql_result($result, 0, "medlemsnr"); $navn = mysql_result($result, 0, "navn"); $adresse = mysql_result($result, 0, "adresse"); $postnr = mysql_result($result, 0, "postnr"); $sted = mysql_result($result, 0, "sted"); $privattlf = mysql_result($result, 0, "privattlf"); $mobiltlf = mysql_result($result, 0, "mobiltlf"); $email = mysql_result($result, 0, "email"); ?> <table width="700" border="1"> <tr> <td colspan="5"><font face="verdana" size="1" color="#ffffff"><form action="update_medlemmer.php" method="post"> Alm<input type="checkbox" name="alm" value="<?php echo $alm; ?> Bestyr.<input type="checkbox" name="bestyr" value="<?php echo $bestyr; ?> Mand<input type="checkbox" name="mand" value="<?php echo $mand; ?> Kvinde<input type="checkbox" name="kvinde" value="<?php echo $kvinde; ?> </td> </tr> <tr> <td><font face="verdana" size="1" color="#ffffff"><b> Medlemsnr:</td> <td> <input type="text" id="t1" name="medlemsnr" value="<?php echo $medlemsnr; ?>" /></td> </tr> <td valign="middle" > <font face="verdana" size="1" color="#ffffff"><b> Navn:</b></td> <td valign="middle"><input type="text" id="t1" name="navn" value="<?php echo $navn; ?>" /> </td> <td valign="middle"><font face="verdana" size="1" color="#ffffff"><b> Adresse:</b></td> <td valign="middle"><input type="text" id="t1" name="adresse" value="<?php echo $adresse; ?>" /> </td> </tr> Checkboksene er felterne ALM, BESTYR, MAND, KVINDE. Hvad gør jeg galt????
15. oktober 2010 - 14:18
#10
Prøv <?php $sql = sprintf(" SELECT * FROM hog_medlemmer WHERE id = %d LIMIT 1 " ,$_GET['id'] ); $result = mysql_query($sql) or die( mysql_error() ); if ( mysql_num_rows( $result ) > 0 ) { $row = mysql_fetch_assoc( $result ); } else { die( "ID findes ikke" ); } ?> <table width="700" border="1"> <tr> <td colspan="5"><font face="verdana" size="1" color="#ffffff"><form action="update_medlemmer.php" method="post"> Alm<input type="checkbox" name="alm" <?= $row['alm'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt"> Bestyr.<input type="checkbox" name="bestyr" <?= $row['alm'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt"> Mand<input type="checkbox" name="mand" <?= $row['mand'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt"> Kvinde<input type="checkbox" name="kvinde" <?= $row['kvinde'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt"> </td> </tr> <tr> <td><font face="verdana" size="1" color="#ffffff"><b> Medlemsnr:</td> <td> <input type="text" id="t1" name="medlemsnr" value="<?php echo $row['medlemsnr']; ?>" /></td> </tr> <td valign="middle" > <font face="verdana" size="1" color="#ffffff"><b> Navn:</b></td> <td valign="middle"><input type="text" id="t1" name="navn" value="<?php echo $row['navn']; ?>" /> </td> <td valign="middle"><font face="verdana" size="1" color="#ffffff"><b> Adresse:</b></td> <td valign="middle"><input type="text" id="t1" name="adresse" value="<?php echo $row['adresse']; ?>" /> </td> </tr>
15. oktober 2010 - 14:47
#11
Desværre hjalp det ikke. Kan det have noget at gøre med at jeg i databasen har feltnavn "varchar" når det er en checkboks???
15. oktober 2010 - 14:51
#12
Nej, hvad bliver gemt i databasen? "valgt" (uden gåseøjne - ingen mellemrum osv)?
15. oktober 2010 - 15:50
#13
Ja valgt bliver gemt i databasen uden gåseøjne og mellemrum
15. oktober 2010 - 15:54
#14
Det bliver bare ikke hentet tilbage fra databasen på denne måde: <table width="700" border="1"> <tr> <td colspan="5"><font face="verdana" size="1" color="#ffffff"><form action="update_medlemmer.php" method="post"> Alm<input type="checkbox" name="alm" value="valgt"<?= $alm == 'valgt' ? ' checked="checked"' : '' ?> Bestyr.<input type="checkbox" name="bestyr" value="valgt"<?= $bestyr == 'valgt' ? ' checked="checked"' : '' ?> Mand<input type="checkbox" name="mand" value="valgt"<?= $mand == 'valgt' ? ' checked="checked"' : '' ?> Kvinde<input type="checkbox" name="kvinde" value="valgt"<?= $kvinde == 'valgt' ? ' checked="checked"' : '' ?> </td> Her bliver der sat flueben i alle checkbokse, forder der står checked ved alle.
20. oktober 2010 - 06:00
#15
mlysly, forventer du flere indlaeg paa denne traad? Chancen er ringe for spoergsmaal der er en uge gammelg og derfor 'under horisonten' og hvor der ikke har vaeret friske indlaeg de sidste dage. Kan jeg derfor bede dig lukke spoergsmaalet? For god ordens skyld og saa det ikke bliver staaende som aabent i min liste af indlaeg. Du har allerede selv oprettet svar som du kan acceptere. Please.
Computerworld tilbyder specialiserede kurser i database-management