Avatar billede xfox Nybegynder
25. september 2003 - 13:33 Der er 17 kommentarer

Checkbox uden værdi

Jeg har problemer med min checkbox når jeg skal overfører værdien unmarked til en anden side.
Se link..

http://www.eksperten.dk/spm/405488
Avatar billede velle Nybegynder
25. september 2003 - 13:56 #1
Dette er startsiden flueben1.php:

<FORM method=get action="flueben2.php">
<INPUT type=checkbox name="checkbox">
<!-- der behøver ikke være nogen value -->
<INPUT type=submit>
</FORM>

Og dette er siden, der modtager POST-informationerne:

<?PHP
$chk = $_GET["checkbox"];
if (isset($chk))
    echo "er sat";
else
    echo "er ikke sat";
?>

Håber mit svar kan bruges. Du spørger bredt, så du får et bredt svar :-)

VH Velle
Avatar billede velle Nybegynder
25. september 2003 - 13:59 #2
Rettelse: "POST-informationerne" = "GET-informationerne".

Desuden kan isset() udelades så der blot står "if($chk) ...".
Avatar billede tipsen Nybegynder
25. september 2003 - 14:01 #3
Hvis du ikke afkrydser checkboksen er det ikke en "successful control" og værdien (eller manglen på samme) overføres derfor ikke. Læs evt. mere på:

http://www.w3.org/TR/html4/interact/forms.html#h-17.13.2
Avatar billede tipsen Nybegynder
25. september 2003 - 14:03 #4
<?PHP
$chk = $_GET["checkbox"];
if (isset($chk))

bør rettes til:

<?php
if (isset($_POST['chk']))
Avatar billede xfox Nybegynder
25. september 2003 - 14:08 #5
<?PHP
$chk = $_GET["checkbox"];
if (isset($chk))    JEG FÅR EN PARSE ERROR HER
    echo "er sat";
else
    echo "er ikke sat";
?>
Avatar billede xfox Nybegynder
25. september 2003 - 14:09 #6
Vent Jeg prøver lige...
Avatar billede xfox Nybegynder
25. september 2003 - 14:12 #7
Har prøvet: if (isset($_POST['chk'])), men stadig parse error
Avatar billede tipsen Nybegynder
25. september 2003 - 14:14 #8
Der er ikke noget galt med ovenstående linie - fejlen må ligge andetsteds.
Avatar billede xfox Nybegynder
25. september 2003 - 14:19 #9
Hvis jeg dropper isset får jeg fejlen: Undefined index checkboxnavn in line...
Avatar billede solja Nybegynder
25. september 2003 - 14:19 #10
Skal method ikke være POST i din form, jeg kan se du bruger GET

altså

FORM method="POST" action="flueben2.php">
<INPUT type="checkbox" name="checkbox">
<!-- der behøver ikke være nogen value -->
<INPUT type="submit">
</FORM>

//solja
Avatar billede velle Nybegynder
25. september 2003 - 14:21 #11
xfox

Mht. din rettelse til min kode. Mener du at der er noget galt med koden, eller mener du at det bare er pænere/mere korrekt at gå udenom at lægge værdien ind i en lokal variabel?

VH Velle
Avatar billede velle Nybegynder
25. september 2003 - 14:28 #12
Hovsa, den var egentligt ment til TIPSEN :-)
Avatar billede xfox Nybegynder
25. september 2003 - 14:30 #13
Her kommer min kode:

side1.php:

<form method="POST" action="rettet.php">
<p>Har betalt:</p><input TYPE="checkbox" name="betalt" <?php if ($betalt==1) {echo "checked";}?> ><br>
<input type="submit" VALUE="Ret">
</form>



rettet.php:

if ($_POST['betalt'])
{$betalt="1";}
else
{$betalt="0";}
Avatar billede velle Nybegynder
25. september 2003 - 14:33 #14
<?PHP
/* Dette PHP dokument virker perfekt hos mig, og bør virke ved dig, hvis ikke, så tror jeg problemet er din serveropsætning. */
if (!$_POST["submit"])
{
?>

<FORM method=post action="flueben.php">
<INPUT type=checkbox name=accept> Jeg accepterer vilkårene <BR>
<INPUT type=submit name=submit>
</FORM>

<?PHP
}
else
{
    if ($_POST["accept"])
        echo "Du har accepteret.";
    else
        echo "Du har ikke accepteret.";
}
?>
Avatar billede velle Nybegynder
25. september 2003 - 14:38 #15
Dit kodeeksempel virker fint ved mig. (med <?PHP ... ?> udenom rettet.php).
Avatar billede xfox Nybegynder
25. september 2003 - 14:48 #16
Det virker også fint nok undtagen når chekboxen er unmarked.
Den går også videre i if sætningen og udfører det den skal, men der kommer den fejlmeddelse på skærmen, når checkboxen som sagt er unmarked.
Avatar billede tipsen Nybegynder
26. september 2003 - 19:05 #17
velle: Hvis du gør følgende:

$test = $_GET['test'];

Vil du få en notice, hvis $_GET['test'] ikke er defineret - mange indstiller PHP til ikke at udskrive denne type fejl og vil derfor ikke opdage det, men formelt er det en fejl at sætte en variabel lig værdien af noget der evt. ikke eksisterer - derfor omskrivningen med isset()!

En anden mulighed, da det jo bliver lidt træls med $_GET og $_POST arrays adskillige gange i koden:

$test = isset($_GET['test']) ? $_GET['test'] : NULL;

if(isset($test)) {
  //do stuff
}
else {
  //do other stuff
}
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