Teobald Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 (endret) 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 4. oktober 2007 av Teobald Lenke til kommentar
magicgunnar Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 (endret) 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 3. oktober 2007 av magicgunnar Lenke til kommentar
Teobald Skrevet 3. oktober 2007 Forfatter Del Skrevet 3. oktober 2007 ($_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
Flin Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 (endret) 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 3. oktober 2007 av Hjelpphp Lenke til kommentar
Runar0 Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 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
ZoRaC Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 Hva er forskjellen på array_key_exists('DxS02xF04', $_POST) og isset($_POST['DxS02xF04']) ? Lenke til kommentar
kakkle Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 Står et eksempel på php.net Se eksempel nr 250 dersom $var['key'] er null, returnerer isset false, mens array_key_exists returnerer true Lenke til kommentar
ZoRaC Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 Ja, men en checkbox vil vel aldri ha NULL-verdi? Lenke til kommentar
kakkle Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 Det er jo et poeng. Men dòg likevel greit å vite forskjell. Lenke til kommentar
Flin Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 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
Runar0 Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 (endret) 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 3. oktober 2007 av Runar0 Lenke til kommentar
Flin Skrevet 3. oktober 2007 Del Skrevet 3. oktober 2007 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
Martin A. Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 (endret) 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 <?phpecho "<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 4. oktober 2007 av M4rTiN Lenke til kommentar
Flin Skrevet 4. oktober 2007 Del Skrevet 4. oktober 2007 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå