スレッド表示 | フラット表示〕 全トピック 920 件中 310 番目 次≫ ≪前

MySQLとPHPで画像投稿掲示板

created: 2005-12-08 15:28 | modified: 2005-12-09 19:35 | reply: 1

[2791] MySQLとPHPで画像投稿掲示板

user: ゴウ | created: 2005-12-08 15:28
もともとはPostgreSQLだったソースをMySQLに置き換えて作っているのですがどうしても上手く行かずにいます

ソース
<?php
$con = mysql_connect("localhost","root","root");

if ($con == False) {
print ("can not connect db\n");
exit;
}

$db = "test";

$sql = "select * from pgbbs3 order by number";

$rs = mysql_db_query($db,$sql);

if ($_POST['write']) {
$name = get_form($_POST['name']);
if (strlen($name) > 100) exit();
if (!$name) $name = "名無しさん";
$title = get_form($_POST['title']);
if (strlen($title) > 100) exit();
if (!$title) $title = "無題";
$contents = get_form($_POST['contents']);
if (strlen($contents) > 500) exit();
if (!$contents) error("本文を入力してください");
$delkey = get_form($_POST['delkey']);
$expire = time() + 3600 * 24 * 30;
setcookie("name", $name, $expire);
setcookie("delkey", $delkey, $expire);
$tname = $_FILES['image']['tmp_name'];
if ($tname) {
if (!is_uploaded_file($tname)) error("不正なアップロード");
$type = $_FILES['image']['type'];
if ($type != "image/jpeg" && $type != "image/pjpeg") {
error("JPEG形式ではありません");
}
$rs = mysql_db_query($db, "select last_value from pgbbs3_no_seq"select * from pgbbs3 order by number);
$no = mysql_result($rs, 0, 0) + 1;
$path = "image/$no.jpg";
move_uploaded_file($tname, $path);
$path_t = "image/{$no}_t.jpg";
list($sw, $sh) = getimagesize($path);
$dw = 128;
$dh = $dw * $sh / $sw;
$src = imagecreatefromjpeg($path);
$dst = imagecreatetruecolor($dw, $dh);
imagecopyresized($dst, $src, 0, 0, 0, 0, $dw, $dh, $sw, $sh);
imagejpeg($dst, $path_t);
}
mysql_db_query($db, "insert into pgbbs3(name,title,contents,delkey) values('$name','$title','$contents','$delkey')");
} else {
$name = $_COOKIE['name'];
$delkey = $_COOKIE['delkey'];
}
if ($_POST['delete']) {
$no = get_form($_POST['no']);
$delkey = get_form($_POST['delkey']);
$rs = mysql_db_query($db, "delete from pgbbs3 where no=$no and delkey='$delkey'");
if (mysql_affected_rows($rs) == 0) error("記事削除に失敗しました");
}

// フォームの文字列を取得する
function get_form($str) {
$str = mysql_escape_string(htmlspecialchars($str));
$str = ereg_replace("\n|\r|\r\n", "<br>", $str);
return $str;
}

// エラー表示して終了
function error($msg) {
print "<p><font color='red'>$msg</font></p>\n";
exit();
}
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<title>画像アップロード掲示板</title>
</head>
<body>
<p>JPEGファイルのみアップロードできます。</p>
<form method="post" action="pgbbs3.php" enctype="multipart/form-data">
お名前:<input type="text" name="name" value="<?php print $name ?>"><br>
題 名:<input type="text" name="title"><br>
<input type="hidden" name="max_file_size" value="30000">
画像:<input type="file" name="image"><br>
削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>"><br>
<textarea name="contents" cols="60" rows="5"></textarea><br>
<input type="submit" name="write" value="送信">
</form>
<hr>
<form method="post" action="pgbbs3.php">
記事番号:<input type="text" name="no">
削除キー:<input type="password" name="delkey" value="<?php print $delkey ?>">
<input type="submit" name="delete" value="記事削除">
</form>

<?php
$rs = mysql_db_query($db, "select * from pgbbs3 order by no desc");
while ($row = mysql_fetch_array($rs)) {
$time = substr($row['time'], 0, 19);
$no = $row['no'];
print "<hr>No.{$no} <strong>{$row['title']}</strong>";
print " 投稿者:{$row['name']} 投稿日時:$time";
$fn = "image/{$no}.jpg";
$fn_t = "image/{$no}_t.jpg";
if (file_exists($fn)) print "<br><br><a href='$fn'><img src='$fn_t' border='0'></a>";
print "<br><br>{$row['contents']}\n";
}
mysql_close($con);
?>

</body>
</html>

テーブル
mysql> create table pgbbs3(no integer, name text,title text, contents text, time timestamp, delkey text);

で作っているのですが文字のみの投稿は出来るのですが
画像を添付すると
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\program files\apache group\apache\htdocs\pgbbs3.php on line 37

このようなエラーが出ます。

$rs = mysql_db_query($db, "select last_value from pgbbs3_no_seq");
もしかしてこういった記述のしかたはMySQLではしないのでしょうか?
分かりましたらお願いいたします
reply: 2799 返信 編集 削除

[2799] Re. MySQLとPHPで画像投稿掲示板

user: ゆうじ | created: 2005-12-09 19:35
こんばんわ。

36行目のSQL文のダブルクォーテーションが変ですし
Mysqlではサブクエリーが使えなかったような気がします。
新しいバージョンだと可能なのかもしれませんが。
このあたりは確認されましたか?

$rs = mysql_db_query($db, "select last_value from pgbbs3_no_seq"select * from pgbbs3 order by number);


予断ですが、mysql_db_query はver.4.0.6以降、
古い関数として使用を推薦されてませんので
代わりに、mysql_query を使うと良いようです。
http://jp.php.net/manual/ja/function.mysql-db-query.php

このほか、画像アップロードとは関連はありませんが、
mysql_connect の後、mssql_select_db で、
対象のデータベースを指定してあげた方が良いかもしれません。
http://jp.php.net/manual/ja/function.mssql-select-db.php
Parent: 2791  返信 編集 削除
スレッド表示 | フラット表示〕 全トピック 920 件中 310 番目 次≫ ≪前
ページの一番上へ
Googleグックマークに登録 Yahooグックマークに登録 livedoorクリップに登録 @niftyクリップに登録 はてなブックマークに登録 deliciousに登録 Buzzurlに登録 FC2ブックマークに登録
最近更新された掲示板トピックス
管理人Blog
Yahoo Search

最近更新したNote
PHPマニュアル
今日のブックマーク
PHPマニュアル関数検索
関数名を入力し検索ボタンをクリック↑