Gå til innhold

[LØST] Sjekk av checkbox


Anbefalte innlegg

Heisann

 

Lurer på om noen kan hjelpe meg med et problem jeg har?

Jeg skal sjekke om en checkbox er huket av og sende bruker til to forskjellige sider, avhengig av valget som er gjort i checkboksen.

 

Det som skjer nå er at uansett om checkbox er huket av eller ikke blir bruker sendt til siden DxS03.php

 

Utdrag fra form:

<input name="DxS02xF04" type="checkbox" id="DxS02xF04" value="Ja" />

 

Utdrag fra php kode:

if (@mysql_query($sql) && ('DxS02xF04 != Ja')){
 echo "<br /><br />Lagring av tur var vellykket.";
 echo "<meta http-equiv='refresh' content='3;URL=DxS03.php' />";
    } 
 elseif (@mysql_query($sql) && ('DxS02xF04 == Ja')){
 echo "<br /><br />Lagring av tur var vellykket.";
 echo "<meta http-equiv='refresh' content='3;URL=DxS02.php' />";
    } 
 else {
       echo("<P>Turen ble ikke opprettet, TRYKK TILBAKE FOR Å PRØVE IGJEN. <br /><br />ERROR: " .
  mysql_error() . "</P>");
}

 return true; 
}

Endret av Teobald
Lenke til kommentar
Videoannonse
Annonse
if (@mysql_query($sql) && ('DxS02xF04 != Ja'))

9625120[/snapback]

Tror ikke helt jeg har forstått hvorfor du setter inn: 'DxS02xF04 != Ja', dette blir vel en tekststreng som uansett er TRUE.

 

Bruker du post eller get i formen din? Og hva heter den? Dette må vel være avgjørende for hvordan du kan fange opp verdien?

 

Edit: ($_GET['DxS02xF04'] != 'Ja') eller ($_POST['DxS02xF04'] != 'Ja') vil kanskje funke avhengig av om du bruker post eller get.

Endret av magicgunnar
Lenke til kommentar

($_POST['DxS02xF04'] != 'Ja') fungerer fint.

 

Tusen takk for hjelpen =)

 

 

Når vi er inne på checkboxer...

 

Vet du hvordan man unngår å få meling:

Notice: Undefined index: DxS02xF04 in C:\www\TEST\DxS02.php on line 81

Ved posting av checkbox som ikke er huket av?

 

Man kan vel skjule dette ved å skru av:

error_reporting = E_ALL

 

Men, er det riktig måte å gjøre det på?

Vet error_reporting bør være skrudd av på webserver, men sliter jo med

å overse disse meldingene når jeg jobber på testmaskin... ;-)

Lenke til kommentar

Det vet jeg, tingen er at du sjekker en variabel opp mot gitte forhold. Hvis det ikke er noe i variabelen din så vil du få feil kode.

 

Jeg ville anbefale å skrive om koden din litt.

 

 

PHP

<?php

if (isset($_POST["DxS02xF04"]))

{

if (@mysql_query($sql) && ( ($_POST['DxS02xF04'] != 'Ja')

{

 echo "<br /><br />Lagring av tur var vellykket.";

 echo "<meta http-equiv='refresh' content='3;URL=DxS03.php' />";

}

 elseif (@mysql_query($sql) && ($_POST['DxS02xF04'] == 'Ja')

{

 echo "<br /><br />Lagring av tur var vellykket.";

 echo "<meta http-equiv='refresh' content='3;URL=DxS02.php' />";

}; 

}

else {

 echo("<P>Turen ble ikke opprettet, TRYKK TILBAKE FOR Å PRØVE IGJEN. <br /><br />ERROR: " .

mysql_error() . "</P>");

};

?>

 

Det burde funke mye berdre hvis jeg ikke husker helt feil da.

isset() sjekker om det er noe i variabelen og fungerer derfor bra til å sjekke om cheekboxes og lignende er satt. Mulig det ble noe feil her nå, men jeg tror det funker.

Endret av Hjelpphp
Lenke til kommentar

Det blir nok feil, da koden i den første if blokken bare blir kjørt når checkboxen er huka av.

 

Litt generel informasjon om checkboxer:

Ein checkbox fungerer ikkje heilt slik som andre form element, når ein checkbox ikkje er huka av så vil ikkje post variabelen bli satt. Dermed må du sjekke om ein checkbox er huka av ved å bruke array_key_exists():

PHP

<?php 

if(array_key_exists('bil'$_POST))

{

echo 'Du huka av checkboxen med name="bil"';

} else

{

echo 'Du huka ikkje av checkboxed med name="bil"';

}

 

 

Dermed så må du skrive om koden din litt. Det er nok lurt at du prøver skjølv, på den måten lærer du mest, men eg legger ved svartet.

 

Klikk for å se/fjerne innholdet nedenfor

PHP

$query = @mysql_query($sql);

if ($query && array_key_exists('DxS02xF04', $_POST))

{

 echo "<br /><br />Lagring av tur var vellykket.";

 echo "<meta http-equiv='refresh' content='3;URL=DxS03.php' />";

};

 elseif ($query)

{

 echo "<br /><br />Lagring av tur var vellykket.";

 echo "<meta http-equiv='refresh' content='3;URL=DxS02.php' />";

}; 

};

else {

 echo("<P>Turen ble ikke opprettet, TRYKK TILBAKE FOR Å PRØVE IGJEN. <br /><br />ERROR: " .

mysql_error() . "</P>");

};

 

PS: Det er og ein god ide å gjøre mysql_query _før_ if blokkene, fordi slik koden er no så vil mysql_query først kjørast i den første if'en og vist resten av if'en ikkje er sann så blir spørringen kjøyrd igjen i elseif'en (dermed vil då få dobbelt opp av rader)

Lenke til kommentar
Det blir nok feil, da koden i den første if blokken bare blir kjørt når checkboxen er huka av.

 

Er det ikke det som er hele poenget da? At hvis den er huket av og den er ja så går den til en side hvis den ikke er ja så går den til en annen side.

Hvis den ikke er huket av i det hele tatt så får man feil meldingen og må prøve på nytt.

 

Var sånn jeg forsto det.

Lenke til kommentar

Nei slik eg forstår det så skal første if kjørest vist den er satt mens elseif skal kjørest vist den ikkje er satt. I ditt eksempel så blir aldri elseif sann fordi den vil aldri nå den blokka vist post variabelen ikkje er satt.

Endret av Runar0
Lenke til kommentar

Jo da, det fungere ganske fint:)

 

PHP

<?php

$Hei "hallo";

if (isset($Hei))

{

if ($Hei !== 'hallo')

{

 echo "ikke lik";

}

elseif ($Hei == 'hallo')

{

echo "helt lik";

}; 

}

else 

{

echo "Prøv å definer Hei variablen før du kjører koden"

};

?>

 

Prøv å kjør denne koden så skal du se at det fungerer ganske bra.

Hvis variabelen er satt så sjekker den om den er lik "hallo" eller ikke. Hvis variabelen ikke er satt så går den til else og skriver ut "Prøv å definer Hei variabelen før du kjører koden".

 

Prøv å kjør det en gang først og så prøver du å ta vekk $Hei = "hallo". Så kommer du til å se at det fungerer.

Lenke til kommentar

Der tar du litt feil. For en checkbox vil ikke eksistere om den ikke er krysset av. Den vil rett og slett aldri bli sendt til scriptet.

Derfor er du litt ute å kjører med den koden der.

 

Bare å prøve denne koden, så skjønner du:

PHP
<?php

echo "<pre>";

print_r$_POST );

echo '

<form action="" method="post">

<input name="ape" type="checkbox" value="hallo" />

<input name="ape" type="checkbox" value="cat" />

<input name="submit" type="submit" value="jeje" />

</form>';

 

if (isset($_POST['ape']))

{

if ($_POST['ape'] !== 'hallo')

{

echo "ikke lik";

}

elseif ($_POST['ape'] == 'hallo')

{

echo "helt lik";

}

else 

{

echo "Prøv å definer Hei variablen før du kjører koden"

}

?>

 

EDIT: Blandet sammen min og din kode, slik at poenget kommer enda bedre frem.

Endret av M4rTiN
Lenke til kommentar
For en checkbox vil ikke eksistere om den ikke er krysset av. Den vil rett og slett aldri bli sendt til scriptet.

Derfor er du litt ute å kjører med den koden der.

 

Det er jo det som er poenget da, hvis den ikke blir krysset av så finnes den ikke og da finnes heller ikke post variabelen. Scriptet som jeg har skrevet sjekker om den variabelen er satt(dvs finnes). Hvis den finnes så sjekkes den opp mot gitte forhold. Er den ikke satt så sendes den vider til else og "Prøv å definer Hei variabelen før du kjører koden" blir skrevet ut.

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...