Avatar billede biodk Nybegynder
03. december 2003 - 15:00 Der er 14 kommentarer

Fejl med if

Hejsa.
Har denne kode, hvor ligger min fejl?
<?

if ($rum == 0)
{
echo "Velkommen til herberget";
}
else if ($rum == 1)
{
echo "Velkommen til din lejlighed";
}
else if ($rum == 2)
{
echo "Velkommen til din penthouse";
}
   
   
   
?>

siden hvor jeg tester er $rum = 2
men den skriver bare hele tiden Velkommen til herberget, hvorfor det???
Avatar billede erikjacobsen Ekspert
03. december 2003 - 15:08 #1
Måske fordi $rum faktisk ikke er 2. Hvor kommer den fra
Avatar billede sukos Juniormester
03. december 2003 - 15:10 #2
Brug hellere en defineret var:

<?php
if(isset($_GET["rum"])) {
if ($_GET["rum"] == 0)
{
echo "Velkommen til herberget";
}
else if ($_GET["rum"] == 1)
{
echo "Velkommen til din lejlighed";
}
else if ($_GET["rum"] == 2)
{
echo "Velkommen til din penthouse";
}
else
{
echo"Valgte rum er desværre ikke muligt!";
}
}
?>
Avatar billede angak Nybegynder
03. december 2003 - 15:11 #3
Du skal skrive:

elsif ($rum == 1)
{
echo "Velkommen til din lejlighed";
}
elsif ($rum == 2)
{
echo "Velkommen til din penthouse";
}
Avatar billede biodk Nybegynder
03. december 2003 - 15:39 #4
begge metoder skriver bare stadig

Velkommen til herberget
Avatar billede angak Nybegynder
03. december 2003 - 15:41 #5
Som erikjacobsen skriver: Hvor kommer $rum fra? Hvor sætter du den til en værdi?
Avatar billede biodk Nybegynder
03. december 2003 - 16:03 #6
$rum er defineret på min side. den tjekker db for et tal.

og på min side hvor jeg tester har jeg prøvet med

echo "rum = $rum";

og der skriver den 2.. Men de tekster jeg har lavet tilsvarende skriver hele til Velkommen til herber... som om $rum lig med 0..
Avatar billede sone Nybegynder
03. december 2003 - 16:08 #7
Der må ikke være mellemrum mellem else og if, skal være elseif sådan som din kode er.
Avatar billede erikjacobsen Ekspert
03. december 2003 - 16:46 #8
Hele din kode, tak.
Avatar billede nicklasb Nybegynder
03. december 2003 - 16:51 #9
sone -> Hvorfor må der ikke være mellemrum? Er det en ny regel der er kommet oder was? Syntes egentligt det er lidt underligt hvis det skulle være rigtigt.. For i den moderssproget til php, c og c++ er den eneste måde at gøre det på MED mellemrum..

tror også det ville være klart at fortrække, at se hele koden.. For tror ikke det er i den der if der er noget galt..
Avatar billede biodk Nybegynder
03. december 2003 - 18:08 #10
her er min kode, jeg har ændret lidt for at gøre den lidt nemmere.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<table width="689" height="540" border="0">
  <tr>
    <td width="454" height="48">Online Byen</td>
    <td width="214" rowspan="3">

   
<?

switch($rum)
{
    case 0:  echo "Velkommen til herberget"; break;
    case 1:  echo "Velkommen til din lejlighed"; break;
    case 1:  echo "Velkommen til din penthouse"; break;
    default: echo "Desværre, rummet findes ikke!"; break;
}

?>

    </td>
  </tr>
  <tr>
    <td height="383" width="454">
    <?
require_once("db_con.php4");


if ($rum == 0)
{
echo "Herberget";
}
else if ($rum == 1)
{
echo "Lejlighed";
}
else if ($rum == 2)
{
echo "Penthouse";
}
   
$query = $db->SendSQL("SELECT * FROM login WHERE brugernavn='".$_SESSION["s_brugernavn"]."' AND password='".$_SESSION["s_password"]."'");
    $rum = $query[0][8];
    $picture = (!$rum)? '/~steffen/grafik/rum/rum.jpg' : '/~steffen/grafik/rum/rum'.($rum).'.jpg';
       
echo "<img src='$picture'>";
echo "rum = $rum";

    ?>

   
   
    </td>
  </tr>
  <tr>
    <td height="101" width="454">
      <?



$s_bits = $query[0][7];


      echo "Hej ". $_SESSION["s_brugernavn"]."<br/>";
      echo $_SESSION["s_brugertype"]."<br/>";
      echo $s_bits;
    ?>
    </td>
  </tr>
</table>
</body>
</html>

og der hvor jeg laver echo "rum = $rum"; viser den 2 når jeg logger ind med min 2 bruger, men den skriver stadig herberget teksten...
Avatar billede erikjacobsen Ekspert
03. december 2003 - 18:18 #11
Det var måske en ide at bruge if-sætningerne med $rum efter at $rum
har fået sin værdi fra databasen.
Avatar billede sone Nybegynder
04. december 2003 - 09:42 #12
Hvis du bruger if-else, så laver den "mange" sammenligninger (flere if'er).
Hvis du bruger if-elseif-elseif-else, så er du stadig i samme if-sætning og er derfor lidt hurtigere.
Avatar billede xyborx Nybegynder
04. december 2003 - 09:46 #13
Hvad med at at bruge switch ligesom du har gjort det andet sted på siden?

switch($num)
{
    case 0: echo "Herberget"; break;
    case 1: echo "Lejlighed"; break;
    case 2: echo "Penthouse"; break;
}
Avatar billede biodk Nybegynder
04. december 2003 - 13:39 #14
har selv fået det lavet.. sone og erikjacobsen deler point'ene.. erikjacobsen indsend venligst et svar.
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