読者です 読者をやめる 読者になる 読者になる

WebEngine

web、プログラミング関係について書いていきます。あなたの優しい眼差しがブログの成長につながりますのでどうぞよろしく。

inputタグのvalueにPHPを組み込む

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