dポイントプレゼントキャンペーン実施中!

すべて記載すると 長くなりますので以下のアドレスから
プログラムの確認ができます。この同サイトにリンクを張る行為は
規約違反 なのか 定かではないのですが 規約違反でしたら 次回から
全て 記載します。
https://oshiete.goo.ne.jp/qa/12724347.html
さて
 現在 URL先の 参考書の「問題」を 解析中ですが
ここで 蛇足 的な プログラムを 再度発見しました。
print "<input type='radio' name='r' value='$i'>$i ";
の value='$i' ですが なくても ちゃんとプログラムは動きます。
 自動修復 してくれているかもしれませんが 
ここでは 何のために あえて value='$i' をつける必要があるのでしょうか?

よろしくお願いいたします。

質問者からの補足コメント

  • 解説
     ❶ $i=1; 変数$1の初期値は1です。
    ❷ $c=1; 変数$Cの初期値は1です。
    ❸ print "<div>";
    ❹ while($i<=100){ 変数$1で「'radio'ボタン」の「○を100個」と「数字100」まで「○1~○100」
    ❺ print "<input type='radio' name='r' value='$i'>$i "; $1は❹定義された値に従い、さらに❺でラジオボタンを作成後printで画面に表示するのはinputでradioボタン(○)です。
     これが100個出力され、そのラジオボタンでクリックした場所が仮に「○59」の数値をセレクトした場合、nameをrとすることで 受け側 .$_POST["r"] で識別して
     値を送信する。

    No.3の回答に寄せられた補足コメントです。 補足日時:2021/12/23 05:24
  • ❻ if($c==10){ $c==10を削除すると 以下試験4の結果となる。○1~○100は 10個で改行
    ❼ print "</div><div>";
    ❽ $c=0;
    ❾ }
    ❿ $i++;
    ⓫ $c++;
    ⓬ }
    ⓭ ?>

      補足日時:2021/12/23 05:24
  • 試験1
       ❺で name='r' がない場合 実行結果:○59が「あなたの年齢は歳なのですね」
       value='$i' がない場合 実行結果:○59が「あなたの年齢はon歳なのですね」
       name='r' value='$i'の両方ない場合 実行結果:「あなたの年齢は歳なのですね」
       name='r'の値と同じになったと表示されてしまう。
       print "<input type='radio' name='r' value='99'>$1";実行結果:「あなたの年齢は9

      補足日時:2021/12/23 05:25
  • 9歳なのですね」
       print "<input type='radio' name='r' value='99'>99";実行結果:送信側に「10行に○99が100個」 受け側「あなたの年齢は99歳なのですね」「99」
       print "<input type='radio' name='r' value='r'>99"; 実行結果:送信側に「10行に○99が100個」 受け側は「あなたの年齢はr歳なのですね」

      補足日時:2021/12/23 05:26
  • 試験2
       ❽の値である $c=0; value='$i'を value='$c'とした場合 
       実行結果:○59が「あなたの年齢は9歳歳なのですね」 
       実行結果:○1が「あなたの年齢は1歳歳なのですね」
       実行結果:○11が「あなたの年齢は1歳歳なのですね」
       で○10が「あなたの年齢は10歳なのですね」
       で○100が「あなたの年齢は10歳なのですね」
       最大10までしか表示されない。

      補足日時:2021/12/23 05:27
  • 試験3
         ❽ $c=0; を削除した場合 ○1~○10の10個以降まで改行されてそれ以降改行なし
         あなたの年齢を選択して、送信ボタンをクリックしてください。
         実行結果:1 2 3 4 5 6 7 8 9 10
    11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 6 5 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100

      補足日時:2021/12/23 05:27
  • 試験4 ❻ if($c==10){ を ❻ if(){とした場合
     実行結果:このページは動作していませんlocalhost では現在このリクエストを処理できません。HTTP ERROR 500

    試験5 受信側の ".$_POST["r"]."を ".$_POST["s"]."とした場合の 実行結果:あなたの年齢は歳なのですね
        で 年齢が 認識できない。
        
     試験6 ❼ print "</div><div>";を全部削除した場合 実行結果:「○1~○100」まで 改行なし
      print "</div>" 実行結果:「○1~○10で改行され それ以降意向「○100」までが改行なし
      print "<div>"; 実行結果:「なたの年齢は59歳なのですね」 何も変化なし
     試験7

      補足日時:2021/12/23 05:27

A 回答 (3件)

$iの値を"test"と仮定した時、



value='$i'がある場合
<input type='radio' name='r' value='test'>test

value='$i'がない場合
<input type='radio' name='r'>test

全然違いますね。
出力されているhtmlをちゃんと確認した方がいいかと思います。

後者の場合、上記要素がPOST/GETされた時、サーバーサイド側は
$_POST["r"]や$_GET["r"]で値を取得しようとしても、
何の値も取得できませんよ。
当然、JavaScriptで選択されている選択肢のvalue値を取得しようと
しても同様です。
value属性がないのですから。

また画面表示時に初期選択されている選択肢にはチェックをつける、
ということも考える必要がある場合、出力されるhtmlとしては
<input type='radio' name='r' value='test' checked>test
などとなる必要があります。
当然、checkedの部分を、プログラムで制御する必要があります。
    • good
    • 1
この回答へのお礼

ご回答くださいまして、ありがとうございます。
 そうですね! 了解です。
 細かく 試したら なんとなく 定義されている 
構文意味が分かってきますね! 時間はかかりますが
 解読には 早道ですね^^

参考書は 書面の制限があるため 省略が多いですね!
それを加味した上に 学んでいかないと 実践では
使い物にならないプログラムとなりえますね!

お礼日時:2021/12/23 05:34

> ちゃんとプログラムは動きます


value がないと、r を必要とする受信側プログラムが奇妙に動きます。

<input type='radio' name='r' value='99'>99
↓ このラジオボタンを選択すると送信される内容
r=99
↓ 受信側プログラムの動き
「99歳」と表示

<input type='radio' name='r'>99
↓ このラジオボタンを選択すると送信される内容の予想
r=on
↓ 受信側プログラムの動き
「on歳」と表示
この回答への補足あり
    • good
    • 1
この回答へのお礼

ありがとうございます。
以下試しました。
試験1
   ❺で name='r' がない場合 実行結果:○59が「あなたの年齢は歳なのですね」
   value='$i' がない場合 実行結果:○59が「あなたの年齢はon歳なのですね」
   name='r' value='$i'の両方ない場合 実行結果:「あなたの年齢は歳なのですね」
   name='r'の値と同じになったと表示されてしまう。
   print "<input type='radio' name='r' value='99'>$1";実行結果:「あなたの年齢は99歳なのですね」
   print "<input type='radio' name='r' value='99'>99";実行結果:送信側に「10行に○99が100個」 受け側「あなたの年齢は99歳なのですね」「99」
   print "<input type='radio' name='r' value='r'>99"; 実行結果:送信側に「10行に○99が100個」 受け側は「あなたの年齢はr歳なのですね」
   
  試験2
   ❽の値である $c=0; value='$i'を value='$c'とした場合 
   実行結果:○59が「あなたの年齢は9歳歳なのですね」 
   実行結果:○1が「あなたの年齢は1歳歳なのですね」
   実行結果:○11が「あなたの年齢は1歳歳なのですね」
   で○10が「あなたの年齢は10歳なのですね」
   で○100が「あなたの年齢は10歳なのですね」
   最大10までしか表示されない。

お礼日時:2021/12/23 05:22

削除するとRPAが動作しなくてシステム影響が発生するとかありえます。


そういう観点で考えてみては。
    • good
    • 1
この回答へのお礼

ありがとうございます。
RPA とは 
Robotic Process Automation
ロボットプロセス自動化
のことだと思います。
 
そうでした いきなり削除して 試しても
変化はなかったのですが 削除した後
一度 WEbページを消して 再度 立ち上げると
年齢が on と表示されますね!

クッキー の影響だと思います。
なので  value='$i' は蛇足ではなかった 
ということは value='$i' は RPA 関連
の、コードだと思われます。
 調べます。

お礼日時:2021/12/22 21:54

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!