Last active
October 27, 2017 10:20
-
-
Save Olbergx/dab832052c7851950b68cf4fff7fff8c to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Создать соединение(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