Link in progress
Обо мне
PHP уроки. PHP обработчик HTML формы

php обработчик формы Сегодня в уроке PHP мы будем учится делать рассылку E-mail сообщений функцией mail() из базы данных MySQL. Познакомимся с mysqli_fetch_array(). Это логическое продолжение урока PHP уроки. Форма рассылки E-mail сообщений

Первое что нам нужно – это создать файл add_mailer.php который и будет выступать в роли php обработчик HTML формы. Заполним кодом наш только что созданный файл. Первое что нам нужно – это подключение к базе:

1
$connect = mysqli_connect('hostname', 'login', 'pass', 'BDname', ) or die ('Нет подключения к базе данных');

Вторым шагом будет запись данных в переменный, которые отправляются на php обработчик HTML формой:

1
2
$subject = $_POST['subject'];
$body_text = $_POST['body_text'];

Что еще нам нужно? Для ответа, нам нужно понимать, что должна содержаться функция mail(). Немного этот вопрос мы затрагивали в первых уроках тут или тут. Нам еще нужно указать адресата, кому мы будем отправлять письма. Можно создать переменную, например:

1
2
3
4
$to = “glo@gla.net”;

Вставить все в функцию mail():
mail ($to, $subject, $body_text);

и выполнить дынный обработчик. Все будет отлично и письмо на адрес glo@gla.net успешно отправится. Нам же нужно отправить письма всем подписчикам, которые есть в базе данных в таблице store_list колонка email. То есть нужно как то запустить цикличность, что бы письма по очереди отправлялись всем подписчикам. Есть функция mysqli_fetch_array().

Несколько слов о этой функции:

1
2
3
при выполнении запроса к базе типа
$query  = ”SELECT * FROM store_list”;
$result = mysqli_query($connect, $query);

Переменная $result не имеет в себе непосредственно полученные данных из БД. В ней хранится временный идентификатор запроса MySQL. Если попробовать вывести переменную $result через echo, мы увидим что-то подобное Resource id #1 или вообще пустую страницу. Что бы получить данные, результаты запроса, а не номер запроса, в этом нам поможет mysqli_fetch_array().. Пробуем:

1
2
3
$row = mysqli_fetch_array($result);
$row = mysqli_fetch_array($result);
$row = mysqli_fetch_array($result);

Каждый раз, когда на сервере выполняется mysqli_fetch_array() запись данных из рузультатов запроса сохраняется в массиве $row. Таким образом, 3 раза вызвав функции mysqli_fetch_array() она извлекает три запись, начиная с первой в БД и записывает в переменную $row. Если, например, назвать $row1, $row2 и $row3 – тогда в каждой из переменных будет записаны данные очерёдности вызова функции mysqli_fetch_array: в первом – первая запись, втором – вторая запись из бд и т.д. Что бы вывести данные через echo, нам нужно указать, какие именно данные из массива нам нужны. Сам массив имеет идентификаторы имен колонок из БД и их значения. Например нам нужен email:

1
echo $row[email];

Если мы вызвали три раза функцию mysqli_fetch_array($result); — тогда в переменной $row буде значение последнего вызова, а это у нашем случае – 3 строка в таблице store_list плюс мы указали, что нам конкретно нужны данные колонки email.

Что бы вывести все три колонки, нужно написать примерно такое:

1
2
3
4
5
6
7
8
$row = mysqli_fetch_array($result);
echo $row[first_name] . ' ' . $row[last_name] . ' ' . $row[email] . '<br />';

$row = mysqli_fetch_array($result);
echo $row[first_name] . ' ' . $row[last_name] . ' ' . $row[email] . '<br />';

$row = mysqli_fetch_array($result);
echo $row[first_name] . ' ' . $row[last_name] . ' ' . $row[email] . '<br />';

А если записей в БД более 100шт, тогда нужно 100 раз дублировать этот код, что бы отобразить все 100 записей из БД? При помощи этой функции — да! Конечно, такой способ при динамических БД не актуален, для этого хорошо будет использовать цикл while, о котором мы и поговорим на следующем занятии.

До скорой встречи, с уважение, ProIN!

Файлы урока:
Скачать (1.8 kb)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Max quality, min price, min time expenditure
Send me a message to: work@glogla.net
Portfolio