Avatar billede tvbrandt Nybegynder
03. maj 2004 - 12:08 Der er 12 kommentarer og
1 løsning

Opdater checkbox

Jeg har en formular hvor brugeren kan indtaste nogle kundeoplysninger. Disse skal selvfølgelig kunne opdateres, hvilket gøres via en opdateringsformular. Jeg har en checkbox, som også skal kunne opdateres. Men jeg kan ikke få den til at virke. I formularen har jeg dette:
----
$christmasNext = $row['christmasNext'];
if (!$christmasNext) {
$christmasNext = "value='0'";
} else {
$christmasNext = "value='1' checked";
}
----

Og i selve opdateringnsfilen har jeg dette:
----
// Hent variabler
if(is_array($HTTP_POST_VARS)) {
  $christmasNext = $HTTP_POST_VARS['christmasNext'];
} elseif (is_array($_POST)) {
  $christmasNext = $_POST['christmasNext'];
}
// Ret bruger
$res = mysql_query("UPDATE tabel SET christmasNext='$christmasNext' WHERE id='$id'") or die (mysql_error());

// Redirect
header("Location:filnavn.php");

exit;
?>

----
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 12:10 #1
Jeg har også prøvet med

if (christmasNext == 0) {
$res = mysql_query("UPDATE customer SET
  christmasNext='1' WHERE id='$id'") or die (mysql_error());
}
else {
$res = mysql_query("UPDATE customer SET
  christmasNext='0' WHERE id='$id'") or die (mysql_error());
}
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 12:10 #2
Og det skulle have været:


if (christmasNext == 0) {
$res = mysql_query("UPDATE customer SET
  christmasNext='0' WHERE id='$id'") or die (mysql_error());
}
else {
$res = mysql_query("UPDATE customer SET
  christmasNext='1' WHERE id='$id'") or die (mysql_error());
}
Avatar billede rasmus-madsen Nybegynder
03. maj 2004 - 12:12 #3
Prøv lige denne:
if (christmasNext == 0) {
$res = mysql_query("UPDATE customer SET
  christmasNext='True' WHERE id='$id'") or die (mysql_error());
}
else {
$res = mysql_query("UPDATE customer SET
  christmasNext='False' WHERE id='$id'") or die (mysql_error());
}

Madsen
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 12:19 #4
Det virker desværre ikke.
Men er det overhovedet nødvendigt med en if/else?
Kan man ikke bare gøre som jeg gjorde først? Bare med noget rettelse i, for det virker jo heller ikke.
Avatar billede coderdk Praktikant
03. maj 2004 - 16:14 #5
<input type="checkbox" name="christmasNext" value="1">

$christmasNext = ($_POST['christmasNext'] == 1 ? 1 : 0);
$res = mysql_query("UPDATE customer SET christmasNext='$christmasNext' WHERE id='$id'") or die (mysql_error());
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 16:18 #6
Gider du forklare denne:
$christmasNext = ($_POST['christmasNext'] == 1 ? 1 : 0);
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 16:25 #7
Det virker ikke.
I min formular har jeg dette (er ikke sikker på det tydeliggjort nok i det første jeg skrev)
$sql = mysql_query("SELECT * FROM customer WHERE id='$id'") or die(mysql_error());
while($row = mysql_fetch_array($sql)){
$card = $row['christmasNext'];
if (!$card) {
$card = "value='0'";
} else {
$card = "value='1' checked";
}
//Form start
<?PHP echo "Julekort:<input name='christmasNext' type='checkbox' ".$card.">" ?>
//Form end

For så er den markeret hvis der er et 1-tal i tabellen og ikke markeret hvis der er et 0 i tabellen.
Avatar billede coderdk Praktikant
03. maj 2004 - 16:57 #8
$christmasNext = ($_POST['christmasNext'] == 1 ? 1 : 0);

er det samme som at skrive:

if ($_POST['christmasNext'] == 1)
{
  $christmasNext = 1;
}
else
{
  $christmasNext = 0;
}

Du SKAL sætte en value="1" i din checkbox i HTML'en før at det virker.
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 17:02 #9
men hvad så hvis jeg vil have at der skal opdateres fra 1 til 0. Altså så value="0".
Så næste gang jeg skal ind og rette den kunde, så skal der jo ikke være en markering i checkboksen. Så kan jeg jo ikke have value="1" for så er det jo en forkert oplysning. Er det klart hvad jeg mener?
Avatar billede coderdk Praktikant
03. maj 2004 - 17:22 #10
Nej, nej, den skal altid være 1 - den FÅR kun værdien 1 hvis den er checked ;)
Avatar billede coderdk Praktikant
03. maj 2004 - 17:23 #11
uden markering:

<input type="checkbox" name="christmasNext" value="1">

med markering:

<input type="checkbox" name="christmasNext" checked="checked" value="1">
Avatar billede tvbrandt Nybegynder
03. maj 2004 - 19:02 #12
Det virker sgu. Her er dine points.Men kan du ikke prøve at forklare mig hvorfor den skal være value="1" i begge tilfælde. Det er ikke logik i mine øjne, men det behøver det jo heller ikke altid at være. Tak for hjælpen. Jeg prøver lige selv. Det er fordi den kun skal sætte et 1-tal når den bliver "checked" ellers skal den sætte den til "False" som er 0. Er det korrekt?
Avatar billede coderdk Praktikant
04. maj 2004 - 08:35 #13
Jo, den behøver såmænd ikke være 1 du kan også skrive:

<input type="checkbox" name="christmasNext" value="hest">

Men $_POST['christmasNext'] vil kun være == 'hest' hvis checkboxen er checked ;)
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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