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

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

解決済みの質問

PHPのサンプルコードが意図した通りに動かない。

かれこれ6時間眺めてますが何が駄目なのかがわかりません。
どこが悪いのか教えていただけると助かります。

このbbs.phpは
二つのインプット要素をもつHTMLフォームを含むPHPファイルで、
名前とひとことコメントを入力してsubmitすれば
フォームの下部にそのコメントを
名前、コメント、日付の書式で一行づつ表示する
。。。はずだったんですが

Parse error: syntax error, unexpected T_STRING in /Applications/XAMPP/xamppfiles/htdocs/online_bbs/bbs.php on line 48

らしく該当する行を眺めてみても何がいけないのかさっぱりです。
コード内にもエラーが出たら出力するコードがあるのですが
どうやらこれはインタープリタ自体が吐くエラーのようで
このエラーの表示時にはフォーム要素は一切表示されません。

なにがいけないのか教えてください
ほとほと困り果てています

<?php


$link = mysql_connect(`localhost`,`root`,`takataka`);
if(!$link) {
die(`Can not connect database`. mysql_error());
}
mysql_select_db(`online_bbs`,$link);

$errors = array();

if($_SERVER[`REQUEST_MTHOD`]===`POST`) {
$name = null;
if(!isset($_POST[`name`]) || !strlen($_POST[`name`])) {
$errors[`name`] = `input your name `;
}else if(strlen($_POST[`name`]) > 40) {
$errors[`name`] = `名前は四十文字以内で入力してください`;
}else {
$name = $_POST[`name`];
}
$comment = null;

if(!isset($_POST[`comment`]) || !strlen($_POST[`comment`])) {
$errors[`comment`] = `Input your comment please `;
}else if(strlen($_POST[`comment`]) > 200) {
$errors[`comment`] = `コメントは200文字以内で入力してください`;
}else {
$comment = $_POST[`comment`];
}
if(count($errors) === 0) {
$sql = "INSERT INTO `post` (`name`,`comment`,`created_at`) VALUES (`"
. mysql_real_escape_string($name) . "`,`"
. mysql_real_escape_string($comment) . "`,`"
. date(`Y-m-d H:i:s`) . "`);

mysql_query($sql,$link);
mysql_close($link);
header(`Location: http://localhost/online_bbs/bbs.php`);
}
}
?>
<html>
<head>
   <titlle>ひとこと掲示板</title>
</head>
<body>
<h1>ひとこと掲示板掲示板</h1>

<form action="bbs.php" method="post"> //ここが48行目になります
<?php if (count($errors) > 0): ?>
<ul class="error_list">
<?php foreach ($errors as $error): ?>
<li>
<?php echo htmlspecialchars($error,ENT_QUOTES,`UTF-8`) ?>
</li>
<?php endforeach; ?>
</ul>
<?php endif; ?>
名前:<input type="text" name="name"/><br/>
ひとこと;<input type="text" name="comment" size="60"/><br/>
<input type="submit" name="submit" value="送信"/>
</form>
<?php
$sql = "SELECT * FROM `post` ORDER BY `created_at` DESC";
$result = mysql_query($sql,$link);
?>
<p><?php echo $result; ?></p>
<?php if($result !== false && mysql_num_rows($result)): ?>
<ul>
<?php while($post = mysql_fetch_assoc($result)): ?>
<li>
<?php echo htmlspecialchars($post[`name`],ENT_QUOTES,`UTF-8`); ?>
<?php echo htmlspecialchars($post[`comment`],ENT_QUOTES,`UTF-8`); ?>
-
<?php echo htmlspecialchars($post[`created_at`],ENT_QUOTES,`UTF-8`); ?>
</li>
<p>test</p>
<?php endwhile; ?>
</ul>
<?php endif; ?>
<?php
mysql_free_result($result);
mysql_close($link);
?>
</body>
</html>

投稿日時 - 2013-07-05 00:44:37

QNo.8162845

困ってます

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

`localhost`,`root`,`takataka`など、文字列らしき箇所がバッククオートになっているのですが、意図したものですか?

バッククオート( ` 日本語キーボードだと、Shift+@ )の使い方
http://www.php.net/manual/ja/language.operators.execution.php

文字列に使うのは、シングルクオート( ' 日本語キーボードだと、Shift+7)
あるいはダブルクオート( " 日本語キーボードだと、Shift+2)
http://www.php.net/manual/ja/language.types.string.php

投稿日時 - 2013-07-05 01:33:38

補足

ああああああああああああああああああ
指摘されて初めて気づきました(冷や汗)
こんな間違いに丸一日気づかないとは。。。。。。
とりあえず全部シングルクォートに置換してやってみます

投稿日時 - 2013-07-05 11:36:12

お礼

解決しました。
私の複数箇所に及ぶ書き損じが原因でした。
あるべき文字がそこにない行が複数ありつあり、それを全部直すことで
動作するようになりました。

しかし、それらをすべて直してもバッククォートのままでは動作しなかったでしょう。あなたのご指摘のおかげで勉強を前へ進めることができました。
本当に感謝します。
ありがとうございました。

投稿日時 - 2013-07-05 12:05:02

ANo.1

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

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

回答(2)

ANo.2

その行を見てもダメならもっと前を見る.

投稿日時 - 2013-07-05 10:04:48

補足

見てみたら
METHODと書くべきところがMTHODとつづりを間違えているのに気づきました。訂正してみましたが
いまだに上記エラーが吐き出されます。
.....どうも複数のエラーを含むコードを書いてしまったようです。
要素ひとつ一つに書き間違いがないかどうかいまからチェックしてみます。

投稿日時 - 2013-07-05 11:52:13

お礼

解決しました。
私の複数箇所に及ぶ書き損じが原因でした。
あるべき文字がそこにない行が複数ありつあり、それを全部直すことで
動作するようになりました。

エラーが示す行だけではなく、その周辺にも目をやるようにします。
ご指摘ありがとうございました

投稿日時 - 2013-07-05 12:03:24

あなたにオススメの質問