ラヂオボタンで石を取り除きます。

サーバーにアップロードした PHP を呼び出すコードです。
<a href="http://maedakobe.rw.xsi.jp/php/radio.php">ラヂオボタンで石を取る</a>
radio.php を呼び出して、ラヂオボタンで石を取り除きます。
ラヂオボタンで石を取る

radio.php の説明

  1. ラヂオボタンで石を取り除く radio.php の全ソースコードです。
    <html>
    <body>
        <?php
        function disp($n)
        {   print '<br>';
            for($i=0; $i<$n; $i++)
            {   print "<IMG SRC=\"img/jewel.gif\">";
                if ($i%10==9)     print '<br>';
            }
        }
    
        // radio ボタンで取り除く石数を指定
        function radio_play($num,$max)
        {   print("<form action=\"radio.php\" method=\"post\">");
            $w= intval($max);
            if ($w>$num)    $w= $num;
            print("<input type=radio name=\"val\" value=1 CHECKED>1 個取る<br>");
            for($i=2; $i<=$w; $i++)
                print("<input type=radio name=\"val\" value=$i>$i 個取る<br>");
            print("<input type=\"hidden\" name=\"num\" value=$num>");
            print("<input type=\"hidden\" name=\"max\" value=$max>");
            print("<input type=\"submit\" value=\"送信\">");
            print("</form>");
        }
        ?>
    
      <?php
        $num= $_POST['num'];        //山に積まれている石数
        $max= $_POST['max'];        //一度に取れる最大数
        $val= $_POST['val'];        //取り除く石数
        if (!isset($num))   $num= 0;
        else                $num-= $val;
        if ($num==0)
        {   $num= rand(10,30);
            $max= rand(2,6);
            $val= 0;
        }
        disp($num);
        radio_play($num,$max);
      ?>
    
    </body>
    </html>
    
  2. radio.php が呼び出されると、まず post で渡されたデータを受け取ります。
    始めて呼び出されたときはパラメータが空なので $num を 0 に設定します。
    二度目以降は $num から $val 個の石を取り除きます。
    $num が空のときと石が無くなったときは $num と $max を乱数で設定します。
    $num は山に積まれた石の数で、$max は一度に取り除くことが出来る最大数です。
    $num と $max の設定が終わると disp($num); で石を表示します。
    radio_play($num,$max); で Radio Button で石を取り除きます。
        $num= $_POST['num'];        //山に積まれている石数
        $max= $_POST['max'];        //一度に取れる最大数
        $val= $_POST['val'];        //取り除く石数
        if (!isset($num))   $num= 0;
        else                $num-= $val;
        if ($num==0)
        {   $num= rand(10,30);
            $max= rand(2,6);
            $val= 0;
        }
        disp($num);
        radio_play($num,$max);
    
  3. 石の画像を並べて表示する処理を関数にしました。
        function disp($n)
        {   print '<br>';
            for($i=0; $i<$n; $i++)
            {   print "<IMG SRC=\"img/jewel.gif\">";
                if ($i%10==9)     print '<br>';
            }
        }
    
  4. form にラヂオボタンを設定する関数です。
    この form から呼び出される radio.php はこのプログラム自身です。
    今回は method="post" で呼び出します。
    "get" で渡すとパラメータがタイトルバーに並べられるのに対して、隠すことが出来ます。
    $num が現在山に積まれている石数で、$max が取り除くことが出来る最大値です。
    $num と $max を調べてラヂオボタンを並べます。
    intval($max); は $w に確実に数値として格納するためです。
    "hidden" は form に表示されない隠しパラメータで、$num, $max, $val を次のページに渡します。
        function radio_play($num,$max)
        {   print("<form action=\"radio.php\" method=\"post\">");
            $w= intval($max);
            if ($w>$num)    $w= $num;
            print("<input type=radio name=\"val\" value=1 CHECKED>1 個取る<br>");
            for($i=2; $i<=$w; $i++)
                print("<input type=radio name=\"val\" value=$i>$i 個取る<br>");
            print("<input type=\"hidden\" name=\"num\" value=$num>");
            print("<input type=\"hidden\" name=\"max\" value=$max>");
            print("<input type=\"submit\" value=\"送信\">");
            print("</form>");
        }
    

前田稔の超初心者のプログラム入門
PHP Program