walk_titlephoto_select.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0.1 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <style> img{ max-height: 400px; } </style> <script type="text/javascript" src="./jquery.js"></script> <script type="text/javascript"> $(function() { $('input[type=file]').after('<span></span>'); // アップロードするファイルを選択 $('input[type=file]').change(function() { var file = $(this).prop('files')[0]; // 画像以外は処理を停止 if (! file.type.match('image.*')) { // クリア $(this).val(''); $('span').html(''); return; } // 画像表示 var reader = new FileReader(); reader.onload = function() { var img_src = $('<img>').attr('src', reader.result); $('span').html(img_src); } reader.readAsDataURL(file); }); }); </script> </head> <body text="black" background="./gazo/background1.gif"> <center><h2>登録する画像の選択</h2><br> アップロードするファイルを選択してください。:<br> <table cellpadding="1" cellspacing="1" align="center"> <tr><td bgcolor=#eeaa88><pre>保存する画像 : </pre></td> <form action="walk_titlefileupload.php" enctype="multipart/form-data" method="post"> <tr><td algin="left" valign="top"><input type="file" name="userfile" accept="image/*"></td></tr> <tr><td> </td></tr> <tr><td align="center"><input type=submit value="登録する"><input type=reset value="リセット"></td></tr> </table> </form> <center> <form action="サイト名" method="post"> <input type="submit" value="メインに戻る"/> </form> </center> </body> </html>
walk_titlefileupload.php
<html> <head><title>我が家のホームページ</title></head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body text="black" background="./gazo/background1.gif"> <center><h3>画像の新規登録</h3></center> <?php $filepath=""; $file = $_FILES['userfile']; $ext = substr($file['name'],-4); if($ext =='.jpg' || $ext == '.JPG'){ $filepath = './img/' . $file['name']; $success = move_uploaded_file($file['tmp_name'],$filepath); if($success){ print("<center><img src=\"$filepath\" width=\"250\"></center>"); }else{ print("ファイルのアップロードに失敗しました。"); } } $db= new PDO("mysql:host=127.0.0.1;dbname=walkphoto;charset=utf8",'root','password'); ?> <table border="0" align="center"> <form action="walk_titlefileupload.php" method="POST"> <input type="hidden" name="filepath" value="<?php echo $filepath ?>"> <tr> <td bgcolor="#eeaa88">タイトル名 :</td> <td width="100"> <select name="id" > <?php $result = $db->query("SELECT * FROM places"); while ($row = $result ->fetch(PDO::FETCH_NUM)) { ?> <option value="<?php echo $row[0]?>"><?php echo $row[2]?></option> <?php }= ?> </select></td> </tr> <tr> <td>横幅(px) :</td> <td><input type="text" name="w_len" value="200"></td> </tr> <input type="hidden" name="filepath" value="<?php echo $filepath ?>"> <tr> <td colspan="2" align="center"> <input type=submit value="送信する"><input type=reset value="リセット"> </td> </tr> </table><p> </form> <?php $db=null; ?> <cener> <form action="サイト名" method="post"> <input type="submit" value="メインに戻る"/> </form> </center> </body> </html>
walk_titlefile_save.php
<html> <head><title>我が家のホームページ</title></head> <META http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body text="black" background="./gazo/background1.gif"> <center><h2>タイトル画像の新規登録</h2></center> <?php function make_thumbnail($srcPath,$dstPath,$width_s){ $imagesize=getimagesize($srcPath); //サイズを取得 $width=$imagesize[0]; $height=$imagesize[1]; //サムネイルのサイズ //$width_s=120; $height_s=round($width_s*$height/$width); //-------------------------------------------------------- // ②imagecreatefromjpeg関数で画像を取り出しサンプリングに使う。 //-------------------------------------------------------- $image=imagecreatefromjpeg($srcPath); //-------------------------------------------------------- // ③imagecreatetruecolor関数でベースをつくり // そこにサンプリングしてコピーする //-------------------------------------------------------- $image_s=imagecreatetruecolor($width_s, $height_s); //サンプリングする $result=imagecopyresampled($image_s,$image,0,0,0,0,$width_s,$height_s,$width,$height); //-------------------------------------------------------- // ④imagejpg関数でブラウザあるいはファイルとして出力する //-------------------------------------------------------- if($result){ //サンプリングによる画像作成成功 if(imagejpeg($image_s,$dstPath)){ $msg="サムネイル作成成功"; }else{ $msg="サムネイル作成失敗"; } }else{ $msg="サンプリング失敗"; } //取り出した元画像とサンプリングのための作成したベースが画像を削除する imagedestroy($image); imagedestroy($image_s); return $msg; } $filepath=htmlspecialchars($_REQUEST['filepath'],ENT_QUOTES); $id=htmlspecialchars($_REQUEST['id'],ENT_QUOTES); $w_len=htmlspecialchars($_REQUEST['w_len'],ENT_QUOTES); ↓最初のつまずき $srcfile=$_SERVER['DOCUMENT_ROOT']."/wordpress/walkphoto".substr($filepath,1); $db= new PDO("mysql:host=127.0.0.1;dbname=walkphoto;charset=utf8",'root','lczqx23k#H'); $sql="SELECT * FROM places WHERE id=" .$id; $result=$db->query($sql); $row=$result->fetch(PDO::FETCH_ASSOC); $yname=$row['yname']; $imagename="./photoes/".$yname.".jpg"; $db=null; ↓二つ目のつまずき font color="red">$dstfile= $_SERVER['DOCUMENT_ROOT']."/wordpress/walkphoto".substr($imagename,1); $success=copy($srcfile,$dstfile); if($success){ $msg=make_thumbnail($srcfile,$dstfile,200); if($msg=="サムネイル作成成功"){ print("<img src=\"$imagename\">\n"); print("<center><font color=\"red\">画像が更新されない場合、コントロールキーとRキーを同時に押すと画像が更新されます。(Firefoxの場合)</font></center>"); }else{ echo $message; } } ?> <center> <form action="サイト名" method="post"> <input type="submit" value="HOMR"/> </form> </center> </body> </html>
エラーが出た所から下の部分をカットし、カットした部分をもちろん保存しておきます。
$filepath=htmlspecialchars($_REQUEST['filepath'],ENT_QUOTES); $id=htmlspecialchars($_REQUEST['id'],ENT_QUOTES); $w_len=htmlspecialchars($_REQUEST['w_len'],ENT_QUOTES); ↓ カット ($srcfile=$_SERVER['DOCUMENT_ROOT']."/wordpress/walkphoto".substr($filepath,1);) ?>←挿入 ↓以下は残しておく <center> <form action="サイト名" method="post"> <input type="submit" value="HOMR"/> </form> </center> </body> </html>
$dstfileが思いどおりに表示されるか試してみた。
$filepath=htmlspecialchars($_REQUEST['filepath'],ENT_QUOTES); $id=htmlspecialchars($_REQUEST['id'],ENT_QUOTES); $w_len=htmlspecialchars($_REQUEST['w_len'],ENT_QUOTES); ($dstfile= $_SERVER['DOCUMENT_ROOT']."/wordpress/walkphoto".substr($imagename,1);) ?> <?php echo $dstfile?> <center> <form action="サイト名" method="post"> <input type="submit" value="HOMR"/> </form> </center> </body> </html>
一つ目も二つ目も思い通りに表示されたら、保存した文を戻す、
$filepath=htmlspecialchars($_REQUEST['filepath'],ENT_QUOTES); $id=htmlspecialchars($_REQUEST['id'],ENT_QUOTES); $w_len=htmlspecialchars($_REQUEST['w_len'],ENT_QUOTES); $db= new PDO("mysql:host=127.0.0.1;dbname=walkphoto;charset=utf8",'root','lczqx23k#H'); $sql="SELECT * FROM places WHERE id=" .$id; $result=$db->query($sql); $row=$result->fetch(PDO::FETCH_ASSOC); $yname=$row['yname']; $imagename="./photoes/".$yname.".jpg"; $db=null; $dstfile= $_SERVER['DOCUMENT_ROOT']."/wordpress/walkphoto".substr($imagename,1); $success=copy($srcfile,$dstfile); if($success){ $msg=make_thumbnail($srcfile,$dstfile,200); if($msg=="サムネイル作成成功"){ print("<img src=\"$imagename\">\n"): print("<center><font color=\"red\">画像が更新されない場合、コントロールキーとRキーを同時に押すと画像が更新されます。(Firefoxの場合)</font></center>"); }else{ echo $message; } } ?> <center> <form action="サイト名" method="post"> <input type="submit" value="HOMR"/> </form> </center> </body> </html>
(1)削除の例
<?php // 変数の初期化 $sql = null; $res = null; $dbh = null; try { // DBへ接続 $dbh = new PDO("mysql:host=127.0.0.1; dbname=test; charset=utf8", 'username', 'password'); // SQL作成 $sql = "DELETE FROM user_list WHERE id = 3"; // SQL実行 $res = $dbh->query($sql); } catch(PDOException $e) { echo $e->getMessage(); die();} // 接続を閉じる $dbh = null;
(2)更新の例
<?php // 変数の初期化 $sql = null; $res = null; $dbh = null; try { // DBへ接続 $dbh = new PDO("pgsql:host=127.0.0.1; dbname=test;", 'username', 'password'); // SQL作成 $sql = "UPDATE user_list SET age = 15 WHERE id = 4"; // SQL実行 $res = $dbh->query($sql); } catch(PDOException $e) { echo $e->getMessage(); die();} // 接続を閉じる $dbh = null;
一応、phpプログラムでデータベースを操作すプログラムについては、今回で終わります。
本当に中途半端なのですが、章の後半は、レコードを更新・削除の例を紹介します。