SQL-запросы из web-страницы



Работа с БД с помощью SQL-запросов.



В предыдущей части рассказывается, что такое MySQL, и как создавать базы и таблицы с помощью phpMyadmin, а сейчас речь пойдёт о вводе и выводе информации с помощью своей веб-страницы.


Итак, у нас есть БД домашней библиотеки — homelib и таблица polka1.



Теперь нужно сделать html-страницу из которой мы будем добавлять книги/записи в БД в таблицу polka1.

Создаём файл index.html.


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" href="style.css"  type="text/css">
<title>MySQL</title>
</head>
<body>
<form action="rec.php" method="post">
<input type="text" name="author" placeholder="Автор" size="30"><b/>
<b/>
<input type="text" name="title" placeholder="Название" size="30"><b/>
<b/>
<input  type="text" name="text" placeholder="Текст" size="30"><b/>
<b/>
<input id="submit" type="submit" value="Записать"><b/>
</form>
</body>
</html>

Маленький нюанс, надо в теги <b/> дописать букву 'r'


Создаём файл style.css


body{
width:400px;  
margin:15px auto; 
background-image: url('//istarik.ru/file/bg.png');
}

#submit{
width:200px;
height: 40px;
border:0px ;
background:#65c178;
margin:5px 0px 10px 63px;
font-size: 18px;
color: #ffffff;
cursor: pointer;
box-shadow: 0px 5px 2px -1px rgba(0,0,0,0.5);
border-radius: 0;
}

#submit:hover{
box-shadow: 0px 2px 2px -1px rgba(0,0,0,0.6);
}



Зайдите в браузер /. Должно получиться так:



Здесь всё просто, вводим имя автора, название книги и вставляем текст. Поле для текста совсем маленькое, но оно предназначено только для копипасты.

Нажатие на кнопку вызывает скрипт rec.php и передаёт ему содержимое полей.


Чтобы заработало, надо создать rec.php:


<?php 
require 'connect.php'; // Подключает файл с логином/паролем и именем БД
mysql_set_charset('utf8'); // Устанавливает кодировку клиента
$author = trim($_REQUEST['author']); // Получает содержимое поля "Автор" и убирает возможные пробелы в начале строки
$title = trim($_REQUEST['title']); // То же самое для поля "Название"
$text = mysql_real_escape_string(trim($_REQUEST['text'])); // То же самое для поля "Текст" + (см.ниже)    
$insert_sql = "INSERT INTO polka1 (author, title, text)" . // Указывает в какую таблицу и в какие поля ...
                   "VALUES('{$author}', '{$title}', '{$text}');"; // ...записывать данные
mysql_query($insert_sql); // отправляем данные в базу
?>
<html>
<head>
<META HTTP-EQUIV='Refresh' CONTENT='1,URL=index.html'> <!-- Возврат обратно -->
</head>
<body>
</body>
</html>


Объяснение работы заключено в комментариях. Файл (connect.php) с данными для аутинтефикации в базе, сделаем отдельно, чтоб его можно было подключать в других скриптах.

Почитать про trim(), $_REQUEST, mysql_real_escape_string(), INSERT INTO и mysqli_query().


Создаём connect.php.

В предыдущей части, мы создали базу с именем homelib и её пользователем homelib с паролем 12345


<?php
mysql_connect("localhost", "homelib", "12345"); // логин, пароль
mysql_select_db("homelib"); // имя бызы
?>


Все файлы должны лежать в одной папке.


Теперь введите данные и нажмите «Записать». В БД появится новая книжка.

Если что-то не работает, то проверьте права на файлы, логин и пароль.



Следующим этапом, будет вывод всех писателей и названий из БД, а также возможность читать определённую книгу.

Изменим существующий index.html вот так:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" href="style.css"  type="text/css">
<title>Главная</title>
</head>
<body>
<form action="rec.php" method="post">
<input type="text" name="author" placeholder="Автор" size="30"><b/>
<b/>
<input type="text" name="title" placeholder="Название" size="30"><b/>
<b/>
<input  type="text" name="text" placeholder="Текст" size="30"><b/>
<b/>
<input id="submit" type="submit" value="Записать"><b/>
</form>
<form method="post" action="allauthor.php">
<input id="submitover" type="submit" value="Показать всех"><b/>
</form>
</body>
</html>

Допишите в теги <b/> букву 'r'.

И дополним файл style.css


body{
width:400px;  
margin:15px auto; 
background-image: url('//istarik.ru/file/bg.png');
}

#submit{
width:200px;
height: 40px;
border:0px ;
background:#af87b1;
margin:5px 0px 10px 63px;
font-size: 18px;
color: #ffffff;
cursor: pointer;
box-shadow: 0px 5px 2px -1px rgba(0,0,0,0.5);
border-radius: 0;
}

#submitover{
width:200px;
height: 40px;
border:0px ;
background:#65c178;
margin:5px 0px 10px 63px;
font-size: 18px;
color: #ffffff;
cursor: pointer;
box-shadow: 0px 5px 2px -1px rgba(0,0,0,0.5);
border-radius: 0;
}

#submitback{
width:200px;
height: 40px;
border:0px ;
background:#65c178;
font-size: 18px;
color: #ffffff;
cursor: pointer;
box-shadow: 0px 5px 2px -1px rgba(0,0,0,0.5);
border-radius: 0;
}

#submitread{
width:200px;
height: 40px;
border:0px ;
background:#8491b7;
font-size: 16px;
color: #ffffff;
cursor: pointer;
box-shadow: 0px 5px 2px -1px rgba(0,0,0,0.5);
border-radius: 0;
}

#submit:hover, #submitover:hover, #submitback:hover, #submitread:hover{
box-shadow: 0px 2px 2px -1px rgba(0,0,0,0.6);
}

#Nknig{
width:100px;
margin:0 0 0 45px;
}


Получится так:



Не хватает обработчика нажатия на кнопку, это файл allauthor.php, сделаем его:


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Все авторы</title>
</head>
<body>
<?php
require 'connect.php'; // Подключает файл с логином/паролем и именем БД
mysql_set_charset('utf8'); // Устанавливает кодировку клиента
$sql_select = "SELECT * FROM polka1"; // Выбираем таблицу из которой читать данные
$result = mysql_query($sql_select); // Запрос к БД
$row = mysql_fetch_array($result); // Разбираем полученый массив 
do
{
  printf("<p>Номер книги: ".$row['id']."</p><p>Автор: ".$row['author']."</p><p>Название: ".$row['title']
  ."</p>----------------------------------------<b>");
}
while($row = mysql_fetch_array($result));
?>
<form method='post' action='read.php'><b>
<input id="Nknig" type='text' name='nk' placeholder="Номер книги"><b><b>
<input id='submitread'  type='submit' value='Читать...'><b><b>
</form>
<form method="post" action="index.html">
<input id="submitback" type="submit" value="На главную">
</form>
</body>
</html>

Читать про mysql_fetch_array().


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



Создадим обработчик (read.php) нажатия на кнопку «Читать», она будет выводить на отдельную страничку текст книги.

read.php


<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="Content-Type" content="text/html">
<link rel="stylesheet" type="text/css" href="style.css">
<title>Читать</title>
</head>
<body>
<?php
require 'connect.php';
mysql_set_charset('utf8');
$id = $_REQUEST['nk'];
$sql_select = "SELECT * FROM polka1 WHERE id='$id'";
$result = mysql_query($sql_select);
$row = mysql_fetch_array($result);
if($row) { printf($row['text']); }
else { echo ("Такой книги в базе нет"); }
?>
<form method='post' action='allauthor.php'><b/>
<input id='submitread'  type='submit' value="Вернуться к поиску"><b/><b/>
</form>
<form method="post" action="index.html">
<input id="submitback" type="submit" value="На главную">
</form>
</body>
</html>



Теперь если ввести в поле номер книги и нажать «Читать», то откроется страница с текстом.


Внизу будут кнопки возврата к поиску и на главную страницу.




Ну вот, Вы научились вводить и выводить данные со своей html-странички.

Материал написан для ознакомления с БД и не подходит для работы на сервере имеющем доступ в интернет, так как может быть подвержен sql инъекциям.



  • +254
  • 12269
Поддержать автора




Telegram-чат istarik

Задать вопрос по статье
Telegram-канал istarik

Известит Вас о новых публикациях






Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.