connet.lolipop.jp
「更新」フォームを作成
「全データ」ページの「更新」(リンク)操作により、更新データをフォームに読み込む。
「画像回転」操作による画像の表示には非同期通信を使う。

update.php
              <?php
              /**
               * 更新フォーム作成
               */
              
              // セッション開始 
              session_start();
              
              // データベースに接続
              require_once('imageDB.php');
              $pdo = executeQuery();
              
              // 更新のid番号をGETメソットで受信
              if(isset($_GET['id'])) {	
                $personId = $_GET['id'];
                
                // 更新レコード取得-SELECTステートメント
                $sql = 'SELECT * FROM image_table WHERE id = :id';
                $row = ''; $stmt = null;
                try {
                  // エラー処理モード設定
                  $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
                  $stmt = $pdo->prepare($sql);
                  $stmt->bindValue(':id', $personId, PDO::PARAM_INT);
                  $stmt->execute();
                  $row = $stmt->fetch(PDO::FETCH_ASSOC); // レコード一行取得(カラムを検索)
                  $person_id = $row['id'];
                  $upimgname = $row['imgName'];
                  $_SESSION['upimage_type'] = $row['imgType']; // jpeg[,png,gif]	
                  $_SESSION['upimgcontent'] = $row['imgContent'];
                  $comment = $row['imgComment'];
                  $created = $row['created_at'];
                  $updated = $row['updated_at'];
                } catch (PDOException $e) {
                    print 'DBエラー'. $e->getMessage();
                }
              } else {
                  return;
              }	
              $pdo = null;
              ?>
              <!--// HTML -->
              <!DOCTYPE html>
              <html lang="ja">
              <head>
              <meta charset="utf-8">
              <title>画像データベース:更新フォーム</title>
              <script src="js/update.js"></script>
              <script src="js/uprotate.js"></script>
              </head>
              <body style="background:#edf5ff">
              <h1>更新</h1>
              <h3 id="reaction">  </h3>
              	<ul style="position:relative;left:-40px;display:flex;list-style:none;">
                  <li>
                  	<form id="update_form">
                      <table>
                      <tr><td>番号  :</td><td><input type="text" name="id" value="<?= $person_id ?>" readonly style="background:#eaeaea;"></td></tr>
                      <tr><td>画像名 :</td><td><input type="text" name="imgname" value="<?= $upimgname ?>" readonly style="background:#eaeaea;"></td></tr>
                      <tr valign="top"><td>コメント:</td><td><textarea name='comment' cols="30" rows="3"><?= $comment ?></textarea></td></tr>
                      <tr><td>登録日時:</td><td><input type='text' value='<?= $created ?>' readonly style="background:#eaeaea;"></td></tr>
                      <tr><td>更新日時:</td><td><input type='text' value='<?= $updated ?>' readonly style="background:#eaeaea;"></td></tr>
                      </table>
                  	</form>
                  	<br />
                  	<a href="" onclick="javascript:updateform('update_form'); return false;">更新</a>    
                  	<a href="show_All.php">戻る</a>
                  	<br /></br /></br />
                  	<a href="show_All.php">全データ表示</a><br />
                  	<a href="insert.php">登録</a><br />
                  	<a href="index.php">トップページ</a>
                  </li>
                  <li>    </li>
                  <!--// 画像回転フォーム-->
                  <li>				
                  	<form id="uprotate_form">			
                      <span>画像回転:</span>
                      <span><input type="button" name='l_angle' value="左へ90度回転" onclick="upimgrotate('uprotate_form','l_rotate')" title="画像を左へ90度回転します。"></span>
                      <span><input type="button" name='r_angle' value="右へ90度回転" onclick="upimgrotate('uprotate_form','r_rotate')" title="画像を右へ90度回転します。"></span>
                  	</form>
                  	<!--// 最初はrequire関数で、以後は非同期通信経由で画像表示。-->
                  	<div id="uprotateimageshow"><?php require_once("upimagerotate.php"); ?></div>
                  	<div><?php print $upimgname; ?></div>
                  </li>
              	</ul>
              </body>
              </html>
「更新」ページに表示する画像データを作成
画像及び回転角度のデータは非同期通信経由で受け取る。

upimagerotate.php
              <?php
              /**
               * 画像回転操作による画像出力/表示
               */
              
              // セッション開始 
              @session_start();
                 
              // 回転角度の初期値
              $uprotate = 0;
              // 回転角度をPOSTメソットで受け取る
              if(isset($_POST['uprotate'])){
              	$uprotate = $_POST['uprotate'];
              }
              
              // 画像ストリームから新規イメージを作成
              $upimgcontent = imagecreatefromstring($_SESSION['upimgcontent']);
              // 画像を回転
              $uprotateimgcontent = imagerotate($upimgcontent, $uprotate, 0);
              
              // バッファリング開始
              ob_start();
              if ($_SESSION['upimage_type'] == 'image/jpeg') {	
                // 画像ストリームを出力
                imagejpeg($uprotateimgcontent, null, 100);
              } elseif ($_SESSION['upimage_type'] == 'image/png') {
                  imagepng($uprotateimgcontent, null, 9);
              } elseif ($_SESSION['upimage_type'] == 'image/gif') {
                  imagegif($uprotateimgcontent, null);
              }
              // バッファ内容を取得してセッション変数に代入
              $_SESSION['upimgcontent'] = ob_get_clean();
              // メモリを開放
              imagedestroy($upimgcontent); 
              imagedestroy($uprotateimgcontent);
              ?>
              <!--// HTML -->
              <!DOCTYPE html>
              <html lang="ja">
              <head>
              <meta charset="utf-8">
              <title>画像データベース:更新画像回転表示</title>
              </head>
              <body style="background:#edf5ff">
              <!--// date関数のデータを使って、サーバーから最新の画像を取得/表示。-->
              <div><img src="uprotateimageshow.php?date=<?php print date("YmdHis"); ?>" alt="upimage" /></div>
              </body>
              </html>
「更新」ページに画像を表示
更新の画像表示と「画像回転」操作による画像表示。

uprotateimageshow.php
              <?php
              /**
               * オリジナル画像表示 
               */
              
              // セッション開始
              session_start();
              
              header('content-type: '.$_SESSION['upimage_type']);
              print $_SESSION['upimgcontent'];
              exit;
              ?>
更新処理
「更新」ページから非同期通信経由でデータを受け取り、更新を実行。

update2.php
          <?php
          /**
           * 更新処理
           */
           
          // セッション開始 
          session_start();
          
          // データベースに接続
          require_once('imageDB.php');
          $pdo = executeQuery();
          
          // id番号をPOSTで受信 
          if(isset($_POST['id'])){	
          	$personid = $_POST['id'];
          }
          // コメントをPOSTで受信
          if(isset($_POST['comment'])){	
          	$comment = htmlspecialchars($_POST['comment'], ENT_QUOTES);
          }
          
          // タイムゾーンを設定
          date_default_timezone_set('Asia/Tokyo');
          // 24時表示
          $updated = date("Y-m-d G:i:s");
          
          $result = '';
          // 更新-UPDATEステートメント
          $sql = 'UPDATE image_table SET imgContent=:imgContent, imgComment=:imgComment, updated_at=:updated_at WHERE id=:id';
          try {
            // エラー処理モード設定
            $pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);
            // トランザクションの開始
            $pdo->beginTransaction();
            $stmt = $pdo->prepare($sql);
            $stmt->bindParam(':id',$personid,PDO::PARAM_INT);
            $stmt->bindParam(':imgContent',$_SESSION['upimgcontent'],PDO::PARAM_STR); // セッション変数から更新
            $stmt->bindParam(':imgComment',$comment,PDO::PARAM_STR);
            $stmt->bindParam(':updated_at',$updated,PDO::PARAM_STR);
            $stmt->execute();
            $pdo->commit();
            print $result = '<span style="color:#0000FF">更新が正常に完了しました。</span>';
          } catch (PDOException $e) {
              $pdo->rollback(); // エラーなら何もしないで戻る
              print '更新エラー'.$e->getMessage();
          }
          $pdo = null;
          ?>
Search
Google


↟ このページの先頭へ