Avatar billede allandk Nybegynder
10. juli 2003 - 09:54 Der er 23 kommentarer og
2 løsninger

Kan du finde fejlen i denne if/else?

Jeg har lavt denne if/else som kun virker hvis jeg skriver status = 0

session_start();
$_SESSION = array();
session_destroy();

if (!isset $_POST['status']) {
    echo "Status er IKKE sat!";
    }

if ($_POST['status'] == 0) {
    echo "Status = " . $_GET['status'];
    }

elseif ($_POST['status'] == 1) {
    echo "Status = " . $_GET['status'];
    }

elseif ($_POST['status'] == 2) {
    echo "Status = " . $_GET['status'];
    }

else ($_POST['status'] == 3) {
    echo "Status = " . $_GET['status'];
    }

Er der nogle oplagte fejl i den?
Avatar billede riversen Nybegynder
10. juli 2003 - 09:56 #1
!isset( $_POST['status']) )
Avatar billede riversen Nybegynder
10. juli 2003 - 09:57 #2
mellemrum melle else og if
Avatar billede riversen Nybegynder
10. juli 2003 - 09:57 #3
og du har glemt if i den sidste else
Avatar billede exp Juniormester
10. juli 2003 - 10:01 #4
riversen >>
elseif er korrekt...
Avatar billede riversen Nybegynder
10. juli 2003 - 10:05 #5
ok, har aldrig set det sådan
Avatar billede sukos Juniormester
10. juli 2003 - 10:10 #6
Jeg ville gøre så'n

if (!isset($_POST['status'])) {
    echo "Status er IKKE sat!";
    }else{

if ($_POST['status'] == 0) {
    echo "Status = " . $_POST['status'];
    }elseif ($_POST['status'] == 1) {
    echo "Status = " . $_POST['status'];
    }elseif ($_POST['status'] == 2) {
    echo "Status = " . $_POST['status'];
    }elseif($_POST['status'] == 3) {
    echo "Status = " . $_POST['status'];
    }
}

Går ud fra det er POST og ikke GET som skal echo'es
Avatar billede exp Juniormester
10. juli 2003 - 10:11 #7
<?php
session_start();
$_SESSION = array();
session_destroy();

if (!isset($_POST['status'])) {
  echo "Status er IKKE sat!";
}

if ($_POST['status'] == 0) {
  echo "Status = " . $_GET['status'];
} elseif ($_POST['status'] == 1) {
  echo "Status = " . $_GET['status'];
} elseif ($_POST['status'] == 2) {
  echo "Status = " . $_GET['status'];
} else ($_POST['status'] == 3) {
  echo "Status = " . $_GET['status'];
}
Avatar billede riversen Nybegynder
10. juli 2003 - 10:11 #8
jeg ville lige tilføje en else på sukos' forslag...hvis den første er sand er det jo unødvendigt at tjekke alle de andre.
Avatar billede exp Juniormester
10. juli 2003 - 10:14 #9
session_start();
$_SESSION = array();
session_destroy();

if (!isset($_POST['status'])) {
  echo "Status er IKKE sat!";
} elseif ($_POST['status'] == 0) {
  echo "Status = " . $_GET['status'];
} elseif ($_POST['status'] == 1) {
  echo "Status = " . $_GET['status'];
} elseif ($_POST['status'] == 2) {
  echo "Status = " . $_GET['status'];
} else ($_POST['status'] == 3) {
  echo "Status = " . $_GET['status'];
}
Avatar billede allandk Nybegynder
10. juli 2003 - 10:46 #10
Jeg ved ikke rigtig hvor jeg går galt, men ingen af forslagene kan jeg få til at virke...
Avatar billede ohmish Nybegynder
10. juli 2003 - 10:47 #11
den dovne (men kloge?) hund ville sige:

<?php
session_start();
$_SESSION = array();
session_destroy();
$status = $_POST['status'];

if ($status) || is_int(!$status)) {
echo "Status = " . $_GET['status'];
} else { echo "Status er IKKE sat!"; }
?>
Avatar billede ohmish Nybegynder
10. juli 2003 - 10:48 #12
hov.. rettelse:

<?php
session_start();
$_SESSION = array();
session_destroy();
$status = $_POST['status'];

if ($status && is_int(!$status)) {
echo "Status = " . $status;
} else { echo "Status er IKKE sat!"; }
?>
Avatar billede ohmish Nybegynder
10. juli 2003 - 10:50 #13
sikke jeg kan lave fejl.
sådan:

<?php
$status = $_POST['status'];
if ($status && is_int($status)) {
echo "Status = " . $status;
} else { echo "Status er IKKE sat!"; }
?>
Avatar billede ohmish Nybegynder
10. juli 2003 - 10:55 #14
og igen (det blir mere og mere simpelt):

$status = $_POST['status'];
if ($status) { echo "Status = " . $status; }
else {
echo "Status er IKKE sat!"; }
Avatar billede allandk Nybegynder
10. juli 2003 - 11:00 #15
ohmish --> jeg skal if'erne til at definere kontekstuelle meddelelser ;-)
Avatar billede ohmish Nybegynder
10. juli 2003 - 11:01 #16
ok. så ska du nok bruge et array.. jeg kigger på'et
Avatar billede allandk Nybegynder
10. juli 2003 - 11:16 #17
Nu fik jeg alligevel denne version til at virke:

<?php
if (!isset($_GET['status'])) {
    echo "Status er IKKE sat!";
    }else{

if ($_GET['status'] == 0) {
    echo "Status = " . $_GET['status'];
    }elseif ($_GET['status'] == 1) {
    echo "Status = " . $_GET['status'];
    }elseif ($_GET['status'] == 2) {
    echo "Status = " . $_GET['status'];
    }elseif($_GET['status'] == 3) {
    echo "Status = " . $_GET['status'];
    }
}
?>

<br><a href="logud.php?status=">Status er IKKE sat</a>
<br><a href="logud.php?status=1">Status = 1</a>
<br><a href="logud.php?status=2">Status = 2</a>
<br><a href="logud.php?status=3">Status = 3</a>


Men meningen var jo netop, at hvis status ikke er sat så skal den printe og hvis først den har været sat en gang så...

Kan man lave sådan en slags if status IKKE er lig 1 OR 2 OR 3?
Avatar billede ohmish Nybegynder
10. juli 2003 - 11:16 #18
$status = $_POST['status'];

$message = array (
'1' => 'Ja det er så 1eren',
'2' => '2 test',
'3' => '3 sefdrrg',
'4' => '4 34ertwersdf',
'5' => '5 wer xcv fg',
'10' => '6 ttyuty',
'20' => '7 qweqwe',
'40' => '8 werr');

if (array_key_exists($status,$message)) {
echo "Status = " . $message[$status]; }
else {
echo "Status er IKKE sat!"; }
Avatar billede ohmish Nybegynder
10. juli 2003 - 11:20 #19
det må da være den smarteste løsning..

jeg er ikke helt sikker på hvad du vil have spyttet ud, men nu ka du verificere/oversætte $status med array'et uden 40 if-sætninger
Avatar billede allandk Nybegynder
10. juli 2003 - 13:29 #20
ohmish --> jeg kan ikke få ovenstående eks. til at virke...
sukos/exp --> har I en afrundende bemærkning (sukos smider du også et svar?)
Avatar billede ohmish Nybegynder
10. juli 2003 - 16:43 #21
vent lige med at lukke..

hva mener du med: "Men meningen var jo netop, at hvis status ikke er sat så skal den printe og hvis først den har været sat en gang så..."
Avatar billede allandk Nybegynder
10. juli 2003 - 21:05 #22
Jeg lukker ikke før sukos smider et svar og I får alle lidt for de gode eksempler :-)

Jeg mente, at hvis nu man forsøgsvis klikker på et link (side.php?status=3) og så bagefter - af ren nysgerrighed selv skriver status=1000 eller status=postmand%20per så vil ovenstående if/else ikke virke.

Er du med?
Avatar billede exp Juniormester
10. juli 2003 - 21:08 #23
if($_POST['status'] != 0 || $_POST['status'] != 1 || $_POST['status'] != 2 ||$_POST['status'] != 3) {
  echo "<b>Ugyldig status!</b> Prøver du at fuske?";
}
Avatar billede allandk Nybegynder
10. juli 2003 - 21:33 #24
exp --> den "låser" fast; herunder min nye kode:

<?php
session_start();
$_SESSION = array();
session_destroy();

if($_GET['logud_status'] !=0 || $_GET['logud_status'] !=1 || $_GET['logud_status'] !=2 ||$_GET['logud_status'] !=3) {
  echo "<b>Ugyldig status!</b> Prøver du at fuske?";
}

else {
    if ($_GET['logud_status'] == 0) {
//        ikke logget på og sendes til log på-side
        echo "Se fejlmeddelelse # " . $_GET['logud_status'];
//        header("Location:html.php?side=logind");
        }

    elseif ($_GET['logud_status'] == 1) {
//        logget af og tilbage til forsiden
//        header("Location: html.php");
        echo "Se fejlmeddelelse # " . $_GET['logud_status'];
        }

    elseif ($_GET['logud_status'] == 2) {
//        brugernavn er optaget
        echo "<font color=\"red\">Det ønskede brugernavn er desværre optaget!</font>";
        echo "Se fejlmeddelelse # " . $_GET['logud_status'];
        }

    elseif($_GET['logud_status'] == 3) {
        echo "Se fejlmeddelelse # " . $_GET['logud_status'];
?>

<p class="tekst-overskrift"><font color="red">Desværre...</font></p>
<p>Den indtastede e-mail-adresse <b><?php echo $_POST['email']; ?></b> findes ikke i vores database.</p>
<p><a href="html.php?side=pw1">Prøv igen...</a>

<?php
    }
}
?>

<hr><a href="html.php?side=logud&logud_status=">Status er IKKE sat</a>
<br><a href="html.php?side=logud&logud_status=1">Se fejlmeddelelse #1</a>
<br><a href="html.php?side=logud&logud_status=2">Se fejlmeddelelse #2</a>
<br><a href="html.php?side=logud&logud_status=3">Se fejlmeddelelse #3</a>
Avatar billede allandk Nybegynder
18. juli 2003 - 12:56 #25
Hej begge - beklager ventetiden... Jeg har lavet en anden fejlside, men fik da lært noget af jeres svar, så det bliver en deler. Håber det er i orden :-)
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