Avatar billede apa Nybegynder
05. januar 2004 - 23:53 Der er 6 kommentarer og
1 løsning

PHP: Gæt et nummer mellem 1 og 100

Nedenstående kode virker fint hvis globale variable er slået til. Men hvordan kan koden laves om så jeg kan benytte variable via $_POST arrayet, dvs. uden globale variable slået til?

<html>
<head><title>Gæt et tal</title></head>

  <body>
  <h2>Gæt et tal mellem 1 og 100</h2>
  <?
    function gaet($tal,$antal) {
    $antal = $antal+1;
    echo "<form method=post action=gaet_et_tal.php>
    <input type=hidden name=tal value=$tal>
    <input type=hidden name=antal value=$antal>
    Indtast dit gæt:<P>
    <input type=text name=gaet size=7>
    <input type=submit value=Gæt>
    </form>";
    }   
   
    if ( $tal == "" ) {
    $tal = rand(1,99);
    $antal = 0;
    gaet($tal,$antal);
   
    } elseif ( $tal > $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for lavt";
   
    } elseif ( $tal < $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for højt";   
     
    } else {
    echo "Tillykke. $tal er det rigtige tal<br>";
    echo "Du brugte $antal forsøg.<br>";

    if($antal == 4)
    echo "Udmærket<br>";
 
    elseif($antal < 4)
    echo "Flot<br>";
     
    echo "<a href=\"gaet_et_tal.php\">Prøv igen</a>";
    }         
  ?>
  </body>
  <br><br><br>
  <a href="../index.htm" tager="_self">Tilbage til startside</a>
</html>
Avatar billede nak-m Nybegynder
05. januar 2004 - 23:59 #1
Hvis du mener, at du vil bruge $_POST-variabler uden at skrive $_POST over det hele, kan du jo fx importere dem (håber jeg har forstået dig rigtigt):

<html>
<head><title>Gæt et tal</title></head>

  <body>
  <h2>Gæt et tal mellem 1 og 100</h2>
  <?
    import_request_variables("p", "");
    function gaet($tal,$antal) {
    $antal = $antal+1;
    echo "<form method=post action=gaet_et_tal.php>
    <input type=hidden name=tal value=$tal>
    <input type=hidden name=antal value=$antal>
    Indtast dit gæt:<P>
    <input type=text name=gaet size=7>
    <input type=submit value=Gæt>
    </form>";
    }   
   
    if ( $tal == "" ) {
    $tal = rand(1,99);
    $antal = 0;
    gaet($tal,$antal);
   
    } elseif ( $tal > $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for lavt";
   
    } elseif ( $tal < $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for højt";   
     
    } else {
    echo "Tillykke. $tal er det rigtige tal<br>";
    echo "Du brugte $antal forsøg.<br>";

    if($antal == 4)
    echo "Udmærket<br>";
 
    elseif($antal < 4)
    echo "Flot<br>";
     
    echo "<a href=\"gaet_et_tal.php\">Prøv igen</a>";
    }         
  ?>
  </body>
  <br><br><br>
  <a href="../index.htm" tager="_self">Tilbage til startside</a>
</html>
Avatar billede Slettet bruger
06. januar 2004 - 00:00 #2
En let løsning er at sætte dette øverst (eller bare efter din funktion) på din side:

<?
$gaet = isset($_POST['gaet']) ? $_POST['gaet'] : NULL;
$antal = isset($_POST['antal']) ? $_POST['antal'] : NULL;
$tal = isset($_POST['tal']) ? $_POST['tal'] : NULL;
?>
Avatar billede apa Nybegynder
06. januar 2004 - 00:15 #3
Jeg kan forstå på din løsning nak-m at funktionen import_request_variables("p", "") "Imports GET/POST/Cookie variables into the global scope". Men jeg er mere ude efter den løsning mercur8 har fat i - tror jeg da - jeg forstår ikke lige det han har skrevet...kan du uddybe hvad det er du gør...
Avatar billede Slettet bruger
06. januar 2004 - 00:45 #4
$gaet = isset($_POST['gaet']) ? $_POST['gaet'] : NULL;

Kan også skrives som:

if (isset($_POST['gaet'])
  $gaet = $_POST['gaet'];
else
  $gaet = NULL;

Det andet er bare en "forkortet udgave". Dvs. er der noget i $_POST['gaet'], så sætter vi $gaet lig med denne værdi. Så du kan bruge $gaet som du plejer.
Avatar billede nak-m Nybegynder
06. januar 2004 - 04:09 #5
Prøv denne kode i stedet:

<html>
<head><title>Gæt et tal</title></head>
  <body>
  <h2>Gæt et tal mellem 1 og 100</h2>
  <?php
    import_request_variables("p", "");
    if(isset($gaet) && isset($tal) && isset($antal)) {
      if($tal > $gaet) {
        $antal++;
        echo "$gaet er for lavt<hr>";
      } else if($tal < $gaet) {
        $antal++;
        echo "$gaet er for højt<hr>";
      } else if($tal == $gaet) {
        echo "Tillykke. $tal er det rigtige tal<br>";
        echo "Du brugte $antal forsøg.<br>";
        if($antal == 4) echo "Udmærket<br>";
        elseif($antal < 4) echo "Flot<br>";
        echo "<a href=\"gaet_et_tal.php\">Prøv igen</a><hr>";
        $antal = 0;
      }
    } else {
      $tal = rand(1,99);
      $antal = 0;   
    }
  ?>
  <form method="post" action="gaet_et_tal.php">
    <input type="hidden" name="tal" value="<?php echo $tal; ?>">
    <input type="hidden" name="antal" value="<?php echo $antal; ?>">
    Indtast dit gæt:<p />
    <input type="text" name="gaet" size="7">
    <input type="submit" value="Gæt">
  </form>
  <br><br><br>
  <a href="../index.htm">Tilbage til startside</a>
  </body>
</html>
Avatar billede detox Nybegynder
06. januar 2004 - 13:06 #6
Her er et par rettelser:

<html>
<head><title>Gæt et tal</title></head>

  <body onLoad="java script:document.getElementById('gaet').focus()">
  <h2>Gæt et tal mellem 1 og 100</h2>
  <?
    function gaet($tal,$antal) {
    $antal = $antal+1;
    echo "<form method='post' action='gaet_et_tal.php'>
    <input type='hidden' name='tal' value='$tal' />
    <input type='hidden' name='antal' value='$antal' />
    Indtast dit gæt:
    <p><input type='text' id='gaet' name='gaet' size='7' />
    <input type='submit' value='Gæt' /></p>
    </form>";
    }   
    $gaet = isset($_POST['gaet']) ? $_POST['gaet'] : '';
    $antal = isset($_POST['antal']) ? $_POST['antal'] : '';
    $tal = isset($_POST['tal']) ? $_POST['tal'] : '';
    if ( $tal == "" ) {
    $tal = rand(1,99);
    $antal = 0;
    gaet($tal,$antal);
   
    } elseif ( $tal > $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for lavt";
   
    } elseif ( $tal < $gaet ) {
    gaet($tal,$antal);
    echo "$gaet er for højt";   
     
    } else {
    echo "Tillykke. $tal er det rigtige tal<br>";
    echo "Du brugte $antal forsøg.<br />";

    if($antal == 4)
    echo "Udmærket<br />";
 
    elseif($antal < 4)
    echo "Flot<br />";
     
    echo "<a href=\"gaet_et_tal.php\">Prøv igen</a>";
    }         
  ?>
  </body>
  <br /><br /><br />
  <a href="../index.htm" tager="_self">Tilbage til startside</a>
</html>
Avatar billede apa Nybegynder
06. januar 2004 - 23:15 #7
Takker for svar!
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