inputタグのvalueにPHPを組み込む
inputタグのvalueにPHPを組み込む
初心者は意外なところでつまずいたりします。たとえば、プログラミング初心者が
コード内に全角スペースを入力してしまうのは王道的なミスでしょう。この記事の
内容も若干それに近いです。熟練のPHPerの方はもっと有益なサイトが山ほど
あるので、今すぐ退出した方がいいですよ(笑)
ちなみに僕は、PHPファイルの先頭に書く <?php を <? だけ書いたために
プログラムが動かず、2日悩んだ経験があります。
ここではhiddenで説明します。通常hiddenタグは、
<input type="hidden" name="test" value="呼び出せた!">
と書きますね。
まず、通常のタイプをPHPで同じファイル内にダンプしてみましょう。
<?php if ( isset( $_POST['test'] ) ) { var_dump( $_POST['test'] ); } else { echo '受け取れてないよ'; } ?> <!DOCTYPE html> <html lang="ja"> <head> <title>TEST1</title> <meta charset="utf-8"> </head> <body> <form action="" method="post"> <input type="hidden" name="test" value="呼び出せた!"> <input type="submit" value="送信"> </form> </body> </html>
最初は「受け取れてないよ」のメッセージが表示されていますが、送信ボタンを押すと、valueに入っている 「呼び出せた!」の文字が出力されるはずです。
では、次にvalueタグの中にPHPを組み込んでみましょう。
<?php if ( isset( $_POST['test'] ) ) { var_dump( $_POST['test'] ); } else { echo '受け取れてないよ'; } // 追加部分 $value = "呼び出せた!"; ?> <!DOCTYPE html> <html lang="ja"> <head> <title>TEST2</title> <meta charset="utf-8"> </head> <body> <form action="" method="post"> <input type="hidden" name="test" value="<?php $value; ?>"> <input type="submit" value="送信"> </form> </body> </html>
送信ボタンを押すと、ダンプされるので値が送信されたのはわかると思います。ただ、値が空になっています。
結論から言うとechoなどで値を出力してやらなくてはいけません。
つまり、このように修正します。
<input type="hidden" name="test" value="<?php echo $value; ?>">
考えるとPHPの値は変数に入っているので当然ですね。もとのhiddenタグが
<input type="hidden" name="test" value="呼び出せた!">
とvalue部分に値を直接書き込んでいるので、phpのときも変数をそのまま入れれば動く、 と考えてしまったのが昔の僕です。
ちなみに、
<input type="hidden" name="test" value="<?=$value?>">
と書くこともできます。echo短縮文と言って、通常はこちらの書き方で呼び出す方 が多いです。こちらの書き方を最初から知っているために、今回のようなミスにつまずかない人もいるようです。