00:00

Вывод данных из MySql на PHP

Создать соединение(connect) с базой данных MySql

Первое, что нам следует сделать для того, чтобы получить данные из таблицы базы данных, - установить соединение с БД.

<?php
 $host = 'localhost'; // Хост, у нас все локально
 $user = 'user_bd'; // Имя созданного вами пользователя
 $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
 $db_name = 'my_db'; // Имя базы данных
 $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

 // Ругаемся, если соединение установить не удалось
 if (!$link) {
 echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
 exit;
 }
?>

Извлечь данные из таблицы MySql

После того, как мы установили соединение с БД, c помощью запроса можно получить данные из любой таблицы. А с помощью цикла while их вывести.

<?php
 $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo "{$result['Name']}: {$result['Price']} рублей<br>";
 }
?>

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

mysqli_connect

mysqli_connect(<хост>, <пользователь БД>, <пароль>, <база данных>) - устанавливает соединение с базой данных.

mysqli_query

mysqli_query(<установленное соединение>, <запрос SQL>) - выполняет запрос к БД, написанный на языке SQL.

mysqli_fetch_array

mysqli_fetch_array(<выполненный запрос SQL>) - поочередно возвращает по одной строке из результата запроса.

Вывод переменной врутри строки

Заметьте, что если вы выводите строку оператором echo и строка заключена в двойные кавычки (именно двойные), то внутрь строки можно вставлять переменные в фигурных скобках и они будут подставленны в этот шаблон. Круто, да?


Запись данных в MySql на PHP

Подготовка таблицы

  • Таблица "products" с полями "ID", "Name", "Price";
  • Установленное соединение с БД MySql.

Создание формы для добавления записей

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

Создадим новую страницу, к примеру "product_admin.php" с установленным соединением с БД:

<!doctype html>
<html lang="ru">
<head>
 <title>Админ-панель</title>
</head>
<body>
 <?php
 $host = 'localhost'; // Хост, у нас все локально
 $user = 'user_bd'; // Имя созданного вами пользователя
 $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
 $db_name = 'my_db'; // Имя базы данных
 $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

 // Ругаемся, если соединение установить не удалось
 if (!$link) {
 echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
 exit;
 }
 ?>
</body>
</html>

Теперь в блок <body></body> после подключения к БД добавим HTML форму:

<form action="" method="post">
 <table>
 <tr>
 <td>Наименование:</td>
 <td><input type="text" name="Name"></td>
 </tr>
 <tr>
 <td>Цена:</td>
 <td><input type="text" name="Price" size="3"> руб.</td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" value="OK"></td>
 </tr>
 </table>
</form>

Обработка (вставка) полученных из формы данных

После того, как данные из формы будут отправлены, их надо принять и записать в таблицу БД.

Давайте првоерим, переданы ли данные и, если переданы, то сохраним их. Этот код лучше вставить перед формой, но после подключения к БД:

<?php
 //Если переменная Name передана
 if (isset($_POST["Name"])) {
 //Вставляем данные, подставляя их в запрос
 $sql = mysqli_query($link, "INSERT INTO `products` (`Name`, `Price`) VALUES ('{$_POST['Name']}', '{$_POST['Price']}')");
 //Если вставка прошла успешно
 if ($sql) {
 echo '<p>Данные успешно добавлены в таблицу.</p>';
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }
?>

Теперь после отправки формы в таблице у вас должна появиться новая срока - новый товар.

Никогда без проверок принятых переменных не вставляйте данные напрямую в базу данных. В этом случае вас будет очень легко взломать. Подробнее об этом в google: о sql инъекциях. Но поскольку мы только учимся, и усложнять все незачем, то мы будем делать так :)

Удаление строк из Mysql

Давайте попробуем вывести все товары, а рядом с каждым товаром кнопку удалить (код вставляем в самый низ страницы перед тегом </body>):

<?php
 //Получаем данные
 $sql = mysqli_query($link, 'SELECT `ID`, `Name` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo "{$result['ID']}) {$result['Name']} - <a href='?del={$result['ID']}'>Удалить</a><br>";
 }
?>

Теперь перед выводом товаров нам следует проверить, а не была ли передана переменная на их удаление, и если была, то удалить товар:

<?php
 //Удаляем, если что
 if (isset($_GET['del'])) {
 $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
 if ($sql) {
 echo "<p>Товар удален.</p>";
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }
?>

Попробуйте доработать данный пример и сделать самим редактирование данных о товаре. Путей решения много. Один из них: рядом со ссылкой "Удалить" добавляем "Редактировать", при клике по которой передаем переменную "red". Перед отрисовкой формы проверяем, а нет ли этой переменной, и если есть, то извлекаем и подставляем данные в форму. Перед новой вставкой, если все еще есть "red", то делаем UPDATE, а не INSERT. Дерзайте ;)

Ну и для самых лентяев! Готовый код с редактирвоанием данных в таблице ниже.

Полный листинг кода

<!doctype html>
<html lang="ru">
<head>
 <title>Админ-панель</title>
</head>
<body>
 <?php
 $host = 'localhost'; // Хост, у нас все локально
 $user = 'user_bd'; // Имя созданного вами пользователя
 $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
 $db_name = 'my_db'; // Имя базы данных
 $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

 // Ругаемся, если соединение установить не удалось
 if (!$link) {
 echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
 exit;
 }

 //Если переменная Name передана
 if (isset($_POST["Name"])) {
 //Если это запрос на обновление, то обновляем
 if (isset($_GET['red'])) {
 $sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red']}");
 } else {
 //Иначе вставляем данные, подставляя их в запрос
 $sql = mysqli_query($link, "INSERT INTO `products` (`Name`, `Price`) VALUES ('{$_POST['Name']}', '{$_POST['Price']}')");
 }

 //Если вставка прошла успешно
 if ($sql) {
 echo '<p>Успешно!</p>';
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }

 //Удаляем, если что
 if (isset($_GET['del'])) {
 $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del']}");
 if ($sql) {
 echo "<p>Товар удален.</p>";
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }

 //Если передана переменная red, то надо обновлять данные. Для начала достанем их из БД
 if (isset($_GET['red'])) {
 $sql = mysqli_query($link, "SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`={$_GET['red']}");
 $product = mysqli_fetch_array($sql);
 }
 ?>
 <form action="" method="post">
 <table>
 <tr>
 <td>Наименование:</td>
 <td><input type="text" name="Name" value="<?= isset($_GET['red']) ? $product['Name'] : ''; ?>"></td>
 </tr>
 <tr>
 <td>Цена:</td>
 <td><input type="text" name="Price" size="3" value="<?= isset($_GET['red']) ? $product['Price'] : ''; ?>"> руб.</td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" value="OK"></td>
 </tr>
 </table>
 </form>
 <?php
 //Получаем данные
 $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo "<p>{$result['ID']}) {$result['Name']} - {$result['Price']} ₽ - <a href='?del={$result['ID']}'>Удалить</a> - <a href='?red={$result['ID']}'>Редактировать</a></p>";
 }
 ?>
 <p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>

Редактирование данных в MySql с помощью PHP (админ-панель)

Вывод, редактирование и удаление данных из MySql

Если ты полностью справился с предыдущим уроком, то данный урок можно пропустить :) Здесь мы с вами пошагово сделаем следующее:

  • Создадим таблицу MySql
  • Выведем из таблицы MySql данные
  • Сделаем форму для редактирования и удаления данных из таблицы MySql

Итак, приступим!

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

Давайте создадим в нашей БД таблицу products со следующими полями: ID, Name, Price. Поле Name у нас будет иметь тип TEXT, остальные два - INT. Если вам лень в PhpMyAdmin создавать такую табличку руками, то можете просто в нем выполнить вот этот SQL-код:

CREATE TABLE IF NOT EXISTS `products` (
 `ID` int(11) NOT NULL AUTO_INCREMENT,
 `Name` text NOT NULL,
 `Price` int(11) NOT NULL,
 PRIMARY KEY (`ID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

Теперь давайте заполним нашу таблицу тестовыми данными. Для наглядности мы добавим 3 записи:

Mysql-таблица с товарами

Заполнить таблицу можно либо ручками через PhpMyAdmin, либо опять же вот таким простым SQL-запросом:

INSERT INTO `products` (`ID`, `Name`, `Price`) VALUES
(1, 'Хлеб', 35),
(2, 'Йогурт', 27),
(3, 'Пиво Балтика #7', 50);

Вывод записей

Следующим нашим шагом будет обычный вывод этих данных из MySql на web-страничку.

Создадим новую страницу, к примеру "product_list.php" с установленным соединением с БД:

<!doctype html>
<html lang="ru">
<head>
 <title>Админ-панель</title>
</head>
<body>
 <?php
 $host = 'localhost'; // Хост, у нас все локально
 $user = 'user_bd'; // Имя созданного вами пользователя
 $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
 $db_name = 'my_db'; // Имя базы данных
 $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

 // Ругаемся, если соединение установить не удалось
 if (!$link) {
 echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
 exit;
 }
 ?>
</body>
</html>

Теперь выведем все записи из таблицы. Для этого после подключения к БД (перед закрывающимся тегом </body>) вставим следующий код:

<table border='1'>
 <tr>
 <td>Идентификатор</td>
 <td>Наименование</td>
 <td>Цена</td>
 </tr>
 <?php
 $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo "<tr><td>{$result['ID']}</td><td>{$result['Name']}</td><td>{$result['Price']} ₽</td></tr>";
 }
 ?>
</table>

Если вы увидели на экране табличку с вашими товарами, то ПОЗДРАВЛЯЮ, пока что у вас все получается как надо! Возможно только для этого вы сюда и пришли. Этот вариант уже можно разместить на сайте, а добавлять и редактировать товары четез PhpMyAdmin. Все изменения будут автоматически отображаться на вашей страничке, доступной пользователям. Конечно вам придется для более касивого отображения таблички поколдовать со стилями css, но это уже другая тема :) Итак, мы поедем дальше и сделаем редактирование и удаление этих товаров.

Редактирование и удаление записей

Давайте определимся, что нам надо уметь делать? Первое - удалять записи, воторое - редактировать записи. Ну а третье (вставлять новые записи) - мы уже сделали в прошлом уроке.

Итак, для того, чтобы мы могли удалить запись, нам надо в строке браузера передать в какой-либо переменной ID этой записи. Иными словами, нам надо, чтобы строка браузера у нас выглядела примерно так:

Переменная в строке браузера
На скриншоте выше мы видим переменную del_id в строке браузера, которая равна 1. Значение этой переменной можно прочитать средствами PHP и удалить из MySql-таблицы запись под номером 1 (ID = 1). Давайте сделаем это. Для начала передадим переменную, которая укажет, какую запись надо удалить. Для этого рядом с каждой записью добавим ссылку на удаление, в которой и передадим эту переменную. Итак, наша табличка с выведенными данными изменится следующим образом:
<table border='1'>
 <tr>
 <td>Идентификатор</td>
 <td>Наименование</td>
 <td>Цена</td>
 <td>Удаление</td>
 </tr>
 <?php
 $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo '<tr>' .
 "<td>{$result['ID']}</td>" .
 "<td>{$result['Name']}</td>" .
 "<td>{$result['Price']} ₽</td>" .
 "<td><a href='?del_id={$result['ID']}'>Удалить</a></td>" .
 '</tr>';
 }
 ?>
</table>

Теперь, если вы будете переходить по ссылкам "Удалить", то увидите, что значения переменной в строке браузера будет меняться в зависимости от выбранного продукта. Теперь давайте перед самым выводом товаров проверим, не передана ли переменная del_id, и если она передана, то удалим запись. Для этого после подключения к БД почти в начало файла вставим следующий код:

<?php
 if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
 //удаляем строку из таблицы
 $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del_id']}");
 if ($sql) {
 echo "<p>Товар удален.</p>";
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }
?>

Редактирование записей

Итак, если вы дочитали до сюда, то вы уже что-то понимаете, что к чему и как это работает. Я постараюсь рассказать, как будет работать редактирование, а в завершение приведу полный листинг кода всего примера, где вы сможете посмотреть и понять, как это реализовать.

Итак, редактирование:

  • мы также как и для удаления передадим переменную red_id
  • достанем из БД запись с таким номером, чему равна red_id
  • подставим полученные из БД данные в форму редактирования (для этого мы воспользуемся сокразениями php для вывода результатов и для выполнения условий)
  • сохраним эти данные в БД

Сокращенная запись echo с условием

Следующие два примера кода делают одно и то же.

<?php
 if ($a === 1) {
 echo 'A = 1';
 } else {
 echo 'A != 1';
 }
?>
<?= (a === 1) ? 'A = 1' : 'A != 1'; ?>

Полный листинг кода

<!doctype html>
<html lang="ru">
<head>
 <title>Админ-панель</title>
</head>
<body>
 <?php
 $host = 'localhost'; // Хост, у нас все локально
 $user = 'user_bd'; // Имя созданного вами пользователя
 $pass = '1q2w3e4r5t'; // Установленный вами пароль пользователю
 $db_name = 'my_db'; // Имя базы данных
 $link = mysqli_connect($host, $user, $pass, $db_name); // Соединяемся с базой

 // Ругаемся, если соединение установить не удалось
 if (!$link) {
 echo 'Не могу соединиться с БД. Код ошибки: ' . mysqli_connect_errno() . ', ошибка: ' . mysqli_connect_error();
 exit;
 }

 //Если переменная Name передана
 if (isset($_POST["Name"])) {
 //Если это запрос на обновление, то обновляем
 if (isset($_GET['red_id'])) {
 $sql = mysqli_query($link, "UPDATE `products` SET `Name` = '{$_POST['Name']}',`Price` = '{$_POST['Price']}' WHERE `ID`={$_GET['red_id']}");
 } else {
 //Иначе вставляем данные, подставляя их в запрос
 $sql = mysqli_query($link, "INSERT INTO `products` (`Name`, `Price`) VALUES ('{$_POST['Name']}', '{$_POST['Price']}')");
 }

 //Если вставка прошла успешно
 if ($sql) {
 echo '<p>Успешно!</p>';
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }

 if (isset($_GET['del_id'])) { //проверяем, есть ли переменная
 //удаляем строку из таблицы
 $sql = mysqli_query($link, "DELETE FROM `products` WHERE `ID` = {$_GET['del_id']}");
 if ($sql) {
 echo "<p>Товар удален.</p>";
 } else {
 echo '<p>Произошла ошибка: ' . mysqli_error($link) . '</p>';
 }
 }

 //Если передана переменная red_id, то надо обновлять данные. Для начала достанем их из БД
 if (isset($_GET['red_id'])) {
 $sql = mysqli_query($link, "SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`={$_GET['red_id']}");
 $product = mysqli_fetch_array($sql);
 }
 ?>
 <form action="" method="post">
 <table>
 <tr>
 <td>Наименование:</td>
 <td><input type="text" name="Name" value="<?= isset($_GET['red_id']) ? $product['Name'] : ''; ?>"></td>
 </tr>
 <tr>
 <td>Цена:</td>
 <td><input type="text" name="Price" size="3" value="<?= isset($_GET['red_id']) ? $product['Price'] : ''; ?>"> руб.</td>
 </tr>
 <tr>
 <td colspan="2"><input type="submit" value="OK"></td>
 </tr>
 </table>
 </form>
 <table border='1'>
 <tr>
 <td>Идентификатор</td>
 <td>Наименование</td>
 <td>Цена</td>
 <td>Удаление</td>
 <td>Редактирование</td>
 </tr>
 <?php
 $sql = mysqli_query($link, 'SELECT `ID`, `Name`, `Price` FROM `products`');
 while ($result = mysqli_fetch_array($sql)) {
 echo '<tr>' .
 "<td>{$result['ID']}</td>" .
 "<td>{$result['Name']}</td>" .
 "<td>{$result['Price']} ₽</td>" .
 "<td><a href='?del_id={$result['ID']}'>Удалить</a></td>" .
 "<td><a href='?red_id={$result['ID']}'>Изменить</a></td>" .
 '</tr>';
 }
 ?>
 </table>
 <p><a href="?add=new">Добавить новый товар</a></p>
</body>
</html>

Ну вот, друзья, мы и научились доставать данные из БД MySql или MariaDB, отображать их на странице, удалять их прямо со страницы и, конечно же, редактировать ;)

Категория: Data Life Engine 15 | Просмотров: 303 | Добавил: SKYER | Рейтинг: 0.0/0
Всего комментариев: 0
avatar