PHPのサンプルコードでエラーが発生する

このQ&Aのポイント
  • PHPのサンプルコードが意図した通りに動かない。
  • Parse error: syntax error, unexpected T_STRING in /Applications/XAMPP/xamppfiles/htdocs/online_bbs/bbs.php on line 48というエラーが発生しています。
  • エラーの原因を特定できずに困っています。どこが悪いのか教えていただけると助かります。
回答を見る
  • ベストアンサー

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>

  • PHP
  • 回答数2
  • ありがとう数2

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

  • ベストアンサー
  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.1

`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

tkg5555
質問者

お礼

解決しました。 私の複数箇所に及ぶ書き損じが原因でした。 あるべき文字がそこにない行が複数ありつあり、それを全部直すことで 動作するようになりました。 しかし、それらをすべて直してもバッククォートのままでは動作しなかったでしょう。あなたのご指摘のおかげで勉強を前へ進めることができました。 本当に感謝します。 ありがとうございました。

tkg5555
質問者

補足

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

その他の回答 (1)

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

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

tkg5555
質問者

お礼

解決しました。 私の複数箇所に及ぶ書き損じが原因でした。 あるべき文字がそこにない行が複数ありつあり、それを全部直すことで 動作するようになりました。 エラーが示す行だけではなく、その周辺にも目をやるようにします。 ご指摘ありがとうございました

tkg5555
質問者

補足

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

関連するQ&A

  • データベースが文字化けしてしまいます

    過去の相談を見ながらいろいろとやりましたがもうお手上げ状態です。 だれか助けてください。 PHPパーフェクト(技術評論社)を見ながらPHPの勉強をしている初心者です。 下記のようなPHPコードを書いてデータベースに保存しようとしているんですが、 phpmyadminで確認するとどうしても「文字化け」してしまいます。 <?php $link = mysql_connect("localhost", "■", "■"); if(!$link){ die("データベースに接続できません:".mysql_error()); } mysql_select_db("oneline_bbs", $link); $errors = array(); if($_SERVER['REQUEST_METHOD']==="POST"){ $name = null; if(!isset($_POST["name"])||!strlen($_POST["name"])){ $errors['name'] = "名前を入力してください"; }else if(strlen($_POST["name"]) > 40){ $errors['name'] = "名前は40文字以内で入力してください"; }else{ $name = $_POST["name"]; } $comment = null; if(!isset($_POST["comment"])||!strlen($_POST["comment"])){ $errors["comment"] = "ひとことを入力してください"; }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); } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=euc-jp" /> <title>ひとことけいじばん</title> </head> <body> <form action="bbs.php" method="post"> 名前:<input type="text" name="name" /><br /> ひとこと:<input type="text" name="comment" size="60" /><br /> <input type="submit" name="submit" value="送信" /> </form> </body> </html> データベースは CREATE DATABASE 'oneline_bbs' DEFAULT CHARACTER SET utf8; ・・・ と入力して作りました。 過去の相談事例からphp.iniなどもいじって見ましたが、 どうにもなりません。 XAMPP 1.7.3 windowsXP DreamweaverCS5.5 ブラウザChormeを使用しています。 だれか詳しい方よろしくお願いします。

    • ベストアンサー
    • MySQL
  • javascript php フォームについて

    javascriptで作ったフォームをphpに送信したいのですが、上手く送信できません。 どのようにすれば上手く送信することができるでしょうか? 回答お願いします。 javascript側のソース <body> <form name="nform1" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問1</p> <p> (1)<input type="text" name="kaitouran11" size="20"> (2)<input type="text" name="kaitouran12" size="20"> (3)<input type="text" name="kaitouran13" size="20"> (4)<input type="text" name="kaitouran14" size="20"> </p> </form> <form name="nform2" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問2</p> <p> (1)<input type="text" name="kaitouran21" size="20"> (2)<input type="text" name="kaitouran22" size="20"> (3)<input type="text" name="kaitouran23" size="20"> (4)<input type="text" name="kaitouran24" size="20"> </p> </form> <form name="nform3" method="POST" action="./kaitou1.php" enctype="text/plain"> <p>問3</p> <p> (1)<input type="text" name="kaitouran31" size="20"> (2)<input type="text" name="kaitouran32" size="20"> (3)<input type="text" name="kaitouran33" size="20"> (4)<input type="text" name="kaitouran34" size="20"> </p> </form> <input type="button" value="送信" onClick="send()"> </body> php側のソース <body> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </body>

    • 締切済み
    • PHP
  • PHP ログインシステムについて

    お世話になります 現在ローカルで下記PHPのテストを行っています PHP初心者の為、セキュリティ面並びに不具合が心配で書き込みさせて頂きました 恐れ入りますがおかしな点がないかチェックして頂けませんでしょうか 宜しくお願いいたします データベースのバージョンはMySQL 5.5です ***************************************** <?php session_start(); $error_message = ""; if (isset($_POST["login"])) { $id = htmlspecialchars($_POST['id']); $password = htmlspecialchars(base64_encode(pack('H*', sha1($_POST['password'])))); $_SESSION['id'] = $_POST['id']; $_SESSION['password'] = $_POST['password']; $db = mysql_connect("***","***","***"); if (!$db) { die('接続失敗です。'.mysql_error()); } mysql_set_charset("utf8"); $db_selected = mysql_select_db("***", $db); if (!$db_selected){ die('データベース選択失敗です。'.mysql_error()); } $result = mysql_query("SELECT * FROM ***"); if (!$result) { die('クエリーが失敗しました。'.mysql_error()); } function x($result) { return mysql_real_escape_string($result); } while ($row = mysql_fetch_assoc($result)) { if($id == $row['id'] && $password == $row['password']){ header("Location:./instance.php"); } } $_SESSION = array(); if (isset($_COOKIE[session_name()])) { setcookie(session_name(), '', time()-42000, '/'); } session_destroy(); $error_message = "ユーザ名もしくはパスワードが違っています。"; } ?> <html> <head><title>ログイン</title> <meta http-equiv=Content-Type content="text/html; charset=utf-8"> <link rel="stylesheet" type="text/css" href="style.css" media="screen" /> </head> <body> <?php if ($error_message) { print '<font color="red">'.$error_message.'</font>'; } ?> <form action="login.php" method="post"> ID:<input type="text" name="id"><br /> PASS:<input type="password" name="password"><br /> <input type="submit" name=login value="認証"> </form> </body> </html>

    • 締切済み
    • PHP
  • PHP 送信されたフォームについて

    HTMLから送信されたフォームがうまくうけとれないので質問させていただきます。 HTML側でチェックボックスを用いてphp側に送ったところうまく結果が反映されません。 HTML側で以下のソースを書き <input type="checkbox" name="kaitouran321" value="a">a <input type="checkbox" name="kaitouran322" value="b">b <input type="checkbox" name="kaitouran323" value="c">c php側で <?php print(htmlspecialchars($_POST['kaitouran321'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran322'], ENT_QUOTES, 'UTF-8')); ?> <?php print(htmlspecialchars($_POST['kaitouran323'], ENT_QUOTES, 'UTF-8')); ?> および <?php if($_POST['kaitouran321'] == 'a' && $_POST['kaitouran322'] == 'b' && $_POST['kaitouran323'] == 'c') ?> $i++; と書きました。htmlキャラはしっかり受け取ってくれるのですが、if文で書いた方は反応してくれません(iが+1されない)。選択肢がひとつの時、if文は反応するので条件の書き方がおかしいのでしょうか? 回答お願いします。

    • 締切済み
    • PHP
  • 現在PHPにてsessionを使用したフォームを作成しております。

    現在PHPにてsessionを使用したフォームを作成しております。 現在、PHPは初心者で勉強中ですが悩んでいるため、ご質問させていただきます。 ソースは下記の通りです。 /* contact.php ----------------------*/ <html> <body> <form action="confirm.php" method="POST" > コメント:<br /> <?php echo $_SESSION['error_comment']; ?> <textarea name="comment"><?php echo $_SESSION['comment']; ?></textarea> <input type="hidden" name="contact" value="<?php $contact; ?>" /> <input type="submit" name="submit" value="確認" /> </form> </body> </html> /* confirm.php ----------------------*/ <?php session_start(); $comment = htmlspecialchars($_POST['comment']); if (isset($_POST["contact"])) { if (empty($comment)) { $_SESSION['error_comment'] = "コメントを入力してください!"; } if (!count($contact)) { $_SESSION["comment"] = $comment; header("Location: contact.php"); exit; } } else { $msg = '編集しました。'; } <html> <body> <?php echo $msg; ?> </body> </html> としております。 上記の内容でテストをするとcomment欄に入力されないと「コメントを入力してください!」と表示されますが、入力(テストと入力)をして確認をすると onfirm.phpのページは表示されずcontact.phpのcomment欄にテストと表示されたままです。 入力された場合はconfirm.phpを表示されせるにはどうしたらよろしいのでしょうか? お分かりの方がいらっしゃいましたら、ご教授お願いします。

    • ベストアンサー
    • PHP
  • PHPで掲示板

    PHPでひとこと掲示板を以下の要件を満たすように作成しています。 ・利用者が名前とコメントを入力し、発言できる。 ・利用者の過去の発言内容をテキストファイルで管理する。 ・全ての利用者の過去の発言内容を一覧で表示する。一覧には「名前」「コメント」「発言日時」の3つを1行ずつ表示する。 ・利用者の名前は最大20文字以内まで発言できる。もし20文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。 ・利用者のコメントは最大100文字以内まで発言できる。もし100文字より多くの文字を入力して発言した場合はエラーメッセージを表示し、発言できないようにする。 ・利用者の名前とコメントは必ず文字が入力される。もし名前あるいはコメントが未入力で発言した場合はエラーメッセージを表示し、発言できないようにする。 ・(ソースコード)比較演算子は、「===」や「!==」を利用すること 初心者なので、頭がこんがらがって意味が分からなくなってしまいました。以下のコードでおかしいところのご指摘をお願いします。また、よろしければ皆さんのプログラミングのオススメ学習法を教えていただけると幸いです。 <?php const FILE_NAME = './bbs.txt'; $date = date("Y-m-d H:i:s"); $log = ''; if ($_SERVER['REQUEST_METHOD'] === 'POST') { $name = $_POST['name']; // $comment = $_POST['comment']; // $log = $name . ':' . $comment . '-' . $date . "\n"; if (($fp = fopen(FILE_NAME, 'a')) !== false) { if ((mb_strlen($name) <= $name_max) && (mb_strlen($name) !== 0)){ print '名前は20文字以内で書いてください'; if (fwrite($fp, $name) === false) { print 'ファイル書き込み失敗'; } } fclose($fp); } if ($_SERVER['REQUEST_METHOD'] === 'POST') { // $name = $_POST['name']; $comment = $_POST['comment']; $log = $name . ':' . $comment . '-' . $date . "\n"; if (($fp = fopen(FILE_NAME, 'a')) !== false) { if ((mb_strlen($comment) <= $comment_max) && (mb_strlen($comment) !== 0)){ print 'ひとことは100文字以内で書いてください'; if (fwrite($fp, $log) === false) { print 'ファイル書き込み失敗'; } } fclose($fp); } $data = array(); if (is_readable(FILE_NAME) === true) { if (($fp = fopen(FILE_NAME, 'r')) !== false) { while (($tmp = fgets($fp)) !== false) { $data[] = htmlspecialchars($tmp, ENT_QUOTES, 'UTF-8'); } fclose($fp); } } ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title></title> </head> <body> <h1>一言掲示板</h1> <form method="post"> <p>名前 : <?php if (mb_strlen($name)){?><input type="text" name="name"> <?php } ?> ひとこと : <?php if (mb_strlen($comment)){?><input type="text" name="comment"><?php } ?> <input type="submit" value="送信"> </p> </form> <ul> <?php foreach ($data as $value) { ?> <li> <?php print $value; ?> </li> <?php } ?> </ul> </body> </html>

    • ベストアンサー
    • PHP
  • php ひとこと掲示板について

    お世話になります。 現在php初心者で勉強中のものです。 現在「ひとこと掲示板を作る」というのをやっています。 ちなみに書籍はたにぐちまことの よくわかるPHPの教科書です。 1 ログイン画面で ハンドルネーム アドレス 写真を入れる項目があるのですが、画像を入れても check.phpで 画像が×になります。 解決方法が知りたいです。 2 登録と押しても登録できません エラーは出ませんがMyAdominに会員登録情報のデータも送信されていませんでした。 ソース index.php <?php require('../dbconnect.php'); session_start(); if (!empty($_POST)){ //エラーの確認 if ($_POST['name'] == ''){ $error['name'] ='blank';} if ($_POST['email'] == ''){ $error['email'] = 'blank';} if (strlen($_POST['password']) < 4) { $error['password'] = 'length';} if($_POST['password'] == ''){ $error['password'] = 'blank';} $fileName = $_FILES['image']['name']; if (!empty($fileName)) { $ext = substr($fileName, -3); if ($ext !='jpg' && $ext !='gif'){ $error['image'] = 'type'; } } //重複アカウントのチェック if(empty($error)){ $sql = sprintf('SELECT COUNT(*) AS cnt FROM members WHERE email="%s"', mysql_real_escape_string($_POST['email'])); $record = mysql_query($sql) or die(mysql_error()); $table = mysql_fetch_assoc($record); if($table['cnt'] > 0){ $error['email'] = 'duplicate'; } } if(empty($error)){ //画像をアップロードする $image = date('YmdHis') . $_FILES['image']['name']; move_uploaded_file($_FILES['imge']['tmp_name'], '../member_picture/'. $image); $_SESSION['join']=$_POST; $_SESSION['join']['image'] = $image; header('Location: check.php'); exit(); }} //書き直し機能 if ($_REQUEST['action'] == 'rewrite') { $_POST = $_SESSION['join']; $error['rewrite'] = true;}?> <p>会員登録画面に必要事項を記入ください</p> <form action="" method="post" enctype="multipart/form-data"> <dl> <dt>ハンドルネーム<span class="required">必須</span></dt> <dd> <input type="text" name="name" size="35" maxlegth="255" value="<?php echo htmlspecialchars($_POST['name'], ENT_QUOTES,'UTF-8'); ?>" /> <?php if($error['name'] == 'blank'):?> <p clas="error">*ハンドルネームを入力してください</p> <?php endif; ?> </dd> <dt>メールアドレス<span class="required">必須</span></dt> <dd><input type="text" name="email" size="35" maxlegth="225" value="<?php echo htmlspecialchars($_POST['email'],ENT_QUOTES,'UTF-8');?>" /> <?php if($error['email'] == 'blank'): ?> <p class="error">*メールアドレスを入力してください</p> <?php endif; ?> <?php if($error['email'] =='duplicate'): ?> <p class="error">*指定されたメールアドレスは既に登録されています</p> <?php endif; ?> </dd> <dt>パスワード<span class="required">必須</span></dt> <dd><input type="password" name="password" size="10" maxlength="20" value="<?php echo htmlspecialchars($_POST['password'], ENT_QUOTES,'UTF-8'); ?>" /> <?php if($error['password'] == 'blank'): ?> <p class="error">*パスワードを入力してください</p> <?php endif; ?> <?php if($error['password'] == 'length'): ?> <p class="error">*パスワードは4文字以上で入力してください</p> <?php endif; ?></dd> <dt>写真など</dt> <dd><input type="file" name="image" size="35"/> <?php if ($error ['image'] == 'type'): ?> <p class="error">写真などは[.gif]または[.jpg]の画像を指定してください</p> <?php endif; ?> <?php if (!empty($error)): ?> <p class="error">恐れ入りますが画像を改めて指定してください</p> <?php endif; ?> </dd> <div><input type="submit" value="入力内容を確認する"/></div></form> check.php <?php session_start(); require('../dbconnect.php'); if(!isset($_SESSION['join'])) { header('Location: index.php'); exit();} if(!empty($_POST)) { //登録処理をする $sql = sprintf('INSERT INTO members SET name="%s", email="%s", password="%s",picture="%s",created="%s"', mysql_real_escape_string($_SESSION['join']['name']), mysql_real_escape_string($_SESSION['join']['email']), mysql_real_escape_string(shal($_SESSION['join']['password'])), mysql_real_escape_string($_SESSION['join']['image']), date('Y-m-d H:i:s')); mysql_query($sql) or die(mysql_error()); unset($_SESSION['join']); header('Location: thanks.php'); exit(); }?> <form action="" method="post" <input type="hidden" name="action" value="submit"/> <dl> <dr>ハンドルネーム</dr> <dd> <?php echo htmlspecialchars($_SESSION['join']['name'],ENT_QUOTES, 'UTF-8'); ?></dd> <dt>メールアドレス</dt> <dd> <?php echo htmlspecialchars($_SESSION['join']['email'],ENT_QUOTES, 'UTF-8'); ?></dd> <dt>パスワード</dt> <dd>[表示されません]</dd> 文字制限でここまでです すみません。 お願いいたします。

    • ベストアンサー
    • PHP
  • ajax&php post 一部更新

    http://okwave.jp/qa/q7574571.html でもご質問させていただきましたが、ajaxを使用してphpファイルに記述のあるmysql insert文でデータベースの登録はできました。 bbs.php <table class="commentlist"> <!-- bbs.inc.phpファイルという別ファイルでfor文で一覧を出している。 --> </table> <!-- ここからがコメントの入力 --> <form method="post"> <input type="text" name="comment" id="comment" value="" /> <input type="button" name="save" id="save" value="投稿" /> </form> $("#save").click(function(){ var p = $("#comment").val(); $("#comment").val(""); $.post( "bbs.php", { request:p, success: (ここがわからない。)}); }); としたときにフォームでpostしたときにページ全体にリロードではなくclass="commentlist"の一覧のみリロードしたいのですが、どうもできません。 どなたかご教示お願いします。 (bbs.inc.phpはソース内には残したくないです。)

  • php 送信されたフォームについて

    送信されたフォームの受け取る側のソースを書いたのですが、 <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> を付け加えるとエラーが表示されます。エラーの対象になっているのは print('正解数'.$i./4'です');らしいのですが、なぜエラーになるのかわかりません 回答お願いします。 以下ソースです。 <html> <head> <title>解答</title> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <style type=""text/css""> #container{ width:1000 } #main{ width:500px; float:right; } #sidebar{ width:500px; float:left; } </style> </head> <body> <div id="container"> <div id="main"> <p>問題の解答</p> <p>問1</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> <p>問2</p> <p>(1)(2)(3)(4)</p> </div> <div id="sidebar"> <p><>あなたの解答<></p> <p>問1</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran11'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran12'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran13'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran14'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問2</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran21'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran22'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran23'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran24'], ENT_QUOTES, 'UTF-8')); ?> </p> <p>問3</p> <p>(1)<?php print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')); ?> (2)<?php print(htmlspecialchars($_POST['kaitouran32'], ENT_QUOTES, 'UTF-8')); ?> (3)<?php print(htmlspecialchars($_POST['kaitouran33'], ENT_QUOTES, 'UTF-8')); ?> (4)<?php print(htmlspecialchars($_POST['kaitouran34'], ENT_QUOTES, 'UTF-8')); ?> </p> </div> </div> <?php $i = 0; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; if(print(htmlspecialchars($_POST['kaitouran31'], ENT_QUOTES, 'UTF-8')) == 'a') $i++; print('正解数'.$i./4'です'); ?> </body> </html>

    • 締切済み
    • PHP
  • 「同一phpページ内に一言掲示板」の作り方。

    PHP勉強中の初心者です。 bbs.phpに投稿フォームと投稿内容を表示するページ、bbs2.phpにはエラー処理&投稿完了メッセージと、別々に作る方法は下記で一応出来たのですが、これらを一つの.phpに纏めるにはどうすればいいのでしょうか? bbs2.phpの方に逐一入っている、 exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); とかのエラーメッセージの表示は、全てformタグの前後辺りに移して、です。 試行錯誤してみましたが、変なエラーばっかり出てしまいます。 うまい方法がありましたら、変数・関数の追加や削除は自由です。 どうかご教授の方、よろしくお願いします。 【bbs.txt(例)】 <strong>名前:</strong>テスト2&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんばんは&emsp;<strong>時間:</strong>09月19日 20時02分 <strong>名前:</strong>テスト1&thinsp;<font size="2">さん</font>&emsp;<strong>コメント:</strong>こんにちは&emsp;<strong>時間:</strong>09月19日 13時48分 【bbs.php】 <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <form action="bbs2.php" method="post"> 名前:<input size="15" type="text" name="name" value="">&emsp;コメント:<input size="30" type="text" name="comment">&emsp;<input type="submit" value="送信">&nbsp;<input type="reset"> </form> <hr> <?php $lines = file('bbs.txt'); foreach ($lines as $l) { print "</p>" . $l . "</p>\n"; } ?> <hr> 【bbs2.php】 <?php if (mb_strlen($_POST['name']) === 0 && mb_strlen($_POST['comment']) === 0) { exit('名前・コメントが両方未入力です。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['name']) !== TRUE || mb_strlen($_POST['name']) === 0) { exit('名前を入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (isset($_POST['comment']) !== TRUE || mb_strlen($_POST['comment']) === 0) { exit('コメントを入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20 && mb_strlen($_POST['comment']) > 100) { exit('名前(20文字以内)とコメント(100文字以内)が両方文字数制限を超えています。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['name']) > 20) { exit('名前は20文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (mb_strlen($_POST['comment']) > 100) { exit('コメントは100文字以内で入力してください。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } else if (preg_match('/http/', $_POST['comment']) > '0' ) { exit('スパム対策により、URL付きのコメントは投稿できません。<p><a href="javascript:history.back();">掲示板ヘ戻る</a></p>'); } $name = htmlspecialchars($_POST['name']).'&thinsp;<font size="2">さん</font>'; $comment = htmlspecialchars($_POST['comment']); $now = date('m月d日 H時i分'); $post_data = "<strong>名前:</strong>$name&emsp;<strong>コメント:</strong>$comment&emsp;<strong>時間:</strong>$now\n"; $read_data = file_get_contents('bbs.txt'); file_put_contents('bbs.txt',$post_data . $read_data); ?> <html> <head> <meta http-equiv="Content-Type" content="text/html" charset="utf-8" /> <title>一言</title> </head> <body> <p>コメントを投稿しました。</p> <p><a href="bbs.php">一覧へ戻る</a></p> </body> </html>

    • ベストアンサー
    • PHP

専門家に質問してみよう