Avatar billede hanne_e Nybegynder
30. september 2004 - 22:11 Der er 14 kommentarer og
2 løsninger

hvad går galt i det her php spil?

Hjælp!   
Det er lige som om, den ikke gemmer nummeret men ændrer det ved hvert gæt??? Derudover skal selve input-feltet fjernes, hvis gættet er rigtig - der skal så være et link tilbage til et nyt spil.

---------------------php-koden-----------------------------------
<?

        $guess = $_POST['guess'];
        global $number;
        $number= rand(0,99);

        function echo_guess_form($number) {

            echo "<form method='post' action='guess.php'>

                <input type='hidden' name='number' value='$number' />
                <p>Skriv et tal mellem 1 og 100<br><br>
                <input type='text' name='guess' size='7' />
                <input type='submit' value=' Gæt! ' /></p>
            </form>";
        }

        echo_guess_form($number);

        if ($guess>100 || $guess<0) {
            echo "<p><br>Gæt på et tal mellem 1 og 100 - du tastede $guess.</p>";
            return;
        }

        if (!is_numeric($guess)) {
            echo "<p><br>Du skal indtaste et tal.</p>";
            return;
        }

        if ($guess < $number){
            echo "<p><br>Tallet er for lavt</p>";
        }

        elseif ($guess > $number){
            echo "<p><br>Tallet er for højt</p>";
        }

        else {
            echo "<p><br>Huraaaaa du gættede det<br><br><a href=\"guess.php\">Spil igen</a></p>";

        }

    ?>
Avatar billede eagleeye Praktikant
30. september 2004 - 22:18 #1
fordi du hver gang siden loades udskriver formen samt lavet et nyt tal. Du skal rette så du også henter number:

$guess = $_POST['guess'];
global $number;
$number = $_POST['number'];


Så kan du tjekke på $guess og $number er tomme og hvis det er tomme fin random tal og udkriv formen:

if (($guess=="") and ($number="")) {
  $number= rand(0,99);
  echo_guess_form($number);
}
Avatar billede detox Nybegynder
30. september 2004 - 22:22 #2
Du kan fx lave det sådan her:

<?
$number = isset($_POST['number']) ? $_POST['number'] : rand(0,99);
        $guess = isset($_POST['guess']) ? $_POST['guess'] : null;
       
        function echo_guess_form() {
            global $number;
            echo "<form method='post' action='guess.php'>
                <input type='hidden' name='number' value='$number' />
                <p>Skriv et tal mellem 1 og 100<br><br>
                <input type='text' name='guess' size='7' />
                <input type='submit' value=' Gæt! ' /></p>
            </form>";
        }

        echo_guess_form();

        if ($guess>100 || $guess<0) {
            echo "<p><br>Gæt på et tal mellem 1 og 100 - du tastede $guess.</p>";
            return;
        }

        if (!is_numeric($guess)) {
            echo "<p><br>Du skal indtaste et tal.</p>";
            return;
        }

        if ($guess < $number){
            echo "<p><br>Tallet er for lavt</p>";
        }

        elseif ($guess > $number){
            echo "<p><br>Tallet er for højt</p>";
        }

        else {
            echo "<p><br>Huraaaaa du gættede det<br><br><a href=\"guess.php\">Spil igen</a></p>";

        }

    ?>
Avatar billede hanne_e Nybegynder
30. september 2004 - 22:26 #3
tak for de hurtige svar - jeg kigger lige på det og vender tilbage :-)
Avatar billede hanne_e Nybegynder
30. september 2004 - 22:43 #4
lige et par tillægsspørgsmål... :-)

eagleeye
Hvorhenne i koden ville du tjekke på $guess og $number?


detox - mht. din løsning - vil du forklare klamamsen

$number = isset($_POST['number']) ? $_POST['number'] : rand(0,99);
        $guess = isset($_POST['guess']) ? $_POST['guess'] : null;
       

hvad betyder spørgsmålstegnene liiige? og kolon - er det ligesom = ?
altså at man tildeler en værdi?
Avatar billede eagleeye Praktikant
30. september 2004 - 22:45 #5
Det hvor du har denne linje: 
        echo_guess_form($number);
Avatar billede hanne_e Nybegynder
30. september 2004 - 22:48 #6
altså i stedet for? for så forsvinder inputfeltet og knappen helt...
Avatar billede detox Nybegynder
30. september 2004 - 22:50 #7
$number = isset($_POST['number']) ? $_POST['number'] : rand(0,99);

Svarer til:

if (isset($_POST['number'])) {
  $number = $_POST['number'];
} else {
  $number = rand(0,99);
}

Altså en if/else betingelse.
Avatar billede eagleeye Praktikant
30. september 2004 - 22:52 #8
Der også en fejl i, prøv at rete if sætningen til dette:

if (($guess=="") && ($number=="")) {
Avatar billede detox Nybegynder
30. september 2004 - 22:53 #9
Og som du kan se har jeg flyttet: global $number ind i functionen, hvor den retteligt hører hjemme og du behøver derfor ikke overføre den i funktionskaldet.
Avatar billede hanne_e Nybegynder
30. september 2004 - 22:55 #10
gisp hvor er I hurtige tak!!! jeg må lige checke igen :-)
Avatar billede eagleeye Praktikant
30. september 2004 - 22:57 #11
Glem mit forslag :)  det re forkert den fjerne input felt ved hvert gæt og ikke kun når man gætter rigtigt.
Avatar billede eagleeye Praktikant
30. september 2004 - 23:04 #12
men du kan lave min if sætning om til dette:

if (($guess=="") && ($number=="") || ($guess!=$number)) {
        if ($number=="") {
      $number = rand(0,99);
        }
    echo_guess_form();
}
Avatar billede hanne_e Nybegynder
30. september 2004 - 23:23 #13
1000 tak for hjælpen begge to. Jeg bruger detox' forslag og har bare skrevet

    if (isset($_POST['number'])) {
          $number = $_POST['number'];
    } else {
          $number = rand(0,99);
    }

      if (isset($_POST['guess'])){
          $guess = $_POST['guess'];
      } else {
          $guess = null;
      }

så jeg selv fatter det :-)

I må meget gerne lægge nogle svar - jeg er godt nok imponeret over jeres tempo!!!
Avatar billede detox Nybegynder
30. september 2004 - 23:28 #14
Velbekommen :O)
Avatar billede eagleeye Praktikant
30. september 2004 - 23:35 #15
Ok ;)
Avatar billede hanne_e Nybegynder
30. september 2004 - 23:36 #16
Tak og godnat :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester