「CRUD」のサンプル(レガシー)

#参照
PHPとMySQLのツボとコツが絶対にわかる本

#DB
http://bit.ly/1iPFFeV

#サンプル

```php:db.php

<?php
class DB{
  private  $USER = "root";
  private  $PW   = "******";
  private  $dns  = "mysql:dbname=salesmanagement;host=localhost;charset=utf8";

  private function Connectdb(){
    try{
      $pdo = new PDO($this->dns,$this->USER,$this->PW);
      return $pdo;
    }catch(Exception $e){
      return false;
    }
  }

  public  function executeSQL($sql,$array){
    try{
      if(!$pdo = $this->Connectdb())return false;
      $stmt = $pdo->prepare($sql);
      $stmt->execute($array);
      return $stmt;
    }catch(Exception $e){
      return false;
    }
  }
}
?>
```

```php:dbcrud.php

<?php
require_once('db.php');
class dbcrud extends DB{
  //goodsテーブルのCRUD担当
  public function SelectGoodsAll(){
    $sql = "SELECT * FROM goods";
    $res = parent::executeSQL($sql, null);
    $data = "<table class='recordlist' id='goodsTable'>";
    $data .= "<tr><th>カラム1</th><th>カラム2</th><th>カラム3</th><th></th><th></th></tr>\n";
    foreach($rows = $res->fetchAll(PDO::FETCH_NUM) as $row){
      $data .= "<tr>";
      for($i=0;$i<count($row);$i++){
        $data .= "<td>{$row[$i]}</td>";
      }
      //更新ボタンのコード
      $data .= <<<eof
      <td><form method='post' action=''>
      <input type='hidden' name='id' value='{$row[0]}'>
      <input type='submit' name='update' value='更新'>
      </form></td>
eof;
      //削除ボタンのコード
      $data .= <<<eof
      <td><form method='post' action=''>
      <input type='hidden' name='id' id='Deleteid' value='{$row[0]}'>
      <input type='submit' name='delete' id='delete' value='削除'
       onClick='return CheckDelete()'>
      </form></td>
eof;
      $data .= "</tr>\n";
    }
    $data .= "</table>\n";
    return $data;
  }

  public function InsertGoods(){
    $sql = "INSERT INTO goods VALUES(?,?,?)";
    $array = array($_POST['GoodsID'],$_POST['GoodsName'],$_POST['Price']);
    parent::executeSQL($sql, $array);
  }

  public function UpdateGoods(){
    $sql = "UPDATE goods SET GoodsName=?, Price=? WHERE GoodsID=?";
    //array関数の引数の順番に注意する
    $array = array($_POST['GoodsName'],$_POST['Price'],$_POST['GoodsID']);
    parent::executeSQL($sql, $array);
  }

  public function GoodsNameForUpdate($GoodsID){
    return $this->FieldValueForUpdate($GoodsID, "GoodsName");
  }

  public function PriceForUpdate($GoodsID){
    return $this->FieldValueForUpdate($GoodsID, "Price");
  }

  private function FieldValueForUpdate($GoodsID, $field){
    //private関数　上の2つの関数で使用している
    $sql = "SELECT {$field} FROM goods WHERE GoodsID=?";
    $array = array($GoodsID);
    $res = parent::executeSQL($sql, $array);
    $rows = $res->fetch(PDO::FETCH_NUM);
    return $rows[0];
  }
  public function DeleteGoods($GoodsID){
    $sql = "DELETE FROM goods WHERE GoodsID=?";
    $array = array($GoodsID);
    parent::executeSQL($sql, $array);
  }
}
?>
```

```php:index.php
<?php
require_once('dbcrud.php');
//変数の初期値入力

$dbGoodsId = '更新のIDが表示されます';
$dbGoodsName = '更新の値が表示されます';
$Price = '更新の値が表示されます';

$dbGoods = new dbcrud();
//更新処理
if(isset($_POST['submitUpdate'])){
  $dbGoods->UpdateGoods();
}
//更新用フォーム要素の表示
if(isset($_POST['update'])){
  //更新対象の値を取得
  $dbGoodsId   = $_POST['id'];
  $dbGoodsName = $dbGoods->GoodsNameForUpdate($_POST['id']);
  $Price     = $dbGoods->PriceForUpdate($_POST['id']);
}
//削除処理
if(isset($_POST['delete'])){
  $dbGoods->DeleteGoods($_POST['id']);
}
//新規登録処理
if(isset($_POST['submitEntry'])){
  $dbGoods->InsertGoods();
}
//テーブルデータの一覧表示
$data = $dbGoods->SelectGoodsAll();
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>title</title>
<script type="text/javascript">
function CheckDelete(){
    return confirm("削除してもよろしいですか？");
}
</script>
</head>
<body>
<h1>CRUD</h1>
<h3>新規登録</h3>
<form action="" method="post">
<label>カラム1<input type='text' name='GoodsID' size="30" required></label>
<label>カラム2<input type='text' name='GoodsName' size="30" required></label>
<label>カラム3<input type='text' name='Price' size="30" required></label>
<input type='submit' name='submitEntry' value=' 　新規登録　 '>
</form>

<div>
<?php echo $data;?>
</div>

<h2>update</h2>

<form action="" method="post">
<p>GoodsID: <?php echo $dbGoodsId;?></p>
<input type="hidden" name="GoodsID" value="<?php echo $dbGoodsId;?>" />
<label>カラム2:<input type='text' name='GoodsName'
 size="30" value="<?php echo $dbGoodsName;?>" required></label>
<label>カラム3:<input type='text' name='Price'
 size="30" value="<?php echo $Price;?>" required></label>
<input type='submit' name='submitUpdate' value=' 　更新　 '>
</form>

</body>
</html>
```