ここから本文です

PHP初心者です。SQliteを使用し、名前・評価点数・コメントを投稿する掲示板を作成...

han********さん

2012/9/1003:05:34

PHP初心者です。SQliteを使用し、名前・評価点数・コメントを投稿する掲示板を作成、投稿された評価点数の平均値も表示したいと考えていますが、うまく表示できません。解る方おられましたらご教示お願いします。

元ソース

<?php
$savepath = dirname(__FILE__).'/keiziban.db'; // ログの保存先
$script_name = $_SERVER["SCRIPT_NAME"]; // このプログラムのパス
// データベースへの接続
try {
$db = new PDO("sqlite:$savepath");
} catch (PDOException $e) {
echo "接続失敗:".$e->getMessage(); exit;
}
// テーブル定義
$create_query = <<< ___SQL___
CREATE TABLE IF NOT EXISTS keiziban (
log_id INTEGER PRIMARY KEY, /* ログID */
name TEXT, /* 名前 */
value INTEGER, /* 評価 */
body TEXT /* 本文 */
);
___SQL___;
$db->exec($create_query);


if (isset($_GET["value"]) && isset($_GET["body"])) {
// 入力を検証
if ($_GET["value"] == "" || $_GET["body"] == "") {
echo "<p>年齢と本文は必ず入力してください。</p>"; exit;
}
// データベースに挿入
$template = "INSERT INTO keiziban (name,value,body)".
"VALUES(?,?,?);";
$stmt = $db->prepare($template);
$stmt->execute(array($_GET["name"],$_GET["value"],$_GET["body"]));

}

// ログの表示
$select_query = "SELECT * FROM keiziban ORDER BY log_id DESC";
$stmt = $db->query($select_query);
foreach ($stmt as $row) {
$name = htmlspecialchars($row["name"]);
$value = htmlspecialchars($row["value"]);
$body = htmlspecialchars($row["body"]);
echo "<div class='log1'> $name さん</div>";
echo "<div class='log1'> 評価 $value </div>";
echo "<div class='log2'> コメント $body</div>";


}
// 書き込みフォームの表示
echo <<< __FORM__

<form action="$script_name" method="GET">
名前:<input type="text" name="name" size="8" />
評価:<input type="text" name="value" size="3" />
本文:<input type="text" name="body" size="40" />
<input type="submit" value="書込" />
</form>
__FORM__;


これに平均値を表示するため
$ave= $db->exec("SELECT avg(value) FROM keiziban");
または$ave= $db->query("SELECT avg(value) FROM keiziban");
echo "$ave";
と入れましたが、EXECでは結果が「0」となり、QUERYではエラーとなります。

閲覧数:
539
回答数:
1

違反報告

ベストアンサーに選ばれた回答

プロフィール画像

カテゴリマスター

shimixさん

2012/9/1010:17:35

>$ave= $db->query("SELECT avg(value) FROM keiziban");
>echo "$ave";

PDO::queryの戻り値が何であるかを調べれば、すぐにわかると思いますが・・・

http://jp.php.net/manual/ja/pdo.query.php

書くとしたら、こうでしょうね

$ave = $db->query("SELECT avg(value) FROM keiziban");
$row = $ave->fetch(PDO::FETCH_NUM);
echo $row[0];

質問した人からのコメント

2012/9/10 15:48:25

降参 できました。早速のご回答有り難うございました。

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる