電子書籍の厳選無料作品が豊富!

phpの処理結果をdocument.writeで出力したいです。


DBの状態
update  |url  |name|tensuu
2013-04-18 00:00:00 |a.html|田中|10
2013-04-22 00:00:00 |b.html鈴木|20
2013-05-21 00:00:00 |c.html佐藤|30
2013-05-22 00:00:00 |d.html黒田|40
2013-05-22 00:00:00 |e.html安部|50
2013-05-22 00:00:00 |f.html向井|20
2013-05-23 00:00:00 |h.html大井|90


php の記述
*DBに接続後配下を書いてます。

$sql = "select * from [テーブル名] where update < DATE_SUB( CURDATE(),INTERVAL 1 DAY ) order by tensuu DESC";
$sql .= " LIMIT 0,3";
$datas = mysql_query($sql , $db );

//HTML側に出力する
header("Content-type: application/x-javascript");
while ($row = mysql_fetch_assoc($datas)) {

echo "document.write(\"
<a href=\"$row['url']\">$row['name']</a>\")\n";

echo "document.write(\"
<p>$row['tensuu']</p>\")
\n";

}


出力されるHTML側
<html>
<body>

<script type="text/javascript" src="http://www.aaa.com/phpecho.php"></script>
</body>
</html>


この結果でエラーも出ませんが、、、文字も何もでません。。
document.writeのrowあたりの書き方がおかしいと思いますが、
手がつけられない状態です。

アドバイス頂ければ幸いです。
よろしくお願い致します。

A 回答 (2件)

まずもっと簡単なサンプルから初めてみては?



<?php
$row['url']="test_url";
$row['name']="test_name";
echo "document.write(\"<a href=\"$row['url']\">$row['name']</a>\")\n";
?>

とすると、ばしばしエラーになります。
一旦、配列を{}で囲みます

<?php
$row['url']="test_url";
$row['name']="test_name";
echo "document.write(\"<a href=\"{$row['url']}\">{$row['name']}</a>\")\n";
?>

エラーはきえますがソースをみると
document.write("<a href="test_url">test_name</a>")
これではクォーテーションが競合しています。
なので、こんな感じが必要です

<?php
$row['url']="test_url";
$row['name']="test_name";
echo "document.write(\"<a href=\\\"{$row['url']}\\\">{$row['name']}</a>\")\n";
?>
    • good
    • 0
この回答へのお礼

<?php
$row['url']="test_url";
$row['name']="test_name";
echo "document.write(\"<a href=\\\"{$row['url']}\\\">{$row['name']}</a>\")\n";
?>
がヒントになりました!

何度か試した結果、自分のやりたい出力になりました。
アドバイスありがとうございます。

お礼日時:2013/05/24 12:38

JavaScript は ブラウザ上には表立ってエラーを表示してくれませんからねー



Chromeで「メニュー>ツール>JavaScriptコンソール」とか表示してると、原因が分かりやすいかも。

あと、とりあえず、document.write のところを 簡単なもんにして試してみてはどうでしょう。

echo "document.write('hoge')"; とかに。

んで、それが表示されるなら、書き方が なんか悪いんでしょうねって事で。

個人的な好みの話ですが、一行に クォートが やたらとあると 目が痛くなってくるので、少し分割するとかして欲しいなってのは思います。

俺なら こうしてしまうという書き方。

$url = $row['url'];
$name = $row['name'];
$tensuu = $row['tensuu'];

$a = "<a href='{$url}'>{$name}</a>";
$p = "<p>{$tensuu}</p>";

echo "document.write($a);\n";
echo "document.write($p);\n";

テキトーに書いてるので、動く保証はありません。
    • good
    • 0
この回答へのお礼

JavaScript は ブラウザ上には表立ってエラーを表示してくれないんですね。。
勉強になりました。
クォートがたくさんあって「どこが間違っているかみわけにくい・・」
と私も思ってました。。

ご指摘の方法参考にさせていただきます。

お礼日時:2013/05/24 12:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!