質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

Q&A

2回答

1638閲覧

画像投稿の際にサイズと容量をmysqlに保存させる。

hakutou5963

総合スコア15

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Smarty

Smartyは、PHPアプリケーションで使用されるテンプレートエンジンです。

0グッド

0クリップ

投稿2015/11/09 14:08

編集2015/11/09 22:35

PHP(smatry)+Mysqlで画像投稿する際に画像の大きさ(横幅・縦幅)と容量を追加で保存させようと思い、他の
サイトにて質問したりgoogoleで検索して調べているのですが上手くいかず困っています。

CREATE TABLE IF NOT EXISTS `posts` ( `PID` bigint(20) NOT NULL AUTO_INCREMENT, `scriptolutiondesc` varchar(50) NOT NULL, `time_added` varchar(20) DEFAULT NULL, `date_added` date NOT NULL DEFAULT '0000-00-00', `active` char(1) NOT NULL DEFAULT '', `last_viewed` varchar(20) NOT NULL DEFAULT '', `ext` varchar(6) NOT NULL, `views` bigint(20) NOT NULL DEFAULT '0', `rating` float NOT NULL, `ratingcount` bigint(20) NOT NULL, `ip` varchar(20) NOT NULL, `size` int(11) NOT NULL, // 追加 `width` int(11) NOT NULL, // 追加 `height` int(11) NOT NULL, // 追加 PRIMARY KEY (`PID`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=60 ;

submit.php

ini_set('display_errors', 1); error_reporting(E_ALL); // 初期化 $error = null; $msg = null; $processgif = null; if($_REQUEST['subimage']!="") { $accept_tos = cleanit($_REQUEST['accept_tos']); $captcha = cleanit($_REQUEST['captcha']); $uploadedimage = $_FILES['postimage']['tmp_name']; $scriptolutiondesc = cleanit($_REQUEST['scriptolutiondesc']); // 追加 $size = $_FILES['postimage']['size']; // 画像サイズを取得 list($width, $height) = getimagesize($uploadedimage); if($scriptolutiondesc != "") { if(banned_words_chk($scriptolutiondesc)) { $error = $lang['51']; } } if($accept_tos != "1") { $error = $lang['15']; } elseif($captcha != $_SESSION['imagecode']) { $error = $lang['14']; } elseif($uploadedimage != "") { $record_datum = array( 'active' => "'".'0'."'", 'time_added' => "'".time()."'", 'date_added' => "'".date("Y-m-d")."'", 'ip' => "'".$_SERVER['REMOTE_ADDR']."'", 'size' => $size, 'width' => $width, 'height' => $height, ); if ($scriptolutiondesc != "") { $record_datum['scriptolutiondesc'] = "'".mysql_real_escape_string($scriptolutiondesc)."'"; } $query = sprintf("INSERT INTO posts (%s) VALUES (%s);", array_keys($record_datum), array_values($record_datum)); $result=$conn->execute($query); $id = mysql_insert_id(); $theimageinfo = getimagesize($uploadedimage); $thepp = $id; if($theimageinfo[2] == 1) { $thepp .= "-o.gif"; $thepp2 = ".gif"; $processgif = "1"; } elseif($theimageinfo[2] == 2) { $thepp .= "-o.jpg"; $thepp2 = ".jpg"; } elseif($theimageinfo[2] == 3) { $thepp .= "-o.png"; $thepp2 = ".png"; } else { $error = $lang['16']; } if($error == "") { $myvideoimgnew=$config['pdir']."/".$thepp; if(file_exists($myvideoimgnew)) { unlink($myvideoimgnew); } $myconvertimg = $_FILES['postimage']['tmp_name']; move_uploaded_file($myconvertimg, $myvideoimgnew); $tothumbdir = $config['pdir']."/".$id.$thepp2; if(file_exists($tothumbdir)) { unlink($tothumbdir); } if($processgif == "1") { do_resize_image2($myvideoimgnew, "800", "5000", true, $tothumbdir, $config['pdir']."/z1-".$thepp2); if(file_exists($config['pdir']."/z1-".$thepp2)) { unlink($config['pdir']."/z1-".$thepp2); } } else { do_resize_image($myvideoimgnew, "800", "800", true, $config['pdir']."/".$id.$thepp2, "1"); } $tothumbdirb = $config['pdir']."/".$id."-t".$thepp2; if(file_exists($tothumbdirb)) { unlink($tothumbdirb); } if($processgif == "1") { do_resize_image2($myvideoimgnew, "200", "800", true, $tothumbdirb, $config['pdir']."/z1-".$thepp2); if(file_exists($config['pdir']."/z1-".$thepp2)) { unlink($config['pdir']."/z1-".$thepp2); } } else { do_resize_image($myvideoimgnew, "200", "800", true, $config['pdir']."/".$id."-t".$thepp2, "0"); } $tothumbdirc = $config['pdir']."/".$id."-t2".$thepp2; if(file_exists($tothumbdirc)) { unlink($tothumbdirc); } if($processgif == "1") { do_resize_image2($myvideoimgnew, "100", "100", true, $tothumbdirc, $config['pdir']."/z1-".$thepp2); if(file_exists($config['pdir']."/z1-".$thepp2)) { unlink($config['pdir']."/z1-".$thepp2); } } else { do_resize_image($myvideoimgnew, "100", "100", false, $config['pdir']."/".$id."-t2".$thepp2, "0"); } if($config['wm'] == "1") { if($thepp2 != ".gif") { $watermark = $config['imagedir']."/".$config['watermark']; if($thepp2 == ".png") { $img=imagecreatefrompng($config['pdir']."/".$id.$thepp2); } else { $img=imagecreatefromjpeg($config['pdir']."/".$id.$thepp2); } $img_width=imagesx($img); $img_height=imagesy($img); $watermark=imagecreatefrompng($watermark); $watermark_width=imagesx($watermark); $watermark_height=imagesy($watermark); $image=imagecreatetruecolor($watermark_width, $watermark_height); imagealphablending($image, false); $dest_x=$img_width-$watermark_width-5; $dest_y=$img_height-$watermark_height-5; imagecopy($img, $watermark, $dest_x, $dest_y, 0, 0, $watermark_width, $watermark_height); imagesavealpha($img, true); imagejpeg($img, $config['pdir']."/".$id.$thepp2, 90); } } if(file_exists($config['pdir']."/".$thepp)) { if($config['approve_images'] == "0") { $active = ", active='1'"; } $query = "UPDATE posts SET ext='$thepp2' $active WHERE PID='".mysql_real_escape_string($id)."'"; $conn->execute($query); $msg = $lang['18']; } else { $error = $lang['17']; } } } } $pagetitle = $lang['0']; STemplate::assign('pagetitle',$pagetitle); //TEMPLATES BEGIN STemplate::assign('error',$error); STemplate::assign('msg',$msg); STemplate::display('header.tpl'); STemplate::display('submit.tpl'); STemplate::display('footer.tpl'); //TEMPLATES END ?>

miyabi-sun様とKosuke_Shibuya様のアドバイスを元に上記のように変更してみました。

ini_set('display_errors', 1); error_reporting(E_ALL);

上記を追加したことで複数「Notice: Undefined variable」が表示されたので5行目~7行目で変数の初期化を追加しました。
エラーも無くなったので、画像投稿を行ってもMysql側にデータは保存されません。(投稿も政情に完了したとメッセージが・・・)
これは、PHP側が悪いのでしょうか?それともMySQL側の設定が悪いのでしょうか?

PHP5.2.8
MySQL5.1.30

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

php

1ini_set('display_errors', 1); 2error_reporting(E_ALL);

開発時には、必ずこれをファイルの上に記述して、エラーメッセージを表示するようにしてください。
一つ一つ指摘するには多すぎるくらいの問題がありますので、表示されたメッセージを元に、ググる。
調べてソースを直す…。

繰り返せば必ず動きます。

一人前のプログラマが行き詰まった時に当たり前にやっているRSAPって何?

投稿2015/11/09 14:45

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hakutou5963

2015/11/10 00:20

アドバイスを頂き有り難うございます。 勉強になりました、次回からは必ず行います。
guest

0

レコードが挿入されていないとのことで、
一番重要なのはこの辺りでしょう。

php

1if($scriptolutiondesc != "") 2{ 3 $addme = ", scriptolutiondesc='".mysql_real_escape_string($scriptolutiondesc)."'"; 4} 5 6// 追加 7$query="INSERT INTO posts SET active='0', time_added='".time()."', date_added='".date("Y-m-d")."', ip='".$_SERVER['REMOTE_ADDR']."', size='".$size."', width='".$width."', height='".$height."', $addme"; 8 9$result=$conn->execute($query);

SQLのインサート文間違ってますよ。
正しくはこんな感じです。

http://www.dbonline.jp/mysql/insert/index1.html

INSERT INTO db_name.tbl_name (col_name1, col_name2, ...)
VALUES (value1, value2, ...);

しかも最後の"', $addme"だけでも絶対にSQLエラー…
あああ、もう我慢ならん!書きなおしてくれる!

php

1$record_datum = array( 2 'active' => "'".'0'."'", 3 'time_added' => "'".time()."'", 4 'date_added' => "'".date("Y-m-d")."'", 5 'ip' => "'".$_SERVER['REMOTE_ADDR']."'", 6 'size' => $size, 7 'width' => $width, 8 'height' => $height, 9); 10if ($scriptolutiondesc != "") 11{ 12 $record_datum['scriptolutiondesc'] = "'".mysql_real_escape_string($scriptolutiondesc)."'"; 13} 14$query = sprintf("INSERT INTO posts (%s) VALUES (%s);", array_keys($record_datum), array_values($record_datum)); 15$result=$conn->execute($query);

動作未確認のやっつけですが多分動くでしょう。
元々この部分のIF文の中身に到達出来てなかった可能性もありますが、
phpエラーをちゃんと見ていれば気付ける問題だと思います。

投稿2015/11/09 14:56

miyabi-sun

総合スコア21158

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hakutou5963

2015/11/10 00:27

わざわざ書き直して教えて頂き感謝します。 書き直された内容で投稿すると成功するのですがMySQLにデータが保存出されず原因が わかりません。issetでエラーがでないということはPHP側ではなくMySQLのテーブルに 問題が有るんでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問