Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Variable wird nicht übergeben

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] Variable wird nicht übergeben

    Hallo zusammen!
    Ich bin der Neue.

    ich lerne gerade php, bin also noch totaler anfänger. Nun soll ich das sogenannte "Nim-Spiel" programmieren. Also das Teil wo x Streichhölzer auf dem Tisch liegen, abwechselnd welche weggenomen werden und wer das letzte nehmen muss hat verloren.

    Das Ganze soll in 2 Dateien ablaufen.
    Datei1: Eingabe des Spielernamens; Eingabe der Anzahl der Hölzer im Haufen; Eingabe der maximalen Hölzer/Zug.

    Datei2: Computer zieht (natürlich so, dass er gewinnen wird);Spieler zieht;... bis einer verliert.

    Mein Problem ist, daß in Datei 2 nach absenden des Spielerzuges die somit veränserte Variable dre Anzahl der Hölzer nicht übernommen wird.

    Hier der Code:

    Datei 1:

    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="XHTML namespace">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Nim Spiel</title>
    </head>
    <body>
    <p><h1>Nim-Spiel</h1><br /><hr /><br /><br /></p>
    <form method="REQUEST" action="spielen.php">
    Name Spieler : 
    <input type="text" name="name" value="<?php echo $_REQUEST["name"]; ?>" /><br />
    Hölzer gesamt : 
    <input type="text" name="anz_haufen" value="<?php echo $_REQUEST["anz_haufen"]; ?>" /><br />
    Hölzer je Zug : 
    <select name = "anz_zug" size="1"/>
    <option value1="2">2</option>
    <option value1="3">3</option>
    <option value1="4">4</option>
    <option value1="5">5</option>
    </select><br /><br />
    <input type="submit" name="absenden" value="Absenden" />
     
    </form>
     
     
    </body>
    </html>


    Datei2:
    Code:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="XHTML namespace">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <title>Nim Spiel</title>
    </head>
    <body>
    <p><h1>Nim-Spiel spielen</h1><br /><hr /><br /><br /></p>
    <?php
     
    $name=$_REQUEST["name"];
    $anz_haufen=$_REQUEST["anz_haufen"];
    $anz_zug=$_REQUEST["anz_zug"];
    $teiler=$anz_zug+1;
    $spieler=$_REQUEST["spieler"];
     
    //testausgabe
    echo"$anz_haufen = Haufen <br>$anz_zug = anzahl Zug <br>$teiler = Teiler<br>$spieler = spieler<br>$pc_zug = pz-zug<br>";
    //testausgabe ende
     
    //Computer Zug und Haufen berechnen und ziehen
    $anz_haufen=$anz_haufen-$spieler;
    $pc_zug=$anz_haufen % $teiler;
    if($pc_zug==0) $pc_zug=$anz_zug-1;
    $anz_haufen=$anz_haufen-$pc_zug;
     
    echo"Der Computer hat $pc_zug Hölzchen genommen.<br>";
     
    //Computer gewinnt
    if($anz_haufen==1)
    {
    echo"Sie müssen das letzte Holz nehmen. Sie haben das Spiel verloren!";
    echo'<a href="nim-spiel.php" title="Nochmal spielen" target="_self">Nochmal spielen</a>';
    }
    else
    {
    //Spieler zieht
    echo"Es verbleiben $anz_haufen Hölzchen im Haufen<br><br>";
    echo"$name ist am Zug<br>";
     
    echo'<form method="POST" action="">';$anz_haufen;
    echo'Anzahl ziehen : <input type="text" name="spieler">';
    echo'<input type="submit" name="absenden" value="Ziehen" />';
    echo"</form>";
    }
     
    ?>
    </body>
    </html>

    Aber irgendwie wird in der Datei 2 die Variable $anz_haufen nicht mit dem neuen wert übergeben.
    Kann mir jemand sagen wo mein -bestimmt offensichtlicher- Fehler liegt?

    Danke
    Thorsten


  • #2
    Hallo und herzlich willkommen bei php.de!

    Du vergisst, dass PHP ein statusloses Protokoll ist, der Server weiß also nicht, ob dieser User die Seite schonmal angefragt hat. Damit die Variablen gespeichert werden, musst du sie in einer Datenbank oder Datei ablegen und beim nächsten Mal wieder auslesen.

    Außerdem wäre es nett, wenn du die PHP-Tags für das Highlighting hier im Forum verwendetest.
    Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

    Kommentar


    • #3
      Zitat von Manko10 Beitrag anzeigen
      Hallo und herzlich willkommen bei php.de!
      Außerdem wäre es nett, wenn du die PHP-Tags für das Highlighting hier im Forum verwendetest.
      Sorry, dachte die Formatierung wird mit übernommen, werd ich mir dann aber noch mal den entsprechenden eintrag zu Gemüte führen.

      ansonsten meinst du ich muss ein session cocie setzen?

      Kommentar


      • #4
        Eine Session wäre auch eine Möglichkeit, ja.
        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

        Kommentar


        • #5
          Quatsch, er benutzt doch nen Request Parameter. Da braucht er keine Session, keine DB oder dergl.

          PHP-Code:
           echo'<form method="POST" action="">';$anz_haufen;
          echo
          'Anzahl ziehen : <input type="text" name="spieler">';
          echo
          '<input type="submit" name="absenden" value="Ziehen" />';
          echo
          "</form>"
          - Was soll das? ;$anz_haufen; Auf ein ; reduzieren! Ich vermute, Du hast damit versucht, den neuen Wert zu übergeben. Ausgegeben wird aber nur eine Zahl vor dem Eingabefeld. Benutze einfach ein sogenanntes hidden field, ein Eingabefeld, das nicht angezeigt wird, dessen value Du mit dem Wert vorbelegst:
          PHP-Code:
           echo '<input type="hidden" name="anz_haufen" value="' .$anz_haufen'">'
          Nächstesmal bitte PHP Tags benutzen!
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            Danke!
            genau daran hatte ich auch schon gedacht, dass das in das form mit rein muss, ich hatte nur nicht geschnallt wie. Man, wie einfach.

            Was genau meinst du mit den php tags? ich hab zwar in die FAQ geschaut, ging aber davon aus dass damit "<?php?>" gemeint ist und das steht doch in meinem script?!?

            Kommentar


            • #7
              Zitat von nikosch77-new Beitrag anzeigen
              Ausgegeben wird aber nur eine Zahl vor dem Eingabefeld.
              Ne nichtmal das

              Und REQUEST als method-Attributwert gibt es auch nicht:
              HTTP/1.1: Method Definitions

              post und get machen fuer PHP Sinn, was in $_GET, $_POST und $_REQUEST landet, kannst du hier nachlesen:
              PHP: Superglobals - Manual
              "Mein Name ist Lohse, ich kaufe hier ein."

              Kommentar


              • #8
                Zitat von Chriz Beitrag anzeigen
                post und get machen fuer PHP Sinn
                Und vor allem erstmal für den Browser

                Kommentar


                • #9
                  @Thorsten: Ich meinte die [php] BB-Tags...

                  @Zerg: Du hast natürlich recht. $variable; ist meine absolute Lieblingsfunktionalität von php.
                  --

                  „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                  Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                  --

                  Kommentar

                  Lädt...
                  X