新人に向けた超簡単な初心者向け問題に行ってみたいと思います。
GET、POSTなど、初心者にもわかる問題を出していきます。
簡単なので、是非挑戦してください。
PHPをWindowsで実行したいのであれば、XAMPP(ザンプ)をインストールすると、自分のPCでも簡単に動作させることが出来ます。
インストール方法は、以下のサイトから。
WINDOWS XAMPP にて LARAVEL をインストール (XAMPP V1.8.3インストール)
phpedu74.php
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>tech.pjin.jp HTML5 Template</title> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/css/bootstrap.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"> <!--[if lt IE 9]> <script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/respond.js/1.4.2/respond.min.js"></script> <![endif]--> </head> <body> <div class="container"> <div class="page-header"> <h1><i class="fa fa-check-square"></i> PHP問題74</h1> </div> <div class="jumbotron"> <?= htmlspecialchars(implode(',', @$_POST['fruit'])) ?>が選択されました。 </div> <form action="<?= $_SERVER['PHP_SELF'] ?>" method="POST"> <div class="row"> <div class="col-sm-offset-3 col-sm-6"> <div class="form-group"> <label>好きな果物</label> <div class="checkbox"><label><input type="checkbox" name="fruit[]" value="1">リンゴ</label></div> <div class="checkbox"><label><input type="checkbox" name="fruit[]" value="2">みかん</label></div> <div class="checkbox"><label><input type="checkbox" name="fruit[]" value="3">バナナ</label></div> <div class="checkbox"><label><input type="checkbox" name="fruit[]" value="4">パイナップル</label></div> </div> <button type="submit" class="btn btn-primary">送信</a> </div> </div> </form> </div> <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.5/js/bootstrap.min.js"></script> </body> </html>
※CSSには、Bootstrap、Font-Awesomeを利用しています。
※Javascriptには、jQuery1.11.3を利用しています。
問題:画面を表示し、選択欄のみかん、バナナを選択後、送信ボタンを押下しました。画面に表示される内容はどれか選択して下さい。(複数選択可)
- バナナが選択されました。
- みかんが選択されました。
- みかん、バナナが選択されました。
- 2が選択されました。
- 3が選択されました。
- 2,3が選択されました。
正解:6.2,3が選択されました。
今回もPOSTの問題です。
さて、checkboxの問題です。
inputタグのなかで、色々あるのですが、checkboxは難儀なところが多いです。
選択値を同じ名前で複数送り付けることが出来ます。
さてサーバサイドではどう受け取るかというと、配列で取得します。
ですので、name="fruit[]"
と書かれています。
これをよく忘れて、取れない!ってことになります。
radioの時は、キー(name属性)に対して、値(value属性)がついになっているので良いのですが、
checkboxは、キーに対して、値が複数あります。
ですので、表示部分も、implodeを利用し、カンマ区切りで表示しています。
キーが重複するのは、クエリーパラメータでも同様です。
?key[]=A&key[]=B&key[]=Cと送信すると、keyに対して値が3つ存在します。
?key=A&key=B&key=Cと送信した場合、$_GET[‘key’]の値を見てみると、最後のCという値になっています。
複数の値を、同一キーで送る場合は、キーに[]を付けることと、つけ忘れると最後の値になることが注意事項です。
何度か試すと覚えるのですが、使わなくなると忘れます。(私も忘れています。。。たまに思い出しますが)