WebEngine

だらだらと綴る技術系メモ

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短縮文と言って、通常はこちらの書き方で呼び出す方 が多いです。こちらの書き方を最初から知っているために、今回のようなミスにつまずかない人もいるようです。