Skip to content

Instantly share code, notes, and snippets.

@Olbergx
Last active October 27, 2017 10:20
Show Gist options
  • Save Olbergx/dab832052c7851950b68cf4fff7fff8c to your computer and use it in GitHub Desktop.
Save Olbergx/dab832052c7851950b68cf4fff7fff8c to your computer and use it in GitHub Desktop.
Создать соединение(connect) с базой данных MySql
Первое, что нам следует сделать для того, чтобы получить данные из таблицы базы данных, - установить соединение с БД.
<?php
$host="localhost";
$user="user_bd";
$pass="1q2w3e4r5t"; //установленный вами пароль
$db_name="my_bd";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
?>
Извлечь данные из таблицы MySql
После того, как мы установили соединение с БД, c помощью запроса можно получить данные из любой таблицы. А с помощью цикла while их вывести.
<?php
$sql = mysql_query("SELECT `ID`, `Name`, `Price` FROM `products`", $link);
while ($result = mysql_fetch_array($sql)) {
echo $result['Name'].": ".$result['Price']." рублей<br>";
}
?>
Теперь давайте разберем функции, которые мы использовали для вывода данных из MySql.
mysql_connect
mysql_connect(<хост>,<пользователь БД>,<пароль>) - устанавливает соединение с базой данных.
mysql_query
mysql_query(<запрос SQL>,<установленное соединение>) - выполняет запрос к БД, написанный на языке SQL.
mysql_fetch_array
mysql_fetch_array(<выполненный запрос SQL>) - поочередно возвращает по одной строке из результата запроса.
Подготовка таблицы
Данный урок выполняется на основе (после выполнения) уроков "Создание базы данных и таблицы с товарами" и "Вывод данных из 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_bd";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
?>
</body>
Теперь в блок <body></body> после подключения к БД добавим HTML форму:
<table>
<form action="" method="post">
<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>
</form>
</table>
Обработка (вставка) полученных из формы данных
После того, как данные из формы будут отправлены, их надо принять и записать в таблицу БД.
Давайте првоерим, переданы ли данные и, если переданы, то сохраним их. Этот код лучше вставить перед формой, но после подключения к БД:
<?php
//Если переменная Name передана
if (isset($_POST["Name"])) {
//Вставляем данные, подставляя их в запрос
$sql = mysql_query("INSERT INTO `products` (`Name`, `Price`)
VALUES ('".$_POST['Name']."','".$_POST['Price']."')");
//Если вставка прошла успешно
if ($sql) {
echo "<p>Данные успешно добавлены в таблицу.</p>";
} else {
echo "<p>Произошла ошибка.</p>";
}
}
?>
Теперь после отправки формы в таблице у вас должна появиться новая срока - новый товар.
Удаление строк из Mysql
Давайте попробуем вывести все товары, а рядом с каждым товаром кнопку удалить (код вставляем в самый низ страницы перед тегом </body>):
<?php
//Получаем данные
$sql = mysql_query('SELECT `ID`, `Name` FROM `products`');
while ($result = mysql_fetch_array($sql)) {
echo $result['ID'].") ".$result['Name']." - <a href='?del=".$result['ID']."'>Удалить</a><br>";
}
?>
Теперь перед выводом товаров нам следует проверить, а не была ли передана переменная на их удаление, и если была, то удалить товар:
<?php
//Удаляем, если что
if (isset($_GET['del'])) {
$sql = mysql_query('DELETE FROM `products` WHERE `ID` = "'.$_GET['del'].'"');
if ($sql) {
echo "<p>Товар удален.</p>";
} else {
echo "<p>Произошла ошибка.</p>";
}
}
while ($result = mysql_fetch_array($sql)) {
echo $result['ID'].") ".$result['Name']." - <a href='?del=".$result['ID']."'>Удалить</a><br>";
}
?>
Полный листинг кода
<!doctype html>
<html lang="ru">
<head>
<title>Админ-панель</title>
</head>
<body>
<?php
$host="localhost";
$user="user_bd";
$pass="1q2w3e4r5t"; //установленный вами пароль
$db_name="my_bd";
$link=mysql_connect($host,$user,$pass);
mysql_select_db($db_name,$link);
//Если переменная Name передана
if (isset($_POST["Name"])) {
//Вставляем данные, подставляя их в запрос
$sql = mysql_query("INSERT INTO `products` (`Name`, `Price`)
VALUES ('".$_POST['Name']."','".$_POST['Price']."')");
//Если вставка прошла успешно
if ($sql) {
echo "<p>Данные успешно добавлены в таблицу.</p>";
} else {
echo "<p>Произошла ошибка.</p>";
}
}
?>
<table>
<form action="" method="post">
<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>
</form>
</table>
<?php
//Удаляем, если что
if (isset($_GET['del'])) {
$sql = mysql_query('DELETE FROM `products` WHERE `ID` = "'.$_GET['del'].'"');
if ($sql) {
echo "<p>Товар удален.</p>";
} else {
echo "<p>Произошла ошибка.</p>";
}
}
//Получаем данные
$sql = mysql_query('SELECT `ID`, `Name` FROM `products`');
while ($result = mysql_fetch_array($sql)) {
echo $result['ID'].") ".$result['Name']." - <a href='?del=".$result['ID']."'>Удалить</a><br>";
}
?>
</body>
Надеюсь, что вы доработаете данный пример и сделаете сами редактирование данных о товаре. Это не сложно: рядом со ссылкой "Удалить" добавляем "Редактировать", при клике по которой передаем переменную "red". Перед отрисовкой формы проверяем, а нет ли этой переменной, и если есть, то извлекаем и подставляем данные в форму (в том числе ИД, как hidden). Перед новой вставкой, если передан ID, то делаем UPDATE, а не INSERT. Дерзайте ;)
Вывод, редактирование и удаление данных из 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="root"; //пользователь
$pass=""; //установленный вами пароль
$db_name="my_db"; //название бд
$link=mysql_connect($host,$user,$pass); //коннектимся
mysql_select_db($db_name,$link); //выбираем БД
?>
</body>
</html>
Теперь выведем все записи из таблицы. Для этого после подключения к БД (перед закрывающимся тегом </body>) вставим следующий код:
<table border='1'>
<tr>
<td>Идентификатор</td>
<td>Наименование</td>
<td>Цена</td>
</tr>
<?php
$sql = mysql_query("SELECT `ID`, `Name`, `Price` FROM `products`", $link);
while ($result = mysql_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>
</tr>
<?php
$sql = mysql_query("SELECT `ID`, `Name`, `Price` FROM `products`", $link);
while ($result = mysql_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 = mysql_query('DELETE FROM `products` WHERE `ID` = '.$_GET['del_id']); //удаляем строку из таблицы
}
?>
Редактирование записей
Итак, если вы дочитали до сюда, то вы уже что-то понимаете, что к чему и как это работает. Я постараюсь рассказать, как будет работать редактирование, а в завершение приведу полный листинг кода всего примера, где вы сможете посмотреть и понять, как это реализовать.
Итак, редактирование:
мы также как и для удаления передадим переменную red_id
достанем из БД запись с таким номером, чему равна red_id
подставим полученные из БД данные в форму редактирования
сохраним эти данные в БД
Полный листинг кода
<!doctype html>
<html lang="ru">
<head>
<title>Админ-панель</title>
</head>
<body>
<?php
$host="localhost"; //хост
$user="root"; //пользователь
$pass=""; //установленный вами пароль
$db_name="my_db"; //название бд
$link=mysql_connect($host,$user,$pass); //коннектимся
mysql_select_db($db_name,$link); //выбираем БД
if (isset($_GET['del_id'])) { //проверяем, есть ли переменная на удаление
$sql = mysql_query('DELETE FROM `products` WHERE `ID` = '.$_GET['del_id']); //удаляем строку из таблицы
}
if (isset($_GET['red_id'])) { //Проверяем, передана ли переменная на редактирования
if (isset($_POST['Name'])) { //Если новое имя предано, то обновляем и имя и цену
$sql = mysql_query('UPDATE `products` SET '
.'`Name` = "'.$_POST['Name'].'",'
.'`Price` = '.$_POST['Price'].' '
.'WHERE `ID` = '.$_GET['red_id']);
}
}
?>
<table border='1'>
<tr>
<td>Идентификатор</td>
<td>Наименование</td>
<td>Цена</td>
</tr>
<?php
$sql = mysql_query("SELECT `ID`, `Name`, `Price` FROM `products`", $link);
while ($result = mysql_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>
<?php
if (isset($_GET['red_id'])) { //Если передана переменная на редактирование
//Достаем запсись из БД
$sql = mysql_query("SELECT `ID`, `Name`, `Price` FROM `products` WHERE `ID`=".$_GET['red_id'], $link); //запрос к БД
$result = mysql_fetch_array($sql); //получение самой записи
//Отрисовываем форму. Обратите внимание, что фигурную скобку условия if мы закроем только после формы.
//Т.е. если переменная red_id не передана, то форма не отрисуется
//И не важно, что посреди цыкла мы закрываем тег PHP , его работа продолжается, пока скобка не закроется
?>
<table>
<form action="" method="post">
<tr>
<td>Наименование:</td>
<td><input type="text" name="Name" value="<?php echo ($result['Name']); ?>"></td>
</tr>
<tr>
<td>Цена:</td>
<td><input type="text" name="Price" size="3" value="<?php echo ($result['Price']); ?>"> руб.</td>
</tr>
<tr>
<td colspan="2"><input type="submit" value="OK"></td>
</tr>
</form>
</table>
<?php
}
?>
</body>
</html>
Ну вот, друзья, мы и научились доставать данные из БД MySql, отображать их на странице, удалять их прямо со страницы и, конечно же, редактировать ;)
http://intop24.ru/article_15_lesson_6.php
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment