猿でもわかるPHP フォームの処理2

f:id:oresamaquest:20170404161047j:plain

目次

1、チェックボックスを使う

//form.html

<form method="GET" action="form.php">

<input type="checkbox" name="chk1"> //チェックボックス表示
<input type="submit" value="送信">

</form>

上記のようにチェックボックスを表示します。チェックして送信を押すとONが送られます。
チェックしなければ何も送られません。
よって、送り先のform.phpでは$_GET[‘chk1’]自体が存在しません。

これではチェックボックスがチェックされたかチェックされいていないかを判別できません。
そこでissetという関数を使用して変数があるかどうかを確認します。

//form.php

<?php

if(isset($_GET['chk1'])){

    $str=$_GET['chk1'];

    echo $str; //出力結果:ON

}else{

    echo "チェックなし";

}

?>

問題1:下記のform.htmlを使用して、チェックされていたら足し算の結果、されていなかったら掛け算の結果をform.phpに表示してください。

//form.html

<form method="GET" action="form.php">

<input type="text" name="txt1">
<input type="text" name="txt2">
<input type="checkbox" name="chk1">
<input type="submit" value="送信">

</form>

答え

//form.php

<?php

$num1=$_GET['txt1'];
$num2=$_GET['txt2'];

if(isset($_GET['chk1'])){

    $ans=$num1+$num2;

    echo $ans;

}else{

    $ans=$num1*$num2;

    echo $ans;

}

?>

2、ラジオボタンを使う

ラジオボタンはチェックボックスと違い、複数から1つを選択します。
そのため、ラジオボタンを作りたい数だけinputタグを作り、nameは同じ名前とします。

<input type="radio" name="ken" value="kumamoto">熊本
<input type="radio" name="ken" value="fukuoka">福岡
<input type="radio" name="ken" value="nagasaki">長崎

nameは全てkenで統一します。valueが異なります。
例えば長崎を選択して送信すると、$_GET[‘ken’]にはnagasakiが入ります。

問題2:問題1を参考に足し算と掛け算をラジオボタンで選択できるようにしてください。

答え

//form.html

<form method="GET" action="form.php">

<input type="text" name="txt1">
<input type="text" name="txt2">
<input type="radio" name="ennzann" value="tasi">足し算
<input type="radio" name="ennzann" value="kake">かけ算
<input type="submit" value="送信">

</form>
//form.php

<?php

$str=$_GET['ennzann'];
$num1=$_GET['txt1'];
$num2=$_GET['txt2'];

if($str=="tasi"){

    $ans=$num1+$num2;

    echo $ans;

}else{

    $ans=$num1*$num2;

    echo $ans;

}

?>

3、セレクトボックスを使う

ラジオボタンと同じく複数から1つを選択します。
下記のようなhtmlを書いて、どのように表示されるかを確認してみてください。

//form.html

<select name="ken">
<option value="kumamoto">熊本</option>
<option value="fukuoka">福岡</option>
<option value="nagasaki">長崎</option>
</select>

</form>

$_GET[‘ken’]で選択した県のvalueを取得できます。

問題3:セレクトボックスで足し算、引き算、かけ算、割り算を選べるようにして結果を表示してください。

答え

//form.html

<form method="GET" action="form.php">

<input type="text" name="txt1">
<input type="text" name="txt2">

<select name="ennzann">
<option value="tasi">足し算</option>
<option value="hiki">引き算</option>
<option value="kake">かけ算</option>
<option value="wari">割り算</option>
</select>

<input type="submit" value="送信">

</form>
//form.php

<?php

$str=$_GET['ennzann'];
$num1=$_GET['txt1'];
$num2=$_GET['txt2'];

if($str=="tasi"){

    $ans=$num1+$num2;

    echo $ans;

}elseif($str=="hiki"){

    $ans=$num1-$num2;

    echo $ans;

}elseif($str=="kake"){

    $ans=$num1*$num2;

    echo $ans;

}elseif($str=="wari"){

    $ans=$num1/$num2;

    echo $ans;

}

?>

隠れインプット

隠れインプットとはユーザーには何も見えないが、データが送られるものです。

<input type="hidden" name="ken" value="kumamoto">

このようにすると、名前がkenでkumamotoという値が送られます。

どのようなときに使用するか。

隠れインプットはページ遷移時にデータを受け渡す時に使います。

例えば、form.phpでいきなり計算の答えをださずにテキストボックスに入力した内容を 確認させてからform2.phpに移って答えを表示したいとします。



form.phpに以下のようにボタンとフォームを作ります。
$kotaeにはあらかじめ答えを入れておきます。

<form method="GET" action="form2.php">
<input type="hidden" name="kotae" value="<?php echo $kotae; ?>">
<input type="submit" value="答え表示">

form2.phpを作成し、答えを表示するようにしてみてください。