kostenloser Webspace werbefrei: lima-city


50 Zeilen Code, Fehler in Zeile 77?

lima-cityForumProgrammiersprachenPHP, MySQL & .htaccess

  1. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    Guten abend,

    Ich habe folgenden PHP Code der so eigentlich erstmal nur zum testen des Grundgerüsts ist:

    <?php
    
    $zufall = rand(1,5);
    
    switch("$zufall")
      {
        case (1):
        $german="Hallo";
        $english="hello";
        break;
    
        case (2):
        $german="gehen";
        $english="go";
        break;
    
        case (3):
        $german="Warum?";
        $english="why?";
        break;
    
        case (4):
        $german="Landschaft";
        $english="landscape";
        break;
    
        case (5):
        $german="Stein";
        $english="stone";
        break;
      }
    
    ?>
    
    <html>
        <form action="Vokabeln.php" method="post"></form>
          <p><?php"$german"?><input type="text" name="Englischübersetzung" size="50" ><input type="submit" name="Button" value="Absenden"><br></p>
        </form>
    </html>
    
    <?php
    if($POST_Englischübersetzung=$english)
      {
      echo "Das war richtig!";
      }
    else
      {
      echo "Da war was falsch!";
      }
    ?>



    Wenn ich das ganze aber nun unter http://zettel.lima-city.de/Vokabeln.php aufrufen will erhalte ich die Fehlermeldung:
    Parse error: syntax error, unexpected '"' in /home/webpages/lima-city/zettel/html/Vokabeln.php on line 77


    Obwohl das Script nur 50 Zeilen lang ist...


    Kann mir jemand verraten wo mein Fehler liegt?
    Danke

    grüße
    Zettel

    Beitrag zuletzt geändert: 24.10.2010 21:42:24 von zettel
  2. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

  3. Keine Ahnung woher die Falsche Ausgabe kommt, aber in wirklichkeit liegt der Fehler in Zeile 37
    <?php"$german"?>

    Was das machen soll weiß ich nicht, eventuell versuchst du es mal so
    <?=$german?>
    mfg

    Beitrag zuletzt geändert: 24.10.2010 21:46:50 von syberpsace

  4. if($POST_Englischübersetzung=$english)


    Wahrscheinlich noch ein Fehler..
    Richtig wäre es wahrscheinlich
    if($_POST["Englischübersetzung"] == $english)


    Beitrag zuletzt geändert: 25.10.2010 21:04:24 von win32b
  5. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    Stimmt, bei Fehler 1 hatte ich irgendwie etwas übersehen, da musste noch ein "echo" vor, danke ;-)
    Punkt 2 dachte ich das meine Variante richtig wäre, habe jetzt aber mal deins übernommen und dazu noch ausgelagert, meien 2 Dateien sehen also so aus:

    Vokabeln.php

    <?php
    
    $zufall = rand(1,5);
    
    switch($zufall)
      {
        case (1):
        $german="Hallo";
        $english="hello";
        break;
    
        case (2):
        $german="gehen";
        $english="go";
        break;
    
        case (3):
        $german="Warum?";
        $english="why?";
        break;
    
        case (4):
        $german="Landschaft";
        $english="landscape";
        break;
    
        case (5):
        $german="Stein";
        $english="stone";
        break;
      }
    
    ?>
    
    <html>
        <form action="formular.php" method="post"></form>
          <p><?php echo "$german"; ?><input type="text" name="Englisch" size="50" ><input type="submit" name="Button" value="Absenden"><br></p>
        </form>
    </html>


    formular.php

    <?php
          if($_POST["Englisch"] == $english)
          {
          echo "Das war richtig!";
          }
          else
          {
          echo "Da war was falsch!";
          }
          ?>


    Inzwischen kann ich das ganzee nun normal aufrufen, jedoch passiert nun beim Absenden des Formulars genau garnichts, nachzulesen unter http://zettel.lima-city.de/Vokabeln.php.

    habt ihr dazu eventuell auchnoch eine lösung? :-)

    danke
    grüße

    Beitrag zuletzt geändert: 25.10.2010 16:30:04 von zettel
  6. win32b schrieb:
    Wahrscheinlich noch ein Fehler..
    Richtig wäre es wahrscheinlich
    if($POST["Englischübersetzung] == $english)
    Noch einen Fehler mehr, bitte? Jung, junge, junge... Wie soll denn das funktionieren? Wenn wir in den eckigen Klammern Anführungszeichen machen, dann müssen wir die auch irgendwo wieder zu machen. Und die Variable heißt $_POST und nicht $POST.
  7. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    drafed-map schrieb:
    win32b schrieb:
    Wahrscheinlich noch ein Fehler..
    Richtig wäre es wahrscheinlich
    if($POST["Englischübersetzung] == $english)
    Noch einen Fehler mehr, bitte? Jung, junge, junge... Wie soll denn das funktionieren? Wenn wir in den eckigen Klammern Anführungszeichen machen, dann müssen wir die auch irgendwo wieder zu machen. Und die Variable heißt $_POST und nicht $POST.


    sehr gut, danke, die Anführungszeichen hab ich schon wieder zu gemacht aber ich hatte statt $_POST in meiner ersten Lösung $POST_, danke

    Das ist eingefügt, funktioniert aber leider immer noch nicht, bzw. bei mir passiert weiterhin garnix...

    grüße
  8. Schonmal prinzipiell: Du erwartest also, dass immer genau zweimal hintereinander genau der selbe Zufallswert ausgewürfelt wird? Überdenke das doch noch einmal.
  9. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    Nein, das will ich nicht.
    Ich will einen Zufallswert abfragen, daraus dann die Variablen "$german" und "$english" bilden, dann soll dazu das jeweils gegenüber per Eingabe in das Formularfeld eingegeben werden und danach will ich überprüfen ob die Eingabe, mit dem richtigen Wert überinstimmt.

    grüße
    Zettel
  10. t****o

    Ich würde mal ein PHP-Tutorial lesen, switch-Anweisungen sehen auch ganz anders aus als bei dir...

    Einfach mal auf php.net die Funktionsbeschreibungen durchschauen und ein PHP-Tutorial lesen ;)

    Uuh, dein HTML-Code ist ja auch hübsch. Warte, da fehlt doch der Body?

    php-einfach.de
    http://tut.php-quake.net/de/
    php.net
    http://de.selfhtml.org/
  11. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    Also nach einem der Tutorials die ich gelesen habe :http://www.schattenbaum.net/php/switch.php ist meine switch-Anweisung nicht falsch aber wenn du mir sagen kannst wo mein Fehler sein sollte dann her damit. Mir ist ebenfalls bewusst wie eine html-Datei aufgebaut ist, da dies aber nur ein kleiner Einschub war dachte ich gehts auch ohne, was ich auch schon einige male gesehen habe...

    grüße
    Zettel
  12. t****o

  13. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    telelo schrieb:
    php.net/switch


    dann lies dir das doch bitte selbst mal durch und SAG mir was ich falsch gemacht hab und schreib mir keinen Link, nach meiner Ansicht sieht das bei mir genauso aus wie da...

    grüße
  14. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    ich würde es folgendermaßen machen:
    <?php
    
    $zufall = rand(1,5);
    
    switch($zufall)
    {
      case 1:
        $german = 'Hallo';
        $english = 'hello';
        break;
    
      case 2:
        $german = 'gehen';
        $english = 'go';
        break;
    
      case 3:
        $german = 'Warum?';
        $english = 'why?';
        break;
    
      case 4:
        $german = 'Landschaft';
        $english = 'landscape';
        break;
    
      case 5:
        $german = 'Stein';
        $english = 'stone';
        break;
    }
    
    ?>
    
    <html>
        <form action="formular.php" method="post">
          <p>
            <?php echo "$german"; ?>
            <input type="text" name="englisch" size="50" >
            <input type="submit" name="Button" value="Absenden">
            <input type="hidden" name="loesung" value="<?php echo $english; ?>">
            <br>
          </p>
        </form>
    </html>


    und formular.php:
    <?php
      if($_POST['englisch'] == $_POST['loesung'])
      {
          echo 'Das war richtig!';
      }
      else
      {
          echo 'Da war was falsch!';
      }
          ?>


    Anmerkungen:
    -> $english wird in einem versteckten input-Feld (loesung) übertragen
    -> bei case (1) usw. sind die Klammern überflüssig, aber könnten dir später Probleme bereiten
    -> ich denke mal, telelo bezog sich auf deinen Ausgangstext, wo du noch switch("$zufall") stehen hattest
    -> gewöhne dich bitte daran, bei php ' zu benutzen, und bei html ", das kann dir später einige Fehler verhindern und ist soweit ich weiß gängiger, außerdem tut das meinem Auge nicht so weh
    -> was sollte eig. das </form> direkt hinter der Formular-Öffnung?
    -> um deinen eigenen Code besser überschauen zu können, solltest du whitespaces (Leerzeichen, Zeilenumbrüche in diesem Fall) sinnvoll einsetzen, also im Prinzip bei php: zwischen {} werden alle Zeilen um zwei/vier Leerzeichen am Anfang ergänzt, nach einem Befehl kommt ein Zeilenumbruch.
    Bei html: zwischen <tag> und </tag> (sofern </tag> vorhanden) werden alle Zeilen um zwei/vier Leerzeichen am Anfang ergänzt, nach allem, das Zusammenhängt (ein Text, ein tag) kommt ein Zeilenumbruch.
    Javascript in etwa so, wie php.
    Kleine Anmerkung noch: wenn ein Element bei html zu viele oder zu lange Eigenschaften bekommt, würde ich auch diese untereinander schreiben, also:
    <ELEMENT
        type="text"
        name="inhalt"
        value="DER INHALT"
        onclick="if(this.value == '')
                   this.value = 'DER INHALT;
                 else
                   this.value = '';">
    
        ...
    
    </ELEMENT>


    Wenn du in deinem Code nur eine solche Frage hast, dann würde ich persönlich in diesem Fall eine Javascript-Methode zur Ausgabe vorziehen, also in etwa so (nur html-Bereich):
    <html>
        <form name="englischdeutsch">
          <p>
            <?php echo "$german"; ?>
            <input type="text" name="englisch" size="50" >
            <input type="button" 
                   name="Button" 
                   value="Absenden"
                   onclick="if(englischdeutsch.loesung.value == englischdeutsch.englisch.value)  // Richtige Lösung
                            {
                              alert('Die Lösung ist richtig!');
                              document.reload();
                            } else {
                              alert('Die Lösung ist falsch, bitte Versuchen Sie es noch einmal!');
                            }">
            <input type="hidden" name="loesung" value="<?php echo $english; ?>">
            <br>
          </p>
        </form>
    </html>


    Das hätte auch noch den Vorteil, dass man jemanden zwingen kann, die Lösung so oft zu probieren, bis er es schafft, ohne die Vokabel immer zu ändern.
    Falls die Vokabel immer gewechselt werden soll, einfach hinter alert('Die Lösung ist falsch, bitte Versuchen Sie es noch einmal!'); noch ein document.reload(); setzen.
    Ich bin mir nicht ganz sicher, ob document.reload(); funktioniert, sonst einfach:
    <html>
        <form name="englischdeutsch" action="VERWEIST AUF SICH SELBST" method="POST">
          <p>
            <?php echo "$german"; ?>
            <input type="text" name="englisch" size="50" >
            <input type="button" 
                   name="Button" 
                   value="Absenden"
                   onclick="if(englischdeutsch.loesung.value == englischdeutsch.englisch.value)  // Richtige Lösung
                            {
                              alert('Die Lösung ist richtig!');
                              englischdeutsch.submit();
                            } else {
                              alert('Die Lösung ist falsch, bitte Versuchen Sie es noch einmal!');
                            }">
            <input type="hidden" name="loesung" value="<?php echo $english; ?>">
            <br>
          </p>
        </form>
    </html>



    ich hoffe, du wirst dir meine Anmerkungen merken, und es hat dir weitergeholfen.
    PS: bei javascript solltest du auch wie bei php einfache Anführungszeichen benutzen!

    Beitrag zuletzt geändert: 27.10.2010 0:20:47 von ole-reglitzki
  15. yo mey!
    und ohne irgendein schnick-schnack (javascript [mag ja nicht ein jeder], &c.) und doch in nur eine datei (weil für sowas minimales 2 einfach nicht nötig sind) und schließlich ohne wildes-hin-und-her-schalten zwischen php und html (ist einfach unübersichtlich):
    <?php
    error_reporting (E_ALL);
    
    $zufall = rand(1,5);
    switch("$zufall") {
      case (1):
        $german="Hallo";
        $english="hello";
        break;
      case (2):
        $german="gehen";
        $english="go";
        break;
      case (3):
        $german="Warum?";
        $english="why?";
        break;
      case (4):
        $german="Landschaft";
        $english="landscape";
        break;
      case (5):
        $german="Stein";
        $english="stone";
        break;
    }
    
    echo <<< EOT
    <html>
        <!-- <form action="Vokabeln.php" method="post"> -->
        <form action="{$_SERVER['PHP_SELF']}" method="post">
          <p>$german
            <input type="text" name="english" size="50" /><br />
            <input type="hidden" name="random" value="$english" />
            <input type="submit" name="action" value="send" />
          </p>
        </form>
    </html>
    
    EOT;
    
    if ( isset ($_POST['action']) ) {
      if ( $_POST['english'] === $_POST['random'] ) {
        echo "Das war richtig!";
      } else {
        echo "Da war was falsch!";
      }
    }
    
    ?>
    das tut genau und einfach nur das, was du beschrieben hast.

    lg
    joseph
  16. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    czibere schrieb: yo mey!
    und ohne irgendein schnick-schnack (javascript [mag ja nicht ein jeder], &c.) und doch in nur eine datei (weil für sowas minimales 2 einfach nicht nötig sind) und schließlich ohne wildes-hin-und-her-schalten zwischen php und html (ist einfach unübersichtlich):
    <?php
    error_reporting (E_ALL);
    
    $zufall = rand(1,5);
    switch("$zufall") {
      case (1):
        $german="Hallo";
        $english="hello";
        break;
      case (2):
        $german="gehen";
        $english="go";
        break;
      case (3):
        $german="Warum?";
        $english="why?";
        break;
      case (4):
        $german="Landschaft";
        $english="landscape";
        break;
      case (5):
        $german="Stein";
        $english="stone";
        break;
    }
    
    echo <<< EOT
    <html>
        <!-- <form action="Vokabeln.php" method="post"> -->
        <form action="{$_SERVER['PHP_SELF']}" method="post">
          <p>$german
            <input type="text" name="english" size="50" /><br />
            <input type="hidden" name="random" value="$english" />
            <input type="submit" name="action" value="send" />
          </p>
        </form>
    </html>
    
    EOT;
    
    if ( isset ($_POST['action']) ) {
      if ( $_POST['english'] === $_POST['random'] ) {
        echo "Das war richtig!";
      } else {
        echo "Da war was falsch!";
      }
    }
    
    ?>
    das tut genau und einfach nur das, was du beschrieben hast.

    lg
    joseph


    hier ist aber wieder die falsche Schreibweise mit switch reingeflossen...
    Und wozu war der Error-Report gut?


    Dein Code müsste "richtig" heißen:

    <?php
    
    $zufall = rand(1,5);
    switch($zufall)
    {
      case 1:
        $german = 'Hallo';
        $english = 'hello';
        break;
    
      case 2:
        $german = 'gehen';
        $english = 'go';
        break;
    
      case 3:
        $german = 'Warum?';
        $english = 'why?';
        break;
    
      case 4:
        $german = 'Landschaft';
        $english = 'landscape';
        break;
    
      case 5:
        $german = 'Stein';
        $english = 'stone';
        break;
    }
    
    
    echo <<< EOT
    <html>
        <!-- FORMULAR_MIT_VERWEIS_AUF_SICH_SELBST -->
        <form action="{$_SERVER['PHP_SELF']}" method="post">
          <p>$german
            <input type="text" name="english" size="50" /><br />
            <input type="hidden" name="random" value="$english" />
            <input type="submit" name="action" value="send" />
          </p>
        </form>
    </html>
    
    EOT;
    
    if ( isset ($_POST['action']) ) {
      if ( $_POST['english'] === $_POST['random'] ) {
        echo "Das war richtig!";
      } else {
        echo "Da war was falsch!";
      }
    }
    
    ?>
  17. Autor dieses Themas

    zettel

    zettel hat kostenlosen Webspace.

    Ich bedanke mich für diese super Antworten und werde heute abend, sobald ich etwas mehr zeit habe dazu auch noch ein bisschen mehr schreiben :-)

    grüße
    Zettel
  18. @ole-reglitzki
    ...hier ist aber wieder die falsche Schreibweise mit ... Dein Code müsste "richtig" heißen
    hast du den ausprobiert? er funzt! ein richtiger code tut das ;o)

    Und wozu war der Error-Report gut?
    diese frage ist nicht dein ernst!? ist doch, dann nerve hir die leute nicht, die php programmieren, sondern fange an mit basic unter cp/m.

    lg
    joseph
  19. ole-reglitzki

    Kostenloser Webspace von ole-reglitzki

    ole-reglitzki hat kostenlosen Webspace.

    @czibere:
    ...hier ist aber wieder die falsche Schreibweise mit ... Dein Code müsste "richtig" heißen
    hast du den ausprobiert? er funzt! ein richtiger code tut das ;o)

    hab ihn nicht ausprobiert, aber s. unten...
    Da er ja anscheinend funktioniert, wenn ich dir mal glauben darf, waren lediglich die ausdrücke 'falsch' und 'richtig' ein wenig zu stark, dann sollten sie durch 'relativ unsauber' und 'etwas gesäubert' ersetzt werden. sorry dafür!


    Und wozu war der Error-Report gut?
    diese frage ist nicht dein ernst!? ist doch, dann nerve hir die leute nicht, die php programmieren, sondern fange an mit basic unter cp/m.

    Die Frage war anders gemeint: Weshalb sollte er ihn einbauen (wollen)?

    Und sonst noch: warum so beibringen, dass es seine Arbeit (später) erleichtern kann (siehe meine Anmerkungen in vorletztem Post), wenn es auch anders geht (siehe dein Code, bitte bei php ' nutzen, erhöht die Lebenszeit von Php-Scriptern, die bei solchen Scripts immer ihren Frust durch eine Zigarette abbauen müssen :smokin::smokin::smokin:)?
  20. Wenn ihr schon an der Code-Formatierung feilt, dann aber bitte richtig:
    [...]
    if (isset ($_POST['action'])) {
      if ($_POST['english'] == $_POST['random']) {
        echo 'Das war richtig!';
      } else {
        echo 'Da war was falsch!';
      }
    }

    - Keine Lücken in den Klammern der Sprachkonstrukte
    - === nur, wenn explizit benötigt
    - " nur, wenn explizit benötigt.
    - ?> nie, außer mit HTML interpoliert

    Zudem sollte die Switch-Anweisung eher ein Array sein und die Ausgabe eher ein Template.
  21. @nikic
    Wenn ihr schon an der Code-Formatierung feilt, ...
    yo mey! google: 'php "coding standards" '. ja da kommen natürlich ein paar seiten zurück (207.000), mit so vielen unterschidlichen standards wie seiten (zend-, drupal-, ... &c. standards und weißt der kukuck ...)
    ich bin dafür:
    1. man sollte in der lage sein sich an ein team anzupassen
    2. man sollte einen eigenen klaren stil haben
    3. man sollte sich an php.net orientieren

    lg
    joseph
  22. Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!

    lima-city: Gratis werbefreier Webspace für deine eigene Homepage

Dir gefällt dieses Thema?

Über lima-city

Login zum Webhosting ohne Werbung!