Вебмастерская

CRUD на PHP для работы с MySQL: пошаговый урок для начинающих

2023-02-13 0 ∞ 1

В этой статье мы рассмотрим разработку простого набора CRUD операций на PHP, предназначенного для работы с базой данных MySQL. Для создания кода CRUD будет использовано расширение MySQLi, для оформления – стили Bootstrap. Приложение будет выполнять все стандартные операции CRUD – создание, чтение, модификацию и удаление записей.

Что такое CRUD: это аббревиатура, обозначающая четыре главные операции, используемые в приложениях для управления базами данных – создание (create), чтение (read), модификацию (update) и удаление (delete) записей.

Итак, приступим к разработке CRUD на PHP и MySQLi с нуля.

Шаг 1: Создание таблицы базы данных

Приведенная ниже SQL команда создает таблицу с данными пользователей в базе MySQL.

CREATE TABLE users (     id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,     first_name VARCHAR(100) NOT NULL,     last_name VARCHAR(100) NOT NULL,     email VARCHAR(255) NOT NULL,     phone_number VARCHAR(15) NOT NULL,     address VARCHAR(255) NOT NULL );

Шаг 2: Создание файла конфигурации

После создания таблицы мы переходим к настройке подключения к серверу базы данных MySQL. Для этого нужно создать файл config.php и поместить в него приведенный ниже код.

<?php   define('DB_SERVER', 'localhost');   define('DB_USERNAME', 'root');   define('DB_PASSWORD', '');   define('DB_NAME', 'php_crud');    $conn = mysqli_connect(DB_SERVER, DB_USERNAME, DB_PASSWORD, DB_NAME);    if ($conn === false) {       die("ERROR: Could not connect. " . mysqli_connect_error());   } ?>

Это подключение можно вызывать на всех страницах – с помощью PHP функции require_once().

Шаг 3: Посадочная страница

На посадочной странице данные пользователей будут выводиться в виде таблицы. Мы предусмотрим иконки для операций редактирования, просмотра и удаления данных.

Для создания лендинга мы добавим файл index.php в директорию CRUD. Вставьте в файл данный ниже код.

<!DOCTYPE html> <html lang="en">   <head>       <meta charset="UTF-8">       <title>Dashboard</title>       <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">       <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>       <style>           .wrapper {               width: 1200px;               margin: 0 auto;           }       </style>   </head>   <body>     <div class="wrapper">         <div class="container-fluid">             <div class="row">               <h2 class="text-center">PHP CRUD Tutorial Example with <a href="https://codingdriver.com/">Coding Driver</a></h2>                 <div class="col-md-12">                     <div class="page-header clearfix">                         <h2 class="pull-left">Users</h2>                         <a href="create.php" class="btn btn-success pull-right">Add New User</a>                     </div>                     <?php                     // Include config file                     require_once "config.php";                      // select all users                     $data = "SELECT * FROM users";                     if($users = mysqli_query($conn, $data)){                         if(mysqli_num_rows($users) > 0){                             echo "<table class='table table-bordered table-striped'>                                     <thead>                                       <tr>                                         <th>#</th>                                         <th>First Name</th>                                         <th>Last Name</th>                                         <th>Email</th>                                         <th>Phone Number</th>                                         <th>Address</th>                                         <th>Action</th>                                       </tr>                                     </thead>                                     <tbody>";                                 while($user = mysqli_fetch_array($users)) {                                     echo "<tr>                                             <td>" . $user['id'] . "</td>                                             <td>" . $user['first_name'] . "</td>                                             <td>" . $user['last_name'] . "</td>                                             <td>" . $user['email'] . "</td>                                             <td>" . $user['phone_number'] . "</td>                                             <td>" . $user['address'] . "</td>                                             <td>                                               <a href='read.php?id=". $user['id'] ."' title='View User' data-toggle='tooltip'><span class='glyphicon glyphicon-eye-open'></span></a>                                               <a href='edit.php?id=". $user['id'] ."' title='Edit User' data-toggle='tooltip'><span class='glyphicon glyphicon-pencil'></span></a>                                               <a href='delete.php?id=". $user['id'] ."' title='Delete User' data-toggle='tooltip'><span class='glyphicon glyphicon-trash'></span></a>                                             </td>                                           </tr>";                                 }                                 echo "</tbody>                                 </table>";                             mysqli_free_result($users);                         } else{                             echo "<p class='lead'><em>No records found.</em></p>";                         }                     } else{                         echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);                     }                      // Close connection                     mysqli_close($conn);                     ?>                 </div>             </div>         </div>     </div>   </body> </html>

Основы работы с MySQL в PHP

Можно вставить какие-нибудь тестовые данные прямо в таблицу базы данных, изменения отобразятся на странице.

Шаг 4: Страница создания записей

На этом этапе мы разработаем CRUD операцию по созданию записей. Для этого создайте новый файл под названием create.php и поместите в него следующий код:

<?php require_once "config.php";  $first_name = $last_name = $email = $phone_number = $address = ""; $first_name_error = $last_name_error = $email_error = $phone_number_error = $address_error = "";  if ($_SERVER["REQUEST_METHOD"] == "POST") {     $firstName = trim($_POST["first_name"]);     if (empty($firstName)) {         $first_name_error = "First Name is required.";     } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {         $first_name_error = "First Name is invalid.";     } else {         $firstName = $firstName;     }      $lastName = trim($_POST["last_name"]);      if (empty($lastName)) {         $last_name_error = "Last Name is required.";     } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {         $last_name_error = "Last Name is invalid.";     } else {         $lastName = $lastName;     }      $email = trim($_POST["email"]);     if (empty($email)) {         $email_error = "Email is required.";     } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {         $email_error = "Please enter a valid email.";     } else {         $email = $email;     }      $phoneNumber = trim($_POST["phone_number"]);     if(empty($phoneNumber)){         $phone_number_error = "Phone Number is required.";     } else {         $phoneNumber = $phoneNumber;     }      $address = trim($_POST["address"]);     if(empty($address)){         $address_error = "Address is required.";     } else {         $address = $address;     }      if (empty($first_name_error_err) && empty($last_name_error) && empty($email_error) && empty($phone_number_error) && empty($address_error) ) {           $sql = "INSERT INTO `users` (`first_name`, `last_name`, `email`, `phone_number`, `address`) VALUES ('$firstName', '$lastName', '$email', '$phoneNumber', '$address')";            if (mysqli_query($conn, $sql)) {               header("location: index.php");           } else {                echo "Something went wrong. Please try again later.";           }       }     mysqli_close($conn); } ?>  <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Create User</title>     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">     <style>         .wrapper {             width: 1200px;             margin: 0 auto;         }     </style> </head> <body>     <div class="wrapper">         <div class="container-fluid">             <div class="row">                 <div class="col-md-12">                     <div class="page-header">                         <h2>Create User</h2>                     </div>                     <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">                         <div class="form-group <?php echo (!empty($first_name_error)) ? 'has-error' : ''; ?>">                             <label>First Name</label>                             <input type="text" name="first_name" class="form-control" value="">                             <span class="help-block"><?php echo $first_name_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($last_name_error)) ? 'has-error' : ''; ?>">                             <label>Last Name</label>                             <input type="text" name="last_name" class="form-control" value="">                             <span class="help-block"><?php echo $last_name_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($email_error)) ? 'has-error' : ''; ?>">                             <label>Email</label>                             <input type="email" name="email" class="form-control" value="">                             <span class="help-block"><?php echo $email_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($phone_number_error)) ? 'has-error' : ''; ?>">                             <label>Phone Number</label>                             <input type="number" name="phone_number" class="form-control" value="">                             <span class="help-block"><?php echo $phone_number_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($address_error)) ? 'has-error' : ''; ?>">                             <label>Address</label>                             <textarea name="address" class="form-control"></textarea>                             <span class="help-block"><?php echo $address_error;?></span>                         </div>                          <input type="submit" class="btn btn-primary" value="Submit">                         <a href="index.php" class="btn btn-default">Cancel</a>                     </form>                 </div>             </div>         </div>     </div> </body> </html>

Создаем CRUD-приложение с помощью Yii за считанные минуты

Файл create.php будет отображать HTML форму для ввода и валидации данных.

Шаг 5: Страница модификации записей

По аналогии со страницей создания записей мы разработаем функцию и страницу модификации данных. Создайте файл с именем edit.php и вставьте в него приведенный ниже код, который обеспечивает редактирование записей, уже существующих в базе данных.

<?php require_once "config.php";  $first_name = $last_name = $email = $phone_number = $address = ""; $first_name_error = $last_name_error = $email_error = $phone_number_error = $address_error = "";  if (isset($_POST["id"]) && !empty($_POST["id"])) {      $id = $_POST["id"];          $firstName = trim($_POST["first_name"]);         if (empty($firstName)) {             $first_name_error = "First Name is required.";         } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {             $first_name_error = "First Name is invalid.";         } else {             $firstName = $firstName;         }          $lastName = trim($_POST["last_name"]);          if (empty($lastName)) {             $last_name_error = "Last Name is required.";         } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {             $last_name_error = "Last Name is invalid.";         } else {             $lastName = $lastName;         }          $email = trim($_POST["email"]);         if (empty($email)) {             $email_error = "Email is required.";         } elseif (!filter_var($firstName, FILTER_VALIDATE_REGEXP, array("options"=>array("regexp"=>"/^[a-zA-Zs]+$/")))) {             $email_error = "Please enter a valid email.";         } else {             $email = $email;         }          $phoneNumber = trim($_POST["phone_number"]);         if (empty($phoneNumber)){             $phone_number_error = "Phone Number is required.";         } else {             $phoneNumber = $phoneNumber;         }          $address = trim($_POST["address"]);         if (empty($address)) {             $address_error = "Address is required.";         } else {             $address = $address;         }      if (empty($first_name_error_err) && empty($last_name_error) &&         empty($email_error) && empty($phone_number_error) && empty($address_error) ) {            $sql = "UPDATE `users` SET `first_name`= '$firstName', `last_name`= '$lastName', `email`= '$email', `phone_number`= '$phoneNumber', `address`= '$address' WHERE id='$id'";            if (mysqli_query($conn, $sql)) {               header("location: index.php");           } else {               echo "Something went wrong. Please try again later.";           }      }      mysqli_close($conn); } else {     if (isset($_GET["id"]) && !empty(trim($_GET["id"]))) {         $id = trim($_GET["id"]);         $query = mysqli_query($conn, "SELECT * FROM users WHERE ID = '$id'");          if ($user = mysqli_fetch_assoc($query)) {             $firstName   = $user["first_name"];             $lastName    = $user["last_name"];             $email       = $user["email"];             $phoneNumber = $user["phone_number"];             $address     = $user["address"];         } else {             echo "Something went wrong. Please try again later.";             header("location: edit.php");             exit();         }         mysqli_close($conn);     }  else {         echo "Something went wrong. Please try again later.";         header("location: edit.php");         exit();     } } ?>  <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>Update Record</title>     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">     <style>         .wrapper {             width: 1200px;             margin: 0 auto;         }     </style> </head> <body>     <div class="wrapper">         <div class="container-fluid">             <div class="row">                 <div class="col-md-12">                     <div class="page-header">                         <h2>Update User</h2>                     </div>                     <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">                       <input type="hidden" name="id" value="<?php echo $id; ?>"/>                         <div class="form-group <?php echo (!empty($first_name_error)) ? 'has-error' : ''; ?>">                             <label>First Name</label>                             <input type="text" name="first_name" class="form-control" value="<?php echo $firstName; ?>">                             <span class="help-block"><?php echo $first_name_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($last_name_error)) ? 'has-error' : ''; ?>">                             <label>Last Name</label>                             <input type="text" name="last_name" class="form-control" value="<?php echo $lastName; ?>">                             <span class="help-block"><?php echo $last_name_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($email_error)) ? 'has-error' : ''; ?>">                             <label>Email</label>                             <input type="email" name="email" class="form-control" value="<?php echo $email; ?>">                             <span class="help-block"><?php echo $email_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($phone_number_error)) ? 'has-error' : ''; ?>">                             <label>Phone Number</label>                             <input type="number" name="phone_number" class="form-control" value="<?php echo $phoneNumber; ?>">                             <span class="help-block"><?php echo $phone_number_error;?></span>                         </div>                          <div class="form-group <?php echo (!empty($address_error)) ? 'has-error' : ''; ?>">                             <label>Address</label>                             <textarea name="address" class="form-control"><?php echo $address; ?></textarea>                             <span class="help-block"><?php echo $address_error;?></span>                         </div>                          <input type="submit" class="btn btn-primary" value="Submit">                         <a href="index.php" class="btn btn-default">Cancel</a>                     </form>                 </div>             </div>         </div>     </div> </body> </html>

Расширения PHP для работы с mp3

Шаг 6: Чтение записей

Для вывода на экран данных пользователей мы разработаем функцию чтения записей. Создайте файл read.php, сохраните в нем данный ниже код. Файл будет запрашивать данные пользователей по ID из таблицы базы данных.

<!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>View Record</title>     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">     <style>         .wrapper{             width: 1200px;             margin: 0 auto;         }     </style> </head> <body>   <?php     if (isset($_GET["id"]) && !empty(trim($_GET["id"]))) {         require_once "config.php";          $id = trim($_GET["id"]);         $query = mysqli_query($conn, "SELECT * FROM users WHERE ID = '$id'");          if ($user = mysqli_fetch_assoc($query)) {             $firstName   = $user["first_name"];             $lastName    = $user["last_name"];             $email       = $user["email"];             $phoneNumber = $user["phone_number"];             $address     = $user["address"];         } else {             header("location: read.php");             exit();         }          mysqli_close($conn);     } else {         header("location: read.php");         exit();     }   ?>     <div class="wrapper">         <div class="container-fluid">             <div class="row">                 <div class="col-md-12">                     <div class="page-header">                         <h1> User View</h1>                     </div>                     <div class="form-group">                         <label>First Name</label>                         <p class="form-control-static"><?php echo $firstName ?></p>                     </div>                     <div class="form-group">                         <label>Last Name</label>                         <p class="form-control-static"><?php echo $lastName ?></p>                     </div>                     <div class="form-group">                         <label>Email</label>                         <p class="form-control-static"><?php echo $email ?></p>                     </div>                     <div class="form-group">                         <label>Phone Number</label>                         <p class="form-control-static"><?php echo $phoneNumber ?></p>                     </div>                     <div class="form-group">                         <label>Address</label>                         <p class="form-control-static"><?php echo $address ?></p>                     </div>                     <p><a href="index.php" class="btn btn-primary">Back</a></p>                 </div>             </div>         </div>     </div> </body> </html>

Шаг 7: Удаление записей

На заключительном этапе мы разработаем функцию удаления записей. Создайте файл delete.php, вставьте в него приведенный ниже код, который отвечает за удаление существующих в базе записей по ID пользователя.

<?php if (isset($_POST["id"]) && !empty($_POST["id"])) {     require_once "config.php";     $id = $_POST["id"];      $query = "DELETE FROM users WHERE id = '$id'";      if (mysqli_query($conn, $query)) {         header("location: index.php");     } else {          echo "Something went wrong. Please try again later.";     }      mysqli_close($conn); } else {     if (empty(trim($_GET["id"]))) {         echo "Something went wrong. Please try again later.";         header("location: index.php");         exit();     } } ?> <!DOCTYPE html> <html lang="en"> <head>     <meta charset="UTF-8">     <title>View Record</title>     <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.css">     <style>         .wrapper{             width: 500px;             margin: 0 auto;         }     </style> </head> <body>     <div class="wrapper">         <div class="container-fluid">             <div class="row">                 <div class="col-md-12">                     <div class="page-header">                         <h1>Delete Record</h1>                     </div>                     <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">                         <div class="alert alert-danger fade in">                             <input type="hidden" name="id" value="<?php echo trim($_GET["id"]); ?>"/>                             <p>Are you sure you want to delete this record?</p><br>                             <p>                                 <input type="submit" value="Yes" class="btn btn-danger">                                 <a href="index.php" class="btn btn-default">No</a>                             </p>                         </div>                     </form>                 </div>             </div>         </div>     </div> </body> </html>

Наконец, наш набор CRUD операций для работы с записями в базе данных MySQL готов. Если у вас есть вопросы или замечания – ждем их в комментариях.

Источник: www.internet-technologies.ru

Статьи по теме

Кнопка "Вернуться к началу"
Закрыть

Обнаружен Adblock

Пожалуйста, подумайте о том, чтобы поддержать нас, отключив свой блокировщик рекламы!