Webdesign in Siegen

Php-Problem [Script hat Probleme mit '{']

Fragen zum Thema PHP können hier gestellt werden

Moderator: Basti

Php-Problem [Script hat Probleme mit '{']

Beitragvon Kvn am 31.07.2008, 22:42

Morgen,

ich hab ein problemchen...
immer, wenn ich unten stehendes Script aufrufe kommt folgende meldung:
Parse error: syntax error, unexpected '{' in /usr/export/www/hosting/sostest/php/test.php on line 5
ich hab schon mehrere Stunden jeden einzelnen Buchstaben untersucht, ich kann einfach nichts finden... vielleicht findet ihr da etwas? Danke.

Code: Alles auswählen
<?php
$lvl=$_REQUEST['lvl'];

if($_POST)
  {
         if($lvl == 1 || $lvl == 2 || $lvl == 3 || $lvl == 4 || $lvl == 5 || $lvl == 6 || $lvl == 7 || $lvl == 8 || $lvl == 9 || $lvl == 10 || $lvl == 11 || $lvl == 12 || $lvl == 13 || $lvl == 14 || $lvl == 15 || $lvl == 16 || $lvl == 17 || $lvl == 18 || $lvl == 19 || $lvl == 20)
         {
   $ergebnis=100+(($lvl-1)*20);
   echo "Bei Stufe <b>$lvl</b> hat man <b>$ergebnis</b> Lebenspunkte.";   
            }
      else {
      echo "Bitte gib eine zahl zwischen 1 und 20 an, es sind nur ganze Zahlen erlaubt";
      }
  }
  else {
  ?>
   <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
   Stufe: <input type="text" name="lvl" maxlength="2" size="5">
   <br><br>
   <input type="submit" value="Errechnen">
   </form>
  <?php
  }

?>
Benutzeravatar
Kvn
Mitglied
 
Beiträge: 111
Registriert: 30.09.2006, 21:45
Wohnort: Hamburg

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Basti am 31.07.2008, 23:24

Ich denke das hängt mit dem $_POST in der if-Bedingung zusammen. Eine solche Abfrage ergibt eigentlich wenig Sinn.

Versuche es lieber einmal so:

Code: Alles auswählen
<?php

if(isset($_POST['send']))
{
  $lvl = $_POST['lvl'];

  if($lvl >= 1 && $lvl <= 20)
  {
    $ergebnis=100+(($lvl-1)*20);
    echo "Bei Stufe <b>$lvl</b> hat man <b>$ergebnis</b> Lebenspunkte.";   
  }
  else
  {
    echo "Bitte gib eine zahl zwischen 1 und 20 an, es sind nur ganze Zahlen erlaubt";
  }
}
else
{
?>
<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
  Stufe: <input type="text" name="lvl" maxlength="2" size="5">
  <br /><br />
  <input type="submit" name="send" value="Errechnen" />
</form>
<?php
}

?>


Als erstes wird nun überprüft, ob das Formular abgeschickt wurde, die Variable des Submit-Buttons also existiert (siehe name-Attribut). Erst dann machen weitere Operationen Sinn, also auch die Zuweisung der lvl-Variable. Anstatt $_REQUEST solltest du hier $_POST verwenden, da auf diese Weise sichergestellt wird, dass der Wert wirklich aus dem Formular stammt.
Die vielen ODER-Bedingungen in der nächsten if-Abfrage kannst du dir auch sparen, in dem du einfach sagst, dass das Level zwischen 1 und 20 liegen muss. Das sorgt nicht nur für mehr Übersichtlichkeit, sondern ist auch wesentlich schneller.
Ansonsten hat sich ja nichts geändert. Beim Formular habe ich lediglich noch die abschließenden Slashes für valides XHTML gesetzt und das name-Attribut für den Submit-Button hinzugefügt.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1965
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Kvn am 01.08.2008, 00:01

danke, geht super :)

wegen 1 || 2 || 3 etc.

das hab ich gemacht, weil komma-Zahlen nicht erlaubt sein sollen.
Benutzeravatar
Kvn
Mitglied
 
Beiträge: 111
Registriert: 30.09.2006, 21:45
Wohnort: Hamburg

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Manuel am 01.08.2008, 00:46

Na dann machs wie Basti das geschrieben hat + ne Abfrage isnumeric() oder wie auch immer die hieß. Es gibt auf jeden Fall eine Funktion mit der du testen kannst, ob es sich um eine Ganzzahl handelt. Denn der Quellcode dort ist nicht nur langsam, sondern auch extrem unschön ;)
Benutzeravatar
Manuel
Site Admin
 
Beiträge: 9085
Registriert: 10.12.2004, 19:29
Wohnort: Asbach

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Basti am 01.08.2008, 12:32

Ja, die entsprechende Funktion lautet is_numeric(), die kannst du dann einfach über ein weiteres && mit den anderen Bedingungen verknüpfen.

Falls die entsprechenden Werte noch spezieller wären könnte man auch mit einem Array arbeiten, bei dem dann überprüft wird, ob die aktuelle Zahl ein Element des Arrays ist (dies dann mit der Funktion in_array()). In diesem Fall lohnt sich das jedoch nicht.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1965
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Ingo am 01.08.2008, 13:38

Ergänzung: Mit is_numeric erfaßt man auch Fließkommazahlen. ctype_digit() prüft, ob ein String nur
aus Ziffern besteht. (Die POST-Variablen werden ja als String übergeben, auch wenn sie Zahlen darstellen.)
Die beste Browserweiche ... sitzt zwischen den Ohren ;o]
Benutzeravatar
Ingo
Moderator
 
Beiträge: 696
Registriert: 01.04.2007, 23:21
Wohnort: Neuss/NRW

Re: Php-Problem [Script hat Probleme mit '{']

Beitragvon Basti am 01.08.2008, 15:43

Ingo hat geschrieben:Ergänzung: Mit is_numeric erfaßt man auch Fließkommazahlen. ctype_digit() prüft, ob ein String nur
aus Ziffern besteht. (Die POST-Variablen werden ja als String übergeben, auch wenn sie Zahlen darstellen.)


Gut, dass wir jemand haben, der aufpasst :thumbsup:
An die Fließkommazahlen hatte ich bei der Funktion gar nicht mehr gedacht, die werden aber natürlich auch erkannt. Insofern ist ctype_digit() wohl die bessere Wahl.
Benutzeravatar
Basti
Moderator
 
Beiträge: 1965
Registriert: 15.06.2006, 17:33
Wohnort: Rheinbreitbach


Zurück zu PHP

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste