Листинг № 4 - Обработчик данных. Вывод на монитор.(page2.php)
<?php
echo "Выбранные данные: " .$_POST['data']."<br>";
?>
Как форма взаимодействует с базой данных
Я как то не мог сразу сообразить, какой пример описать. Решил, что наглядно и
полезно будет представить форму регистрации пользователя, ну в очень уж
облегчённом виде )). Только для демонстрации связи с базой данных формы.
Для реального сайта она вряд ли подойдёт хотя...
Листинг № 5 - Дамп БД. Таблица user (db_backup.sql)
-- phpMyAdmin SQL Dump
-- version 3.5.1
-- http://www.phpmyadmin.net
--
-- Хост: 127.0.0.1
-- Время создания: Окт 05 2013 г., 03:21
-- Версия сервера: 5.5.25
-- Версия PHP: 5.3.13
SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @[email protected]@CHARACTER_SET_CLIENT */;
/*!40101 SET @[email protected]@CHARACTER_SET_RESULTS */;
/*!40101 SET @[email protected]@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- База данных: `test`
--
-- --------------------------------------------------------
--
-- Структура таблицы `user`
--
CREATE TABLE IF NOT EXISTS `user` (
`user_id` int(6) NOT NULL AUTO_INCREMENT,
`name` varchar(30) NOT NULL,
`pass` varchar(30) NOT NULL,
`email` varchar(30) NOT NULL,
PRIMARY KEY (`user_id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=5 ;
--
-- Дамп данных таблицы `user`
--
INSERT INTO `user` (`user_id`, `name`, `pass`, `email`) VALUES
(1, 'SETTER', '12345', '[email protected]'),
(2, 'LPHPRU', '54321', '[email protected]'),
(3, 'ww', 'ee', '[email protected]');
/*!40101 SET [email protected]_CHARACTER_SET_CLIENT */;
/*!40101 SET [email protected]_CHARACTER_SET_RESULTS */;
/*!40101 SET [email protected]_COLLATION_CONNECTION */;
Ниже листинг файла конфигурации, проще сказать подключения к базе.
<?php
// Подключаемся к базе данных
require_once "config.php";
$langth = 30;
$arr = array(
'Не все значения заполнены.',
'Пароли не совпадают.',
'Ошибка! Длина строки выше '. $langth,
'email - не верно написан',
'Поздравляем! Вы успешно зарегистрированы.',
);
if($_POST['go'] == 'Регистрация'){
foreach($_POST as $key => $val){
// Проверяем, чтоб все поля были заполнены.
if(empty($val)){
$error = $arr[0];
} else {
// Проверяем длинну значений формы
if(strlen($val) > $langth){
$error = $arr[2];
}
}
}
// Если ошибок нет -
// заносим нового пользователя в БД
if(empty($error)){
$query = mysql_query("INSERT INTO user VALUES('', '".$name."', '".$pass."', '".$email."')");
if(!$query){$error = mysql_error();}
$error = $arr[4];
}
}
echo $error;
?>
<!--
Здесь данные из формы отправляются скрипту-обработчику, который находится в этом
же файле.
Это сделано только для примера. Реально обработчик должен находиться в другом
файле.
-->
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
<table border="0" cellpadding="5">
<tr>
<td align="right">Логин<sup>*</sup>:</td>
<td> </td>
<td align="left"><input name="name" type="text"></td>
</tr>
<tr>
<td align="right">Пароль<sup>*</sup>:</td>
<td> </td>
<td align="left"><input name="pass" type="text"></td>
</tr>
<tr>
<td align="right">Пароль (повторить)<sup>*</sup>:</td>
<td> </td>
<td align="left"><input name="pass2" type="text"></td>
</tr>
<tr>
<td align="right">E-mail<sup>*</sup>:</td>
<td> </td>
<td align="left"><input name="email" type="text"></td>
</tr>
<tr>
<td align="right"></td>
<td></td>
<td align="left"><input name="go" type="submit" name="go" value="Регистрация"></td>
</tr>
<tr>
<td align="right"> </td>
<td> </td>
<td align="left"> </td>
</tr>
</table>
</form>
Очень полезно, но маловато.(
Хотелось бы узнать больше о возможностях использования форм в php и его синтаксис.
Однако, всё понятно с первого раза, большое спасибо за статью.)
павел04.10.2013 19:22:45
Хотелось бы узнать: как форма взаимодействует с базой данных.
Ульяна27.02.2014 18:17:09
Ой, как я вам благодарна за такие замечательные уроки!! все очень понятно, и вообще все здорово))) Тысяча плюсов к карме и наилучшие пожелания!!! Если не сложно только, помогите, пожалуйста: я сохранила базу данных и с расширением sql, и с php, но когда я пытаюсь запустить последний описанный файл (у меня - forma-bd.php) - пишет, что потерял базу test. С чем может быть связано? И еще. В коде обязательно писать все, что до CREATE TABLE? (Я про файл бд)