Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus Textdatei werden nicht richtig übergeben?

Einklappen

Neue Werbung 2019

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

  • Daten aus Textdatei werden nicht richtig übergeben?

    tag auch leute - ich bastle gerade an einem kleinen zahlenrate spiel und bin rellativ vorm ende - allerdings bin ich beim letzten Punkt in dem ich will das mir PHP immer wieder die zuletzt geratende Zahl ausgibt - das erste mal klappt super, beim zweiten mal allerdings gibt er mir nur die vorletzte zahl aus, nicht die neue die eigendlich in der textdatei aktualisiert ist
    also ca so: ich gebe 10 ein, 10 wird übergeben und geprüft - dann gebe ich 20 ein und php sagt mir das mein zweiter versuch 20 ist und der letzte 10 - soweit so gut
    dann gebe ich 30 ein als dritter versuch - nun müsste mir PHP sagen das die letzte Zahl 20 ist - aber sie gibt mir dennoch nur 10 zurück.. und genau warum das ist verstehe ich nicht
    auf seite2. übergebe ich sie und auf seite3. macht php alles richtig - aber von seite3. die zahl auf seite 4 zu übergeben will nicht recht
    PHP-Code:
     <?php
    // Seite 2
    session_start();
            echo 
    "<meta charset='UTF-8'>";
            
    $raten $_POST['raten'];
            
    $zahl $_SESSION['generate'] = rand(1,100);
            echo 
    "<br><br>";
           
           
    ########################################################       
     
            #öffnen und lesen von Datei
            
    $öffnen fopen("./ratevar.txt","w+");
           
            
    #in datei ( $öffnen ) inhalt von $raten speichern
            
    fwrite($öffnen$raten);
           
            echo 
    "<b> $zahl </b>";
     
    ########################################################
     
     
    #wenn zu groß, zu klein oder leer
            
    if($raten 100 or $raten or empty($raten))
                    echo 
    "<span style='color:#dc143c;'> Die Zahl ist nicht im gewünschten Bereich! </span>";
           
    #Wenn richtig geraten
                    
    else if($zahl == $raten)
                    {
                    echo 
    "GRATULATION! Du hast das Spiel gewonnen! Clicke <a href = './ubung.php'> hier</a> um das Spiel erneut zu spielen!";
                    unset(
    $_SESSION);
                    }
           
    #wenn zu klein geraten
            
    else if($raten $zahl)
                    echo 
    "Deine erste Zahl ist $raten! Sie ist aber größer als die gesuchte Zahl! Deine Zahl muss zwischen 1 und $raten liegen!
                            du hast noch <span style='color:#dc143c;'> <b> 4 Versuche! </b> </span> "
    ;
           
    #wenn zu größ geraten
            
    else if($raten $zahl)
                    echo 
    "Deine erste Zahl ist ".$raten"! Sie ist aber kleiner als die gesuchte Zahl! Deine Zahl muss zwischen $raten und 100 liegen!
                            du hast noch <span style='color:#dc143c;'> <b> 4 Versuche! </b> </span> "
    ;
     
    #sofern nicht richtig geraten - neuen Versuch erstellen
            
    if($zahl $raten or $zahl $raten)
                    echo 
    "<form action='seite3.php' method='POST'><br>
                            <input type='text' name='raten2' placeholder='Versuch 2'>
                            <input type='submit' value=' Checken! '>
                            </form>"
    ;
                   
            
    #schließt die offene Datei    
                    
    fclose($öffnen);
            
    ?>
    PHP-Code:
    <?php
    // Seite 3
    #Versuch 2
    session_start();
            
    $raten2 $_POST['raten2'];
            
    $zahl $_SESSION['generate'];
    #öffnen und lesen der datei
            
    $öffnen fopen("./ratevar.txt","r""w");
    #inhalt der Datei in Variable speichern
            
    $raten fgets($öffnen10);
     
    #wenn zu groß, zu klein oder leer
            
    if($raten2 100 or $raten2 or empty($raten2))
                    echo 
    "<span style='color:#dc143c;'> Die Zahl ist nicht im gewünschten Bereich! </span>";
     
    #Wenn richtig geraten          
            
    else if($zahl == $raten2)
                    {
                    echo 
    "GRATULATION! Du hast das Spiel gewonnen! Clicke <a href = './ubung.php'> hier</a> um das Spiel erneut zu spielen!";
                    unset(
    $_SESSION);
                    }
           
    #wenn zu klein geraten         
            
    else if($raten2 $zahl)
                    echo 
    "Deine vorherige Zahl ist <b> $raten </b> gewesen! <br><br>
                            Deine zweite Zahl ist 
    $raten2! Sie ist aber größer als die gesuchte Zahl! <br>
                            Du hast noch <span style='color:#dc143c;'> <b> 3 Versuche! </b> </span> "
    ;
           
    #wenn zu größ geraten        
            
    else if($raten2 $zahl)
                    echo 
    "Deine vorherige Zahl ist <b> $raten </b> gewesen! <br><br>
                            Deine zweite Zahl ist 
    $raten2! Sie ist aber kleiner als die gesuchte Zahl!<br>
                            Du hast noch <span style='color:#dc143c;'> <b> 3 Versuche! </b> </span> "
    ;
           
    #sofern nicht richtig geraten - neuen Versuch erstellen                
            
    if($zahl $raten2 or $zahl $raten2)
                    echo 
    "<form action='seite4.php' method='POST'><br>
                            <input type='text' name='raten3' placeholder='Versuch 3'>
                            <input type='submit' value=' Checken! '>
            </form>"
    ;
           
    #nächste Zahl in Datei schreiben
            
    fwrite($öffnen$raten2);
            
    fclose($öffnen);
    ?>
    PHP-Code:
     <?php
    // Seite 4
    #Versuch 3
    session_start();
            
    $raten3 $_POST['raten3'];
            
    $zahl $_SESSION['generate'];
    #öffnen und lesen der datei
            
    $öffnen fopen("./ratevar.txt""r""w
            "
    );
    #inhalt der Datei in Variable speichern
            
    $raten fgets($öffnen10);
           
    echo 
    "<br><b> $zahl </b>";
           
    #wenn zu groß, zu klein oder leer
            
    if($raten3 100 or $raten3 or empty($raten3))
                    echo 
    "<span style='color:#dc143c;'> Die Zahl ist nicht im gewünschten Bereich! </span>";
     
    #Wenn richtig geraten  
            
    else if($zahl == $raten3)
                    {
                    echo 
    "GRATULATION! Du hast das Spiel gewonnen! Clicke <a href = './ubung.php'> hier</a> um das Spiel erneut zu spielen!";
                    unset(
    $_SESSION);
                    }
                   
    #wenn zu klein geraten
            
    else if($raten3 $zahl)
                    echo 
    "Deine vorherige Zahl ist <b> $raten </b> gewesen! <br><br>
                            Deine dritte Zahl ist 
    $raten3! Sie ist aber größer als die gesuchte Zahl! <br>
                            Du hast noch <span style='color:#dc143c;'> <b> 3 Versuche! </b> </span> "
    ;
           
    #wenn zu größ geraten
            
    else if($raten3 $zahl)
                    echo 
    "Deine vorherige Zahl ist <b> $raten </b> gewesen! <br><br>
                            Deine dritte Zahl ist 
    $raten3! Sie ist aber kleiner als die gesuchte Zahl!<br>
                            Du hast noch <span style='color:#dc143c;'> <b> 3 Versuche! </b> </span> "
    ;
                           
    #sofern nicht richtig geraten - neuen Versuch erstellen                
            
    if($zahl $raten3 or $zahl $raten3)
            echo 
    "<form action='seite5.php' method='POST'><br>
                            <input type='text' name='raten4' placeholder='Versuch 4'>
                            <input type='submit' value=' Checken! '>
            </form>"
    ;
           
            
    fwrite($öffnen$raten3);
            
    fclose($öffnen);
            
    ?>

  • #2
    Hi,

    hmmm speicherst du das aus nem bestimmten Grund in eine Textdatei? Könntest doch auch in die $_SESSION packen ... bspw:

    Sorry für das quick&dirty Beispiel ... aber der Grundgedanke wird denke ich klar =)

    PHP-Code:
    <?php

    // guess.php

    session_start();

    if (!isset(
    $_SESSION['generate'])) {
        
    $_SESSION['generate'] = rand(1,100);
        
    $_SESSION['guesses_left'] = 5;
        echo 
    "Errate eine Zahl zwischen 1 und 100<br>\n";
    } elseif (isset(
    $_POST['guess'])
        && (
    $_SESSION['guesses_left'] > || $_SESSION['generate'] == $_POST['guess'])
    ) {
        
    $guess = (int)$_POST['guess'];
        
    $goal $_SESSION['generate'];

        if (
    $guess $goal) {
            echo 
    "[{$guess}] ist kleiner als die gesuchte Zahl ... noch {$_SESSION['guesses_left']} Versuche.<br>\n";
        } elseif (
    $guess $goal) {
            echo 
    "[{$guess}] ist grösser als die gesuchte Zahl ... noch {$_SESSION['guesses_left']} Versuche.<br>\n";
        } else {
            echo 
    "[{$guess}] enspricht [{$goal}] - gewonnen =) ... <br>\n";
            echo 
    '<br><br><a href="guess.php">nochmal</a><br><br>'."\n";
            
    session_destroy();
            die();
        }

        
    $_SESSION['guesses_left']--;

    } elseif (
    $_SESSION['guesses_left'] == 0) {
        echo 
    "Sorry, das war Dein letzter Versuch (=, gesucht war [{$_SESSION['generate']}]";
        echo 
    '<br><br><a href="guess.php">nochmal</a><br><br>'."\n";
        
    session_destroy();
        die();
    }

    ?>
    <meta charset="utf-8">
    <form method="post" action="guess.php">
        <input type="text" name="guess" size="3" maxlength="3" autofocus>
        <input type="submit" value="rate">
    </form>
    Dann brauchst auch keine 5+(?) Dateien.

    Grüsse - Stef

    Kommentar

    Lädt...
    X