Для ввода данных обычно используется форма с полями. Для этого в html даже создали специальный тег FORM.
Принцип работы прост.
1.Пользователь заходит на сайт, видит текстовое поле или несколько текстовых полей, которые располагаются в форме.
2.Вводит в них какой-то текст (комментарий, логин, имя, картинку, постик и т.д.).
3.Нажимает кнопку отправить (submit) и форма отправляется на 2-ю страницу на обработку запроса, а затем отправляется в базу данных.
Сперва нужно создать в базе данных таблицу, куда будем отправлять (вставлять) данные. Называться таблица будет message
id | text | name |
В пустые ячейки мы будем вставлять данные.
id - номер строки
text - текст из поля textarea
name - текст из поля input
Создание формы
Тег form - переводиться с англ. яз. как ФОРМА. Как и было описано, в ней можно разместить маленькие поля input, кнопка отправки submit, большие текстовые поля textarea (нужны для ввода большого текста и форматирования на абзацы и отступы)
выглядеть форма в примере будет как-то так:
<form method="POST" action="post.php" > <!-- метод отправки данных post, страница, где вставим обработку запроса - post.php-->
<input name="ty" placeholder="как тебя зовут?"/><br /> <!-- тут гость будет вводить свое имя-->
<textarea name="te"cols="30" style="width:90%"required placeholder="место для комментария... " ></textarea> <!-- тут он введет сообщение-->
<input type = 'submit' name = 'submit' value= 'готово!' /> <!-- сюда он введет большое сообщение. Форматирование и абзацы сохранятся-->
</form>
Разберем пример формы.
Рядом с тегом FORM нужно прописать (method) метод отправки (есть только GET или POST).
get от post отличается лишь закрытостью и открытостью кода. В примере будет использоваться метод POST.
action - это страница, на которой мы разместим скрипт обработки запроса. Можно расположить его и в начале этой же странице, где расположена сама форма. В этом случае надо прописать название страницы. В ином случае нужно создать вторую страницу и прописать в action её название. В данном примере страница будет называться post.php.
input - это пол для ввода какого-то текста (вообще для небольшого, но максимальная длина не определена). Здесь же нужно присвоить полю уникальное имя (name).
placeholder - это подсказка для пользователя.
textarea - тоже поле для текста. Но его отличие в том, что в этом поле хранятся абзацы и длинные отступы в тексте.
submit - это ТИП кнопки или поля. Автоматически делает из поля или кнопки, кнопку-отправителя. value - для кнопки это название кнопки.
value можно использовать и в текстовых полях. Оно лишь автоматически заполняет поле написанным текстом.
Теперь нужно прописать сам скрипт обработки запроса.
<?php
$t = htmlspecialchars($_POST['te']);
$ty = htmlspecialchars($_POST['ty']);
//создаем переменные к именам полей, POST-ов из формы
$servername = "localhost";
$username = "root";// логин
$password = "";// пароль
$dbname = "games";// название вашей базы (не путать с названием таблицы)
// подключение к вашей базе данных
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Ошибка: " . mysqli_connect_error());
}
$sql =("INSERT INTO message (text, name) VALUES ('$t', '$ty')"); // запрос INSERT на ввод данных. Заметьте, что название переменных и полей должны идти строго по порядку.
mysqli_query($conn, $sql)){
echo "<font color='green'>Ваше сообщение добавлено в базу данных :)</font><br>"; // всё отлино. запрос отправлен
} else {
echo "Ошибка: Попробуй ещё раз" . mysqli_error($conn); // если нет, то пздц ребята....
}
mysqli_close($conn);
?>
Как видите, в начале создаем переменные. $_POST - означает, что переменная отправлена методом post, для метода get будет $_GET.
htmlspecialchars - простыми словами, эта штучка обрабатывает введенный текст из поля и ищет наличие простых вирусов.
Затем подключаемся к БД.
Затем создается текст для запроса. INSERT - значит ВСТАВИТЬ
В случае если всё вставится, то высветится соответствующее сообщение. В противном случае появится сообщение о том, что всё плохо.
В случае, если у вас возникнут проблемы с кодировкой и в таблице будет вставлен непонятный текст, то можно вставить в начале запроса следующие функции:
- header('Content-type: text/html; charset=windows-1251');
- и в самом запросе прописать iconv("UTF-8", "CP1251"
Опять же поэкспериментируйте с utf-8, cp-1251 - переставляйте их местами или же переставляйте местами сами функции header и iconv. Эти функции могут переконвертировать вашу кодировку в нормальную, но если это тоже не поможет, то обратитесь к моей статье про проблемы с кодировкой вот тутъ.
Вот пример того, как можно разместить header и iconv.
<?php
header("Content-type: text/html; charset=windows-1251");
//header
$t = htmlspecialchars($_POST['te']);
$ty = htmlspecialchars($_POST['ty']);
//header
header('Content-type: text/html; charset=windows-1251');
$servername = "localhost";
$username = "root";// логин
$password = "";// пароль
$dbname = "games";// название вашей базы (не путать с названием таблицы)
$conn = mysqli_connect($servername, $username, $password, $dbname);
if (!$conn) {
die("Ошибка: " . mysqli_connect_error());
}
// iconv
$sql =iconv("UTF-8", "CP1251","INSERT INTO message (text, name) VALUES ('$t', '$ty')");
mysqli_query($conn, $sql)){
echo "<font color='green'>Ваше сообщение добавлено в базу данных :)</font><br>"; // всё отлично. запрос отправлен
} else {
echo "Ошибка: Попробуй ещё раз" . mysqli_error($conn);
}
mysqli_close($conn);
?>