Avatar billede mlysly Nybegynder
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???
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.
Avatar billede coderdk Praktikant
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.
Avatar billede mlysly Nybegynder
14. oktober 2010 - 08:06 #3
Hej Christian
Det var i der jeg havde problemet, men jeg siger tak for svaret.
Avatar billede mlysly Nybegynder
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&nbsp; <input type="checkbox" name="alm" value="valgt"<?= $alm == 'valgt' ? ' checked="checked"' : '' ?>&nbsp;&nbsp;

Bestyr.&nbsp; <input type="checkbox" name="bestyr" value="valgt"<?= $bestyr == 'valgt' ? ' checked="checked"' : '' ?>&nbsp;&nbsp;


Mand <input type="checkbox" name="mand" value="valgt"<?= $mand == 'valgt' ? ' checked="checked"' : '' ?>&nbsp;&nbsp;


Kvinde <input type="checkbox" name="kvinde" value="valgt"<?= $kvinde == 'valgt' ? ' checked="checked"' : '' ?>&nbsp;&nbsp;

</tr>
<tr>
<td><font face="verdana" size="1" color="#ffffff"><b>&nbsp;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.
Avatar billede coderdk Praktikant
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.
Avatar billede mlysly Nybegynder
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:-)
Avatar billede coderdk Praktikant
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;
Avatar billede mlysly Nybegynder
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.
Avatar billede mlysly Nybegynder
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; ?>
&nbsp;&nbsp;Bestyr.<input type="checkbox" name="bestyr" value="<?php echo $bestyr; ?>
&nbsp;&nbsp;Mand<input type="checkbox" name="mand" value="<?php echo $mand; ?>
&nbsp;&nbsp;Kvinde<input type="checkbox" name="kvinde" value="<?php echo $kvinde; ?>
</td>
</tr>
<tr>
<td><font face="verdana" size="1" color="#ffffff"><b>&nbsp;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>&nbsp;&nbsp;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>&nbsp;&nbsp;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????
Avatar billede coderdk Praktikant
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">
      &nbsp;&nbsp;Bestyr.<input type="checkbox" name="bestyr" <?= $row['alm'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt">
      &nbsp;&nbsp;Mand<input type="checkbox" name="mand" <?= $row['mand'] == 'valgt' ? 'checked="checked" ' : '' ?>value="valgt">
      &nbsp;&nbsp;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>&nbsp;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>&nbsp;&nbsp;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>&nbsp;&nbsp;Adresse:</b></td>
    <td valign="middle"><input type="text" id="t1" name="adresse" value="<?php echo $row['adresse']; ?>" /> </td>
  </tr>
Avatar billede mlysly Nybegynder
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???
Avatar billede coderdk Praktikant
15. oktober 2010 - 14:51 #12
Nej, hvad bliver gemt i databasen? "valgt" (uden gåseøjne - ingen mellemrum osv)?
Avatar billede mlysly Nybegynder
15. oktober 2010 - 15:50 #13
Ja valgt bliver gemt i databasen uden gåseøjne og mellemrum
Avatar billede mlysly Nybegynder
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"' : '' ?>
&nbsp;&nbsp;Bestyr.<input type="checkbox" name="bestyr" value="valgt"<?= $bestyr == 'valgt' ? ' checked="checked"' : '' ?>
&nbsp;&nbsp;Mand<input type="checkbox" name="mand" value="valgt"<?= $mand == 'valgt' ? ' checked="checked"' : '' ?>
&nbsp;&nbsp;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.
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
Computerworld tilbyder specialiserede kurser i database-management

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