# verschachtelte if-Anweisung



## Bawla (17. Januar 2008)

Als PHP-Anfänger bin ich grad dabei verschachtelte if-Anweisungen zu üben:
folgender Code funktioniert nicht - ich probier schon ewig aber finde keinen Fehler. Wäre super wenn mal jemand drüber schauen könnte. Besten Dank.

Egal wieviel kg Äpfel eingegeben wurden, es greift immer auf die erste if-Anweisung zu.


```
<html>
<head>
<title>Eingabe für verschaltete if-Anweisung</title>
</head>
<body>
Wieviel Kilogramm Äpfel wollen Sie bestellen<br>
Der Versandpreis berechnet sich je nach Kilogramm:<br>

<p>Bitte geben Sie Ihre Bestellmenge ein:</P>
<form action="verschachtelt.php" method="POST">
<p>Bestellmenge: <input name="gewicht"></p>
<input type="submit" value="Senden">
<input type="reset" value="Zurücksetzen">
</form>
</body>
</html>
```


```
<html>
<head>
<title>Verschachtelte if-Anweisung</title>
</head>
<body>
<?php
$menge = $gewicht;
if ($menge < 5)
{
  echo "Sie haben weniger als 5 Kilo Äpfel gekauft, deswegen kostet der Versand pauschal 7 Euro!.";
}
else 
{
  if ($menge <= 7.5)
  {
    echo "Sie haben zwischen 5 und 7,5 Kilo Äpfel bestellt der Versand ist deshalb kostenlos!";
  }
  else 
  {
  echo "Sie mehr als 7,5 Kilo Äpfel bestellt, deshalb werden pauschal 7 Euro Versand fällig.";
  }
}
?>
</body>
</html>
```


----------



## kuddeldaddeldu (17. Januar 2008)

Hi,

vermutlich ist register_globals ausgeschaltet, was auch gut so ist. D.h. Deine Post-Variablen stehen im Script *nicht* als $feldname zur Verfügung. Du musst über $_POST darauf zugreifen ($_POST['feldname']). 

LG


----------



## brainsucker (17. Januar 2008)

```
<html> 
<head> 
<title>Verschachtelte if-Anweisung</title> 
</head> 
<body> 
<?php 
$menge = $_POST[gewicht]; 
if ($menge < 5) 
{ 
  echo "Sie haben weniger als 5 Kilo Äpfel gekauft, deswegen kostet der Versand pauschal 7 Euro!."; 
} 
else  
{ 
  if ($menge <= 7.5) 
  { 
    echo "Sie haben zwischen 5 und 7,5 Kilo Äpfel bestellt der Versand ist deshalb kostenlos!"; 
  } 
  else  
  { 
  echo "Sie mehr als 7,5 Kilo Äpfel bestellt, deshalb werden pauschal 7 Euro Versand fällig."; 
  } 
} 
?> 
</body> 
</html>
```

Besser und ein wenig sicherer ist das hier:

```
<html> 
<head> 
<title>Verschachtelte if-Anweisung</title> 
</head> 
<body> 
<?php 
$menge = mysql_real_escape_string($_POST[gewicht]); 
if ($menge < 5) 
{ 
  echo "Sie haben weniger als 5 Kilo Äpfel gekauft, deswegen kostet der Versand pauschal 7 Euro!."; 
} 
else  
{ 
  if ($menge <= 7.5) 
  { 
    echo "Sie haben zwischen 5 und 7,5 Kilo Äpfel bestellt der Versand ist deshalb kostenlos!"; 
  } 
  else  
  { 
  echo "Sie mehr als 7,5 Kilo Äpfel bestellt, deshalb werden pauschal 7 Euro Versand fällig."; 
  } 
} 
?> 
</body> 
</html>
```


----------



## kuddeldaddeldu (17. Januar 2008)

Hi,

da würde ich dann aber floatval statt mysql_real_escape_string nehmen. Er steckt's doch gar nicht in eine Datenbank. 

LG


----------



## brainsucker (17. Januar 2008)

noch nicht!  Hast aber recht!


----------



## CraisiePrinzZ (18. Januar 2008)

Ich würd es vielleicht eher so schreiben.


```
if ($menge < 5 || $menge > 7.5) 
{ 
  echo "Sie haben weniger als 5 Kilo oder mehr als 7,5 Kilo Äpfel gekauft, deswegen kostet der Versand pauschal 7 Euro!."; 
}

if ($menge >= 5 && $menge <= 7.5) 
  { 
    echo "Sie haben zwischen 5 und 7,5 Kilo Äpfel bestellt der Versand ist deshalb kostenlos!"; 
  }
```


----------

