読み込み中...

【10の実例で学ぶ】HTML&PHPで在庫管理システムを構築する方法

HTMLで作る在庫管理システムのイメージ図 HTML
この記事は約23分で読めます。

【サイト内のコードはご自由に個人利用・商用利用いただけます】

この記事では、プログラムの基礎知識を前提に話を進めています。

説明のためのコードや、サンプルコードもありますので、もちろん初心者でも理解できるように表現してあります。

本記事のサンプルコードを活用して機能追加、目的を達成できるように作ってありますので、是非ご活用ください。

※この記事は、一般的にプロフェッショナルの指標とされる『実務経験10,000時間以上』を満たす現役のプログラマチームによって監修されています。

※Japanシーモアは、常に解説内容のわかりやすさや記事の品質に注力しております。不具合、分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

はじめに

在庫管理システムは、商品の在庫状況をリアルタイムで追跡し、適切な補充を行うための重要なツールです。

これにより、ビジネスは顧客のニーズに迅速に対応できるだけでなく、過剰在庫や品切れによる損失を最小限に抑えることができます。

この記事では、HTMLとPHPを使用して、基本的な在庫管理システムを自分で構築する方法を詳しく解説します。

初心者から中級者まで、すべての技術者がこの知識を活用し、現場での問題解決能力を高めることができます。

○在庫管理システムの重要性と基本概念

在庫管理は、ビジネス運営において中核をなす要素です。

適切な在庫管理システムによって、企業は製品の供給と需要のバランスを取り、顧客満足度を向上させることが可能になります。

在庫の過不足は、顧客に対するサービスの質を直接的に左右するため、効果的な在庫管理システムは企業の競争力を保つ上で不可欠です。

基本的な概念として、在庫管理システムは次の3つの主要な機能を持つべきです。

在庫の登録、在庫の照会、在庫の更新および削除。

この機能を実装することで、在庫状態の正確な把握が可能となり、より迅速で効果的な在庫調整が行えるようになります。

○この記事で学べること

この記事を通じて、読者はHTMLとPHPを使った在庫管理システムの設計と実装の基本を学べます。

具体的には、HTMLフォームの作成からPHPによるデータベース操作、在庫の登録・照会・更新・削除機能の実装までのプロセスが含まれます。

また、よくあるエラーへの対処方法や、システムの保守および拡張についても触れ、実際のビジネス環境で直面するであろう課題に対する準備もできるようになります。

さらに、複数の実例を交えて説明することで、理論だけでなく実践的なスキルも身に付けることができます。

それでは、早速、HTMLとPHPの基本をおさらいしていきます(理解のある方は読み飛ばしてOK)。

●HTMLとPHPの基本

HTMLとPHPは、ウェブ開発の基礎であり、これらの技術を駆使することで、動的なウェブサイトやアプリケーションを構築することができます。

HTMLはウェブページの構造を定義するために使用され、PHPはサーバーサイドのスクリプト言語として、データの処理やデータベースとのやり取りを担います。

ここでは、HTMLとPHPの基本的な概念と、これらを使用したプログラミングの初歩を学んでいきましょう。

○HTMLの基礎知識

HTML(HyperText Markup Language)は、ウェブページを作成するためのマークアップ言語です。

HTMLは、要素とタグを使用してウェブページの構造を定義します。

基本的なHTMLドキュメントは、<!DOCTYPE html>, <html>, <head>, <title>, および <body>といったタグで構成されます。

ここでは、簡単なHTMLの例を見てみましょう。

<!DOCTYPE html>
<html>
<head>
    <title>在庫管理システム</title>
</head>
<body>
    <h1>在庫管理のダッシュボード</h1>
    <p>在庫状況を確認し、管理しましょう。</p>
</body>
</html>

このコードは、ウェブブラウザで「在庫管理のダッシュボード」という見出しと、その下に説明文が表示されるシンプルなウェブページを作成します。

HTMLはこのように、ウェブページの「骨格」を作り上げるために用います。

○PHPの基本的な使い方

PHP(Hypertext Preprocessor)は、HTMLコード内に直接埋め込むことができるサーバーサイドスクリプト言語です。

PHPを利用することで、データベース情報の取得、フォームデータの処理、ユーザー認証などの動的な機能をウェブページに追加することが可能です。

基本的なPHPスクリプトの例を見てみましょう。

<!DOCTYPE html>
<html>
<head>
    <title>在庫管理システム</title>
</head>
<body>
    <?php
        echo "<h1>在庫管理システムへようこそ!</h1>";
        echo "<p>現在の在庫状況を確認し、更新しましょう。</p>";
    ?>
</body>
</html>

このPHPスクリプトは、HTMLマークアップ内に埋め込まれており、ブラウザがページをロードする際にサーバー側で処理されます。

echo 文は、指定された文字列をウェブページに出力するために使用されます。

この例では、在庫管理システムへの歓迎メッセージと指示が表示されます。

●在庫管理システムの構築

在庫管理システムを構築するためには、HTMLとPHPを組み合わせて使う技術が必須です。

ここでは、データベースの設計から始まり、HTMLフォームの作成、そしてPHPを使用したデータベースへの接続と操作まで、ステップバイステップで解説します。

これにより、読者は自分自身で基本的な在庫管理システムを立ち上げることができるようになります。

○データベースの設計

在庫管理システムの核となるのは、製品情報、在庫数、取引記録などを保存するデータベースです。

ここでは、MySQLを使用してデータベースを設計します。

まず、下記のようにデータベースとテーブルを作成するSQLコマンドを表しています。

CREATE DATABASE InventorySystem;

USE InventorySystem;

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(255) NOT NULL,
    quantity INT DEFAULT 0,
    price DECIMAL(10, 2) NOT NULL
);

CREATE TABLE transactions (
    transaction_id INT AUTO_INCREMENT PRIMARY KEY,
    product_id INT,
    quantity_changed INT,
    transaction_date TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (product_id) REFERENCES products(product_id)
);

このスキーマは、製品情報を保存するproductsテーブルと、在庫変動を記録するtransactionsテーブルから構成されています。

製品テーブルには製品ID、製品名、数量、価格が含まれ、トランザクションテーブルでは各取引記録が保存されます。

○HTMLフォームの作成

在庫管理システムでは、製品の追加や在庫の更新などを行うためのインターフェースが必要です。

ここでは、HTMLを使用して製品登録用のフォームを作成しています。

<!DOCTYPE html>
<html>
<head>
    <title>在庫管理システム - 製品登録</title>
</head>
<body>
    <h1>製品登録フォーム</h1>
    <form action="add_product.php" method="post">
        <label for="name">製品名:</label>
        <input type="text" id="name" name="product_name" required><br><br>
        <label for="quantity">数量:</label>
        <input type="number" id="quantity" name="quantity" required><br><br>
        <label for="price">価格:</label>
        <input type="text" id="price" name="price" required><br><br>
        <input type="submit" value="登録">
    </form>
</body>
</html>

このフォームは、製品名、数量、価格の入力欄を提供し、データはadd_product.phpへと送信されます。

これにより、サーバー側でのデータ処理が行われ、新しい製品がデータベースに追加されます。

○PHPでのデータベース接続と操作

最後に、PHPを使用してデータベースに接続し、HTMLフォームから送信されたデータを操作します。

下記のPHPスクリプトは、製品登録のためのものです。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "InventorySystem";

// データベース接続
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続確認
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
}

$product_name = $_POST['product_name'];
$quantity = $_POST['quantity'];
$price = $_POST['price'];

// SQLを実行して製品を登録
$sql = "INSERT INTO products (product_name, quantity, price) VALUES ('$product_name', $quantity, $price)";
if ($conn->query($sql) === TRUE) {
    echo "新しい製品が登録されました。";
} else {
    echo "エラー: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

このスクリプトは、データベースに新しい製品を登録するためのもので、エラーハンドリングを含めています。

これにより、在庫管理システムの基本的な機能が完成します。

次に、実際の在庫管理機能をさらに詳しく見ていきます。

●実例で学ぶ在庫管理システム

在庫管理システムの構築と維持には、実際のケーススタディを理解することが不可欠です。

ここでは、具体的なサンプルコードと共に、HTMLとPHPを用いた在庫管理システムの各機能の実装方法を詳細に解説します。

これにより、理論だけでなく、実際のアプリケーション開発における技術の応用が学べます。

○サンプルコード1:商品登録フォーム

商品登録機能は在庫管理システムの基本です。

下記のHTMLとPHPのコードは、商品情報をデータベースに登録するフォームを表しています。

<!DOCTYPE html>
<html>
<head>
    <title>商品登録</title>
</head>
<body>
    <h1>商品登録フォーム</h1>
    <form action="product_register.php" method="post">
        <input type="text" name="product_name" placeholder="商品名" required>
        <input type="number" name="quantity" placeholder="数量" required>
        <input type="text" name="price" placeholder="価格" required>
        <button type="submit">登録</button>
    </form>
</body>
</html>
<?php
// データベース接続情報
$host = 'localhost';
$dbname = 'inventory_db';
$username = 'root';
$password = '';

// データベース接続
$conn = new PDO("mysql:host=$host;dbname=$dbname", $username, $password);

// フォームデータ受け取り
$product_name = $_POST['product_name'];
$quantity = $_POST['quantity'];
$price = $_POST['price'];

// SQL文でデータ登録
$sql = "INSERT INTO products (product_name, quantity, price) VALUES (?, ?, ?)";
$stmt = $conn->prepare($sql);
$stmt->execute([$product_name, $quantity, $price]);

echo "商品が登録されました。";
?>

実行結果としては、上記のフォームに商品情報を入力し、送信ボタンをクリックすると、データベースに新しい商品が登録され、「商品が登録されました。」というメッセージが表示されます。

○サンプルコード2:在庫照会機能

在庫照会は、在庫管理の効率を大きく向上させる機能です。

下記のPHPスクリプトは、登録された商品の一覧を表示しています。

<?php
// データベース接続
$conn = new PDO("mysql:host=localhost;dbname=inventory_db", 'root', '');

// 商品一覧取得
$sql = "SELECT product_name, quantity, price FROM products";
$stmt = $conn->prepare($sql);
$stmt->execute();

// 結果の出力
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
    echo "商品名: " . $row['product_name'] . ", 数量: " . $row['quantity'] . ", 価格: " . $row['price'] . "<br>";
}
?>

このコードは、データベースから全商品の情報を取得し、それをウェブページ上に表示します。

これにより、現在の在庫状況をリアルタイムで確認することが可能になります。

○サンプルコード3:在庫更新機能

在庫更新は、在庫管理システムにおいて非常に重要な機能です。

下記のコードは、特定の商品の在庫数を更新するフォームとその処理を表しています。

<!DOCTYPE html>
<html>
<head>
    <title>在庫更新</title>
</head>
<body>
    <h1>在庫更新フォーム</h1>
    <form action="update_inventory.php" method="post">
        <input type="text" name="product_id" placeholder="商品ID" required>
        <input type="number" name="new_quantity" placeholder="新しい数量" required>
        <button type="submit">更新</button>
    </form>
</body>
</html>
<?php
// データベース接続
$conn = new PDO("mysql:host=localhost;dbname=inventory_db", 'root', '');

// フォームデータの受け取り
$product_id = $_POST['product_id'];
$new_quantity = $_POST['new_quantity'];

// 在庫更新
$sql = "UPDATE products SET quantity=? WHERE product_id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$new_quantity, $product_id]);

echo "在庫が更新されました。";
?>

このスクリプトを実行すると、指定した商品IDの在庫数が新しい数量に更新され、「在庫が更新されました。」というメッセージが表示されます。

○サンプルコード4:在庫削除機能

在庫管理システムの中でも、不要になった商品をデータベースから削除する機能は重要です。

下記のPHPコードは、商品を削除するためのものです。

<?php
// データベース接続
$conn = new PDO("mysql:host=localhost;dbname=inventory_db", 'root', '');

// 削除する商品IDの受け取り
$product_id = $_POST['product_id'];

// 商品削除
$sql = "DELETE FROM products WHERE product_id=?";
$stmt = $conn->prepare($sql);
$stmt->execute([$product_id]);

echo "商品が削除されました。";
?>

このコードを実行すると、指定された商品IDのデータがデータベースから削除され、「商品が削除されました。」と表示されます。

これにより、在庫データを常に最新の状態に保つことが可能です。

●よくあるエラーと対処法

ウェブ開発におけるエラーは避けられないものですが、それらを理解し対処することで、より堅牢な在庫管理システムを構築することが可能です。

ここでは、HTMLとPHPを使用した在庫管理システムでよく遭遇するエラーとその解決策について解説します。

○データベース接続エラーの解決

データベース接続エラーは、多くのウェブアプリケーションで最も一般的な問題の一つです。

ここでは、PHPを使用してMySQLデータベースに接続する際の一般的なエラーと、それを診断・解決する方法を見ていきましょう。

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "inventory_system";

// データベース接続の試み
$conn = new mysqli($servername, $username, $password, $dbname);

// 接続エラーの確認
if ($conn->connect_error) {
    die("接続失敗: " . $conn->connect_error);
} else {
    echo "データベースに接続成功!";
}
?>

実行結果としては、エラーが存在する場合はその内容が表示され、問題がなければ「データベースに接続成功!」と表示されます。

データベース接続エラーは、接続情報の誤りやサーバーの設定問題が原因であることが多いため、設定を丁寧に確認することが重要です。

○入力データのバリデーションエラーとその修正

フォームから送信されたデータのバリデーションは、セキュリティ上非常に重要です。

下記のPHPスクリプトは、フォーム入力のバリデーションを行い、問題がある場合はエラーメッセージを表示しています。

<?php
$product_name = $_POST['product_name'];
$quantity = $_POST['quantity'];
$price = $_POST['price'];

$errors = [];

// 製品名のバリデーション
if (empty($product_name)) {
    $errors[] = "製品名は必須です。";
}

// 数量のバリデーション
if (empty($quantity) || !is_numeric($quantity) || $quantity < 1) {
    $errors[] = "有効な数量を入力してください。";
}

// 価格のバリデーション
if (empty($price) || !is_numeric($price) || $price < 0) {
    $errors[] = "有効な価格を入力してください。";
}

// エラーの表示
if (!empty($errors)) {
    foreach ($errors as $error) {
        echo "<p>" . $error . "</p>";
    }
} else {
    echo "入力データは正常です。";
}
?>

このスクリプトでは、製品名が空でないこと、数量と価格が数値で正しい範囲内にあることをチェックしています。

エラーがある場合はそれぞれの問題点を指摘し、問題がなければ「入力データは正常です。」と表示します。

適切なデータバリデーションを行うことで、データの整合性を保ち、システムの信頼性を高めることができます。

●HTMLとPHPを使った在庫管理の応用例

在庫管理システムを基本レベルから一歩進めるために、HTMLとPHPを駆使したいくつかの応用例をご紹介します。

これらの応用例は、システムの効率性を高めるだけでなく、ユーザーエクスペリエンスを向上させる方法を表しています。

ここでは、リアルタイム在庫管理から複数ユーザーの対応、さらにはレポート生成機能まで、さまざまなケースに応じた実装方法を詳しく解説します。

○サンプルコード5:リアルタイム在庫管理

リアルタイムでの在庫状況の更新と表示は、在庫管理システムの核心的な機能です。

ここでは、AjaxとPHPを組み合わせたリアルタイム在庫管理のサンプルコードを見ていきましょう。

<!DOCTYPE html>
<html>
<head>
    <title>リアルタイム在庫管理</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
    $(document).ready(function(){
        function fetchData() {
            $.ajax({
                url: 'fetch_inventory.php',
                type: 'GET',
                success: function(data) {
                    $('#inventory_display').html(data);
                },
                error: function(error) {
                    console.error("エラーが発生しました:", error);
                }
            });
        }
        fetchData();
        setInterval(fetchData, 10000); // 10秒ごとにデータ更新
    });
    </script>
</head>
<body>
    <h1>リアルタイム在庫管理ダッシュボード</h1>
    <div id="inventory_display"></div>
</body>
</html>

このHTMLとJavaScriptのコードは、サーバーから定期的に在庫データを取得し、ウェブページに表示します。

これにより、在庫情報が常に最新の状態に保たれます。

○サンプルコード6:複数ユーザー対応システム

複数のユーザーが同時に在庫管理システムを使用する場合、ユーザーごとのアクセス管理が必要です。

下記のPHPスクリプトは、ユーザー認証とセッション管理を行う方法を表しています。

<?php
session_start();

// ユーザー認証の確認
if (!isset($_SESSION['user_id'])) {
    header('Location: login.php');
    exit;
}

echo "ようこそ、" . $_SESSION['username'] . "さん!";
?>

このコードは、ログインしていないユーザーをログインページにリダイレクトし、ログイン済みのユーザーに対してはカスタマイズされたメッセージを表示します。

○サンプルコード7:在庫警告システム

在庫が特定の閾値以下になった時に警告を発する機能は、過剰在庫や品切れを防ぐのに役立ちます。

<?php
$min_quantity = 5;
$query = "SELECT product_name, quantity FROM products WHERE quantity <= ?";
$stmt = $conn->prepare($query);
$stmt->execute([$min_quantity]);

while ($row = $stmt->fetch()) {
    echo $row['product_name'] . "の在庫が" . $row['quantity'] . "個になりました。注意が必要です。<br>";
}
?>

このスクリプトは、指定された最小数量以下の商品をデータベースから検索し、警告メッセージを表示します。

○サンプルコード8:レポート生成機能

在庫管理システムでは、定期的なレポート生成が重要です。

下記のPHPコードは、在庫状況のレポートをPDF形式で生成しています。

<?php
require_once('fpdf/fpdf.php');

$pdf = new FPDF();
$pdf->AddPage();
$pdf->SetFont('Arial', 'B', 16);

$pdf->Cell(40, 10, '在庫レポート');
$pdf->Ln(20);

$query = "SELECT product_name, quantity FROM products";
$result = $conn->query($query);

while ($row = $result->fetch_assoc()) {
    $pdf->Cell(40, 10, $row['product_name'] . ": " . $row['quantity']);
    $pdf->Ln(10);
}

$pdf->Output();
?>

このスクリプトは、データベースから商品名と数量の情報を取得し、PDFドキュメントとして整形して出力します。

この機能により、在庫状況を効率的に碼り取ることが可能になります。

まとめ

この記事を最後までお読みいただき、誠にありがとうございます。

HTMLとPHPを活用した在庫管理システムの構築方法を、基本的なものから応用的なテクニックまで、具体的なコード例と共に解説しました。

この情報が皆さんのプロジェクトや学習に役立つことを心から願っています。

さらなる疑問点や詳細な情報が必要な場合は、遠慮なくお問い合わせください。

皆さんの技術的な挑戦が成功することを応援しています。