سیستم مدیریت موجودی در PHP و CODEIGNITER
سیستم مدیریت موجودی ابزاری است که به شرکتها کمک میکند تا موجودی محصولات خود را بهطور مؤثر کنترل کنند. این سیستم میتواند شامل قابلیتهایی نظیر افزودن، ویرایش، حذف و مشاهده موجودی کالاها باشد. در اینجا، ما به بررسی یک سیستم مدیریت موجودی ساده با استفاده از PHP و فریمورک CodeIgniter خواهیم پرداخت.
راهاندازی CodeIgniter
در ابتدا، باید CodeIgniter را بر روی سرور محلی یا میزبانی وب خود نصب کنید. برای این کار، مراحل زیر را دنبال کنید:
- دانلود CodeIgniter: به وبسایت رسمی CodeIgniter بروید و آخرین نسخه را دانلود کنید.
- ایجاد پایگاه داده: یک پایگاه داده جدید در MySQL ایجاد کنید. برای مثال، نام آن را `inventory_db` قرار دهید.
- تنظیمات پایگاه داده: فایل `application/config/database.php` را ویرایش کنید و اطلاعات پایگاه داده خود را در آن وارد کنید:
```php
$db['default'] = array(
'dsn' => '',
'hostname' => 'localhost',
'username' => 'your_username',
'password' => 'your_password',
'database' => 'inventory_db',
'dbdriver' => 'mysqli',
'dbprefix' => '',
'pconnect' => FALSE,
'db_debug' => (ENVIRONMENT !== 'production'),
'cache_on' => FALSE,
'cachedir' => '',
'char_set' => 'utf8',
'dbcollat' => 'utf8_general_ci',
'swap_pre' => '',
'encrypt' => FALSE,
'compress' => FALSE,
'stricton' => FALSE,
'failover' => array(),
'save_queries' => TRUE
);
```
طراحی پایگاه داده
سپس، یک جدول برای ذخیره اطلاعات موجودی کالاها ایجاد کنید. میتوانید از کد SQL زیر استفاده کنید:
```sql
CREATE TABLE `products` (
`id` INT(11) NOT NULL AUTO_INCREMENT,
`name` VARCHAR(100) NOT NULL,
`quantity` INT(11) NOT NULL,
`price` DECIMAL(10,2) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
```
ایجاد کنترلر و مدل
برای مدیریت دادهها، باید یک کنترلر و مدل ایجاد کنیم. در ابتدا، یک مدل به نام `Product_model.php` در پوشه `application/models` ایجاد کنید:
```php
class Product_model extends CI_Model {
public function __construct() {
parent::__construct();
}
public function get_all_products() {
return $this->db->get('products')->result();
}
public function add_product($data) {
return $this->db->insert('products', $data);
}
public function update_product($id, $data) {
$this->db->where('id', $id);
return $this->db->update('products', $data);
}
public function delete_product($id) {
return $this->db->delete('products', array('id' => $id));
}
}
```
سپس یک کنترلر به نام `Inventory.php` در پوشه `application/controllers` ایجاد کنید:
```php
class Inventory extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Product_model');
}
public function index() {
$data['products'] = $this->Product_model->get_all_products();
$this->load->view('inventory/index', $data);
}
public function add() {
if ($this->input->post()) {
$data = array(
'name' => $this->input->post('name'),
'quantity' => $this->input->post('quantity'),
'price' => $this->input->post('price')
);
$this->Product_model->add_product($data);
redirect('inventory');
}
$this->load->view('inventory/add');
}
// توابع ویرایش و حذف نیز باید به همین شکل اضافه شوند
}
```
ایجاد ویوها
در نهایت، باید ویوها را برای نمایش موجودی و فرمهای افزودن و ویرایش ایجاد کنید. به عنوان مثال، یک ویو به نام `index.php` در پوشه `application/views/inventory` ایجاد کنید:
```php
<h1>مدیریت موجودی</h1>
<a href="<?php echo site_url('inventory/add'); ?>">افزودن محصول جدید</a>
<table>
<thead>
<tr>
<th>نام محصول</th>
<th>مقدار</th>
<th>قیمت</th>
<th>عملیات</th>
</tr>
</thead>
<tbody>
<?php foreach ($products as $product): ?>
<tr>
<td><?php echo $product->name; ?></td>
<td><?php echo $product->quantity; ?></td>
<td><?php echo $product->price; ?></td>
<td>
<a href="<?php echo site_url('inventory/edit/' . $product->id); ?>">ویرایش</a>
<a href="<?php echo site_url('inventory/delete/' . $product->id); ?>">حذف</a>
</td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
```
نتیجهگیری
این سیستم مدیریت موجودی، یک مثال ساده از نحوه استفاده از PHP و CodeIgniter برای مدیریت موجودی کالاهاست. با افزودن قابلیتهای بیشتر، مانند جستجو، فیلتر و گزارشگیری، میتوانید این سیستم را بهبود بخشید و آن را متناسب با نیازهای خاص سازمان خود گسترش دهید.
سیستم مدیریت موجودی در PHP و CodeIgniter
مقدمه
در دنیای تجارت و کسبوکارهای امروزی، مدیریت موجودی نقش حیاتی دارد. این سیستمها کمک میکنند تا موجودی کالاها بهدرستی کنترل، پیگیری و بهروزرسانی شوند. در اینجا، قصد داریم یک سیستم مدیریت موجودی ساده با استفاده از PHP و فریمورک محبوب CodeIgniter را بررسی کنیم. هدف، ساخت یک نمونه کامل و قابل توسعه است.
نصب و راهاندازی
ابتدا، باید فریمورک CodeIgniter را دانلود و نصب کنیم. پس از نصب، فایلهای پروژه در مسیر موردنظر قرار میگیرند. سپس، پایگاه داده (MySQL) را آماده میکنیم؛ جداول مربوط به کالاها، تراکنشها و کاربران را ایجاد میکنیم.
تعریف جداول پایگاه داده
برای شروع، جدول کالاها را تعریف میکنیم:
```sql
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`quantity` int(11) NOT NULL,
`price` decimal(10,2) NOT NULL,
PRIMARY KEY (`id`)
);
```
ایجاد مدل
در CodeIgniter، از مدلها برای ارتباط با پایگاه داده استفاده میشود. یک مدل به نام `Product_model.php` ساخته میکنیم:
```php
<?php
class Product_model extends CI_Model {
public function get_products() {
return $this->db->get('products')->result();
}
public function insert_product($data) {
return $this->db->insert('products', $data);
}
public function update_product($id, $data) {
$this->db->where('id', $id);
return $this->db->update('products', $data);
}
public function delete_product($id) {
$this->db->where('id', $id);
return $this->db->delete('products');
}
}
?>
```
کنترلر
در کنترلر، عملیات مختلف مانند افزودن، ویرایش، حذف و نمایش کالاها انجام میشود. نمونه کنترلر `Product.php`:
```php
<?php
class Product extends CI_Controller {
public function __construct() {
parent::__construct();
$this->load->model('Product_model');
}
public function index() {
$data['products'] = $this->Product_model->get_products();
$this->load->view('products/index', $data);
}
public function add() {
if ($this->input->post()) {
$data = [
'name' => $this->input->post('name'),
'quantity' => $this->input->post('quantity'),
'price' => $this->input->post('price')
];
$this->Product_model->insert_product($data);
redirect('product');
}
$this->load->view('products/add');
}
public function edit($id) {
if ($this->input->post()) {
$data = [
'name' => $this->input->post('name'),
'quantity' => $this->input->post('quantity'),
'price' => $this->input->post('price')
];
$this->Product_model->update_product($id, $data);
redirect('product');
}
$data['product'] = $this->Product_model->get_product($id);
$this->load->view('products/edit', $data);
}
public function delete($id) {
$this->Product_model->delete_product($id);
redirect('product');
}
}
?>
```
ویوها
در بخش ویو، فرمها و جداول نمایش کالاها قرار میگیرند. نمونه صفحه لیست کالاها:
```php
<!-- views/products/index.php -->
<h2>لیست کالاها</h2>
<a href="<?php echo site_url('product/add'); ?>">افزودن کالا</a>
<table border="1" cellpadding="10">
<tr>
<th>شناسه</th>
<th>نام کالا</th>
<th>تعداد</th>
<th>قیمت</th>
<th>عملیات</th>
</tr>
<?php foreach($products as $product): ?>
<tr>
<td><?php echo $product->id; ?></td>
<td><?php echo $product->name; ?></td>
<td><?php echo $product->quantity; ?></td>
<td><?php echo $product->price; ?></td>
<td>
<a href="<?php echo site_url('product/edit/'.$product->id); ?>">ویرایش</a>
<a href="<?php echo site_url('product/delete/'.$product->id); ?>">حذف</a>
</td>
</tr>
<?php endforeach; ?>
</table>
```
اضافه کردن موجودی
برای مدیریت موجودی بهتر است عملیات افزودن یا کاهش موجودی را به شکل جداگانه پیاده کنیم. مثلا، صفحهای برای افزودن موجودی جدید:
```php
<!-- views/products/add_stock.php -->
<h2>افزودن موجودی</h2>
<form method="post">
<label>کد محصول:</label>
<input type="number" name="product_id" required>
<label>مقدار افزودن:</label>
<input type="number" name="quantity" required>
<button type="submit">اضافه کردن</button>
</form>
```
در کنترلر، عملیات بهروزرسانی موجودی:
```php
public function add_stock() {
if ($this->input->post()) {
$product_id = $this->input->post('product_id');
$quantity = $this->input->post('quantity');
$product = $this->Product_model->get_product($product_id);
if ($product) {
$new_quantity = $product->quantity + $quantity;
$this->Product_model->update_product($product_id, ['quantity' => $new_quantity]);
}
redirect('product');
}
$this->load->view('products/add_stock');
}
```
نتیجهگیری
در این پروژه، با ساختار MVP (مدل، ویو، کنترلر) کار کردیم. طراحی انعطافپذیر و قابل توسعه است؛ مثلا، میتوان سیستم ورود و خروج کالا، گزارشگیری و اعلانها را افزود.
در کل، پیادهسازی چنین سیستمی در PHP و CodeIgniter، راهکاری سریع و قدرتمند است که میتواند بهراحتی نیازهای کسبوکارهای کوچک و متوسط را برآورده کند.