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?
Annonceindlæg fra Cognizant
!isset( $_POST['status']) )
mellemrum melle else og if
og du har glemt if i den sidste else
exp
Juniormester
10. juli 2003 - 10:01
#4
riversen >> elseif er korrekt...
ok, har aldrig set det sådan
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
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']; }
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.
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']; }
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...
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!"; } ?>
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!"; } ?>
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!"; } ?>
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!"; }
10. juli 2003 - 11:00
#15
ohmish --> jeg skal if'erne til at definere kontekstuelle meddelelser ;-)
10. juli 2003 - 11:01
#16
ok. så ska du nok bruge et array.. jeg kigger på'et
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?
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!"; }
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
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?)
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å..."
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?
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?"; }
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>
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 :-)
Vi tilbyder markedets bedste kurser inden for webudvikling