next up previous contents
Next: Felder und Zeichenketten Up: Beispiele Previous: Beispiele   Contents

Lotto ``6 aus 45''

Bei diesem Lotto sollen 6 Zahlen erraten werden, die zufällig zwischen 1 und 45 ausgewählt werden. Dazu werden Tipps abgegeben, bei denen sechs Zahlen aus drei Zahlenspalten (1-15, 16-30 und 31-45) angekreuzt werden. Im vorliegenden Beispiel werden statt der Kugelschreiberkreuzchen Checkboxen angehakt...
Lotto ``6 aus 45'' - eine Simulation im Intranet ;-)

Die Lottoziehung wird durch die Funktion safv() realisiert, die sechs Zufallszahlen zwischen 1 und 45 als Array zurückgibt. Vor jedem Eintrag in dieses Array wird geprüft, ob die Zahl schon vorkommt. Damit wird erreicht, dass wirklich sechs verschiedene Zahlen gezogen werden. Zuletzt wird das Array noch der Größe der gezogenen Zahlen nach sortiert.
<?php
  function safv() {
    srand((double)microtime()*1000000);
    for ($i=0; $i<6; $i++) {
      $lzahl[$i]=0;
    }

    $i=0;
    $j=0;

    while ($i<6) {
      $raus=0;
      $zzahl=rand() % 45 + 1;
      for ($j=0; $j<6; $j++) {
        if ($lzahl[$j]==$zzahl) {
          $raus=1;
        }
      }
      if ($raus==0) {
        $lzahl[$i]=$zzahl;
        $i++;
      }
    }
    sort($lzahl);
    return $lzahl;
  }
?>
Diese Funktion wird in der Datei lotto.inc gespeichert, sodass sie durch Einbinden in den PHP-Code (mittels der Funktion include() zur Verfügung steht.

<?php
  include("lotto.inc");
?>

<html>
  <body bgcolor="#ffffff">
    <h3>6 aus 45</h3>
    <?php
      if (!$tip) {
    ?>
    <form name="eingabe" method="post" action="lotto5.php">
      <table border="0">
      <?php 
        for ($i=0;$i<15;$i++) {
          print ("<tr>"); 
          for ($j=1;$j<=45;$j+=15) {
            $n = $i+$j;
            print ("<td><input type='checkbox' name='cb[$n]')>");
            print($n . "</td>");
          }
          print ("</tr>\n");
        }
      ?>
      </table>
      <input type="submit" value="zahlen ;-)" name="tip">
    </form>
    <?php
      }
      if ($tip) {
        print ("Die Ziehung erbrachte folgende Zahlen: <br><b>");
        $erg = safv();
        for ($i=0;$i<6;$i++) {
          print ($erg[$i] . "&nbsp;");
        }
        print("</b><br>Dein Tipp:<br><b>");
 
        $counter = 0;

        for ($i=1;$i<=45;$i++) {
          if ($cb[$i]) {
            print ($i . "&nbsp;");
            $counter++;
          }
        }

        if ($counter>6) die(" Zu viele Tipps - schummeln gilt nicht!!!");

        if ($counter<6) die(" Zu wenige Tipps - wird nicht bewertet!!!");

        if ($counter=6) {
          $counter=0;
          for ($i=0;$i<6;$i++) {
            if ($cb[$erg[$i]]) { 
              $counter=$counter + 1;
            }
          }
          print ("<br><b>" . $counter . " Treffer...</b>");
        }
      }
    ?>
  </body>
</html>
Beachte, dass die Namen für die einzelnen Checkboxen innerhalb der Schleifen als Einträge in den Array $cb festgelegt werden. Dieser Array wird beim Senden des WebFormulares übergeben. Beim Auswerten wird schließlich getestet, ob die Checkboxen gewählt wurden, deren Indizes den gezogenen Zahlen entsprechen... Jedenfalls wird geprüft, ob genau 6 Zahlen getippt wurden - andernfalls bricht das Programm mit einer entsprechenden Meldung ab (die(...)).


next up previous contents
Next: Felder und Zeichenketten Up: Beispiele Previous: Beispiele   Contents
Alfred Nussbaumer 2001-08-14