PHP: создание базы данных для интернет-магазина

PHP: создание базы данных для интернет-магазина Примеры кода на PHP

PHP в сочетании с MySQL предоставляет мощный инструментарий для создания баз данных интернет-магазинов. Давайте рассмотрим пошаговый процесс разработки базы данных для типичного онлайн-магазина.

Проектирование структуры базы данных

Перед началом кодирования важно спроектировать структуру базы данных. Для базового интернет-магазина нам понадобятся следующие таблицы:

  • products (товары)
  • categories (категории)
  • users (пользователи)
  • orders (заказы)
  • order_items (товары в заказе)

Создание соединения с базой данных

Для начала установим соединение с MySQL:


<?php
$servername = "localhost";
$username = "your_username";
$password = "your_password";
$dbname = "your_database";

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

Создание таблиц

Теперь создадим необходимые таблицы:


<?php
// Таблица товаров
$sql = "CREATE TABLE products (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100) NOT NULL,
description TEXT,
price DECIMAL(10,2) NOT NULL,
category_id INT(6) UNSIGNED,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)";

if ($conn->query($sql) === TRUE) {
    echo "Table products created successfully";
} else {
    echo "Error creating table: " . $conn->error;
}

// Таблица категорий
$sql = "CREATE TABLE categories (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50) NOT NULL,
parent_id INT(6) UNSIGNED
)";

// Аналогично создаем остальные таблицы
?>

Добавление товаров

Функция для добавления нового товара:


<?php
function addProduct($name, $description, $price, $category_id) {
    global $conn;
    $sql = "INSERT INTO products (name, description, price, category_id) 
            VALUES (?, ?, ?, ?)";
    $stmt = $conn->prepare($sql);
    $stmt->bind_param("ssdi", $name, $description, $price, $category_id);
    
    if ($stmt->execute()) {
        return "New product added successfully";
    } else {
        return "Error: " . $sql . "<br>" . $conn->error;
    }
}

// Пример использования
echo addProduct("Смартфон X", "Новейшая модель", 999.99, 1);
?>

Получение списка товаров

Функция для получения списка товаров:


<?php
function getProducts($category_id = null) {
    global $conn;
    $sql = "SELECT * FROM products";
    if ($category_id) {
        $sql .= " WHERE category_id = ?";
    }
    $stmt = $conn->prepare($sql);
    
    if ($category_id) {
        $stmt->bind_param("i", $category_id);
    }
    
    $stmt->execute();
    $result = $stmt->get_result();
    
    $products = array();
    while ($row = $result->fetch_assoc()) {
        $products[] = $row;
    }
    
    return $products;
}

// Пример использования
$allProducts = getProducts();
$categoryProducts = getProducts(1);
?>

Создание заказа

Функция для создания нового заказа:


<?php
function createOrder($user_id, $items) {
    global $conn;
    
    // Начинаем транзакцию
    $conn->begin_transaction();
    
    try {
        // Создаем заказ
        $sql = "INSERT INTO orders (user_id, status) VALUES (?, 'pending')";
        $stmt = $conn->prepare($sql);
        $stmt->bind_param("i", $user_id);
        $stmt->execute();
        $order_id = $conn->insert_id;
        
        // Добавляем товары в заказ
        $sql = "INSERT INTO order_items (order_id, product_id, quantity) VALUES (?, ?, ?)";
        $stmt = $conn->prepare($sql);
        
        foreach ($items as $item) {
            $stmt->bind_param("iii", $order_id, $item['product_id'], $item['quantity']);
            $stmt->execute();
        }
        
        // Если все прошло успешно, фиксируем транзакцию
        $conn->commit();
        return "Order created successfully";
    } catch (Exception $e) {
        // В случае ошибки откатываем изменения
        $conn->rollback();
        return "Error creating order: " . $e->getMessage();
    }
}

// Пример использования
$items = array(
    array("product_id" => 1, "quantity" => 2),
    array("product_id" => 3, "quantity" => 1)
);
echo createOrder(1, $items);
?>

Поиск товаров

Функция для поиска товаров:


<?php
function searchProducts($keyword) {
    global $conn;
    $sql = "SELECT * FROM products WHERE name LIKE ? OR description LIKE ?";
    $stmt = $conn->prepare($sql);
    $searchTerm = "%$keyword%";
    $stmt->bind_param("ss", $searchTerm, $searchTerm);
    $stmt->execute();
    $result = $stmt->get_result();
    
    $products = array();
    while ($row = $result->fetch_assoc()) {
        $products[] = $row;
    }
    
    return $products;
}

// Пример использования
$searchResults = searchProducts("смартфон");
?>

Это базовый пример создания структуры базы данных и основных функций для интернет-магазина с использованием PHP и MySQL. В реальном проекте вам потребуется добавить больше функциональности, такой как управление пользователями, обработка платежей, управление запасами и т.д.

Важно помнить о безопасности: всегда используйте подготовленные запросы для предотвращения SQL-инъекций, правильно обрабатывайте пользовательский ввод и применяйте шифрование для конфиденциальных данных.

Для более сложных проектов рекомендуется использовать фреймворки, такие как Laravel или Symfony, которые предоставляют дополнительные инструменты для работы с базами данных и обеспечения безопасности.

Читайте, так же:

🐘 База данных для интернет-магазина: полное руководство по выбору языка программирования

Оцените статью
0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest

0 комментариев
Старые
Новые Популярные
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x