みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

phpファイルに書いたhtmlソースが表示される

php側で用意した変数にhtmlタグと合わせて
$tempHTML=<tr><td>$data1</td><td>$data2</td></tr>";
のように文字列を代入して、表形式でデータを表示させようとしているのですが、
なぜかhtml部分のソースのみがブラウザに表示されてしまいます。

ファイル名"search_result.php"
---------------------------
<html>
<body>
<script type="text/javascript"><!--
function dataFunc(txt){
alert("search_result_data");
document.search_result.search_result_data.value = txt;
}
--></script>
</head>
<body>
<form name ="search_result" method="post action="./search_result_test.php">
<input type="hidden" name="search_result_data" value=""></input>
</form>

<script type="text/php">
<?php
処理の記述
?>
</script>
</body>
</html>
---------------------------
と書いて実行させると、
---------------------------
<html>
<body>
<script type="text/javascript"><!--
function dataFunc(txt){
alert("search_result_data");
document.search_result.search_result_data.value = txt;
}
--></script>
</head>
<body>
<form name ="search_result" method="post action="./search_result_test.php">
<input type="hidden" name="search_result_data" value=""></input>
</form>

<script type="text/php">
</script>
</body>
</html>
---------------------------
と表示され、phpの記述(<?php・・・?>)以外のソースがまるまるブラウザで表示されてしまいます。
しかも肝心の処理結果も表示できません。
どなたか原因が分かる方がいらっしゃったら教えていただけますか?

投稿日時 - 2011-03-24 19:52:22

QNo.6617809

すぐに回答ほしいです

質問者が選んだベストアンサー

もっと小規模なコードにして考えればわかりやすいのですが。

<?php
$data = 'XXX';
$tempHTML = '<div id="datatable">' . $data . '</div>' . PHP_EOL;
?>
<html><head></head><body>
<div><?php echo $tempHTML; ?></div>
</body></html>

HTMLを囲う時は、シングルクォーテーションで。
PHP_EOLは改行を表し、ソース整形の為に付与しています。

投稿日時 - 2011-03-24 21:44:59

お礼

回答ありがとうございます。
プログラムの中身を大幅に削って、かなり小規模なコードにして
どこに原因があるのかを調べてみました。
するとphpの処理の先頭に書いた
header('Content-Type: text/html; charset=UTF-8');
が原因でした。

ダブルクォートがタグに書かれているときは、シングルクォートでくくるんですね。参考になりました。 PHP_EOLも初めてしました。ありがとうございます。

投稿日時 - 2011-03-27 03:41:27

このQ&Aは役に立ちましたか?

1人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

PHPの方の知識が無いのでわかりませんが
HTMLは趣味でいじった経験が有ります。
あの・・・何のHTMLかうたってないので恐らくタグとして認識されていないと思いますよ。
あと他の方も言われていますが、冒頭にbodyで始まってheadで締めるという誤った記述があります。
あとフォーム内に=”これ無駄に多い部分が有る気がします。
<form name ="search_result" method="post action="./search_result_test.php">
上記記述が何となくおかしいです。
methodの後の”の前の数と締めの数が合いません。
過去に書いた経験があるだけでだいぶ経つので忘れました…
そういうところからタグという認識でなく文字列としてにんしきされているのではないですか?                               

投稿日時 - 2011-03-25 20:47:00

お礼

回答ありがとうございます。
プログラムの中身を大幅に削って、どこに原因があるのかを調べてみると、
phpの処理の先頭に書いた
header('Content-Type: text/html; charset=UTF-8');
が原因でした。そのせいでabacabuさんのおっしゃるように
タグを正しく認識してくれなかったのだと思います。

説明に載せていない部分が原因で、
丁寧に説明していただいたのに申し訳ありません。

投稿日時 - 2011-03-27 03:41:30

ANo.1

私には、意味不明です。。
<html>
<body> ←??
<script type="text/javascript"><!--
function dataFunc(txt){
alert("search_result_data");
document.search_result.search_result_data.value = txt; ←???
}
--></script>
</head> ←????
<body> ←?????
<form name ="search_result" method="post action="./search_result_test.php">← 「”」?
<input type="hidden" name="search_result_data" value=""></input>
</form>

<script type="text/php">←??????
<?php
処理の記述
?>
</script>
</body>
</html>

投稿日時 - 2011-03-24 20:34:42

お礼

回答ありがとうございます。
説明のためのソースに誤りが多々あり、意味不明なプログラムになってしまいました。今後は気をつけます。
無事解決いたしました。

投稿日時 - 2011-03-27 03:41:22

あなたにオススメの質問