ketyiaの作ってみた

このサイトでは作ってみたことを記事にまとめていきます!

PHPでCSVを使って商品管理システムを作成しよう②

こんにちは!
CSVでデモの商品管理アプリを作成してみようということで、続きを行っていきます!

この記事では、CSVのデータ情報を追加する(商品追加)の機能についてまとめていきます。

前回からの続きからはじめていきます!

テンプレートエンジンで新規追加ボタン追加


一覧表示画面に新規追加のボタンを追加しましょう。
前回書いたテンプレートエンジンで下記のコードを追加します!
</table>の下あたりがいいかと思います。

ーーーーーーーーーーーーーーーーー
【index.html.twig】
<input type="button" onclick="location.href='add.php'"value="新規登録">
ーーーーーーーーーーーーーーーーー

「このボタンが押されたらadd.phpに遷移します」ということですね!

テンプレートエンジンで新規登録ページを作成


ではPHPの処理を書いていきたいところなんですが、先に新規登録ページのテンプレートエンジンを作っておきます!
下記のコードです。

ーーーーーーーーーーーーーーーーー
【add.html.twig】

<!DOCTYPE html>
<html lang="ja">
  <head>
    <title>{{ title }}</title>
  </head>
  <body>
      <h1>{{ message }}</h1>

      <p>{{error}}</p>

      <form action="add_comp.php">

      <label>商品ID</label>
      <input type="text" name="id" ><br>
      <label>商品名</label>
      <input type="text" name="name" ><br>
      <label>金額</label>
      <input type="text" name="price" ><br>
      <label>在庫数</label>       
      <input type="text" name="stock" ><br><br>
      <input type="submit" value="登録">
      </form>
      <input type="button" onclick="location.href='index.php'"value="戻る">

  </body>
</html>

ーーーーーーーーーーーーーーーーー

フォーム形式のテンプレートエンジンです!
これでOKですね!
では、追加する機能を作成していきます!

追加する機能を作成

ここでは、2つのPHPファイルで処理をしていきます!
①テンプレートエンジンを表示させることとセッションを開始させる
CSVにデータを書き込む
という形にしていきます。

では、さっそく、①のPHPを作成していきます。

ーーーーーーーーーーーーーーーーー

【add.php

<?php
session_start();

$error_message = '';

//確認画面からエラーが帰った時の処理
if(!empty($_SESSION['error_message'])){
    $error_message = $_SESSION['error_message'];
    unset($_SESSION['error_message']);
}

// テンプレートエンジンクラス
require_once('class/templete.php');

$templete_file = new templete('add.html.twig');

// htmlに渡すデータ
$data = array(
    'title' => 'csv商品管理',
    'message' => '商品追加',
    'error' => $error_message
);

$templete_file->dataset($data);

$templete_file->display();

ーーーーーーーーーーーーーーーーー

するとこんな画面ができるはずです!


次に②のPHPを作成する前に、CSVを扱うクラスに書き込みの処理を追記します!

ーーーーーーーーーーーーーーーーー
【class/csv.php

public function add($id,$name,$price,$stock){
    $text = "{$id},"."{$name},"."{$price},"."{$stock}\n";

    fputs($this->handle,$text);

    fclose($this->handle);
}

ーーーーーーーーーーーーーーーーー

これでOKです。はい!
では、②のPHPを作成します。

ーーーーーーーーーーーーーーーーー
【add_comp.php

<?php
session_start();

$id = $_GET['id'];
$name = $_GET['name'];
$price = $_GET['price'];
$stock = $_GET['stock'];


//入力エラー確認
if ( empty( $id ) || empty( $name ) || empty( $price ) || empty( $stock )) {
    $_SESSION['error_message'] = '入力されていない項目があります';
    header('Location:add.php');
    exit;
}else{
    unset( $_GET['id'] );
    unset( $_GET['name'] );
    unset( $_GET['price'] );
    unset( $_GET['stock'] );
   
    // CSVを取得
    // ファイルを読み込む
    require_once('class/csv.php');
    // インスタンス
    $csvread_obj = new csv("csv/item.csv","a+");

    $csvread_obj->add($id,$name,$price,$stock);
    // 表示画面にリダイレクト
    header('Location:index.php');
    exit;
}

?>
ーーーーーーーーーーーーーーーーー


これでCSVのデータ情報を追加する機能を作成できました。
最後に動作確認していきます。

動作確認

一通りの動作は下記の画像のように問題なくできました!


これでCSVのデータを追加させる機能は完成です。
次の記事からは、データを編集する機能をまとめていきます!


前の記事

begginerkun.hatenablog.com

次の記事

begginerkun.hatenablog.com