Link in progress
Обо мне
foreach() цикл. Уроки по PHP

foreach() цикл. Уроки по PHP Закончим прошлый урок. Даже не уверен, нужен ли план к этому небольшому уроку. Сегодня мы допишем SQL команду для удаления данных из БД средствами PHP и HTML формы списка checkbox а также поговорим о цикле foreach().

Для того, что бы извлекать данные массива todelete мы будем использовать специальный для этого цикл foreach(). Простыми словами, foreach() – это специальный цикл для извлечения значений элементов массива. Как уже известно, цикл работает до тех пор, пока сохраняется какое-то условие, но в с циклом foreach() нет необходимости в проверке условия, так как PHP будет проходить все элементы массива один за другим. Вспомните, как работает цикл while. Для работы цикла foreach(), нужно указать массив и переменную, которой будут присваиваться значение элементов массива каждый раз прохождения цикла. Например, если у вас массив сохранен в переменной $works, тогда код вывода каждого из элементов будет таким:

1
2
3
foreach($works as $work) {
    echo $work;
}

Сложного ничего нет, посмотрите код и поэкспериментируйте с ним.

1
2
// Покажем, какие именно ID были удалены из БД
echo $delete_id . ' ';

Вот примерно так, должен выглядеть код файла dell_mailer.php:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
//Подключаемся к БД
    $connect = mysqli_connect('hostname', 'login', 'pass', 'BDname', ) or die ('Нет подключения к базе данных');
    mysqli_query($connect, "SET CHARACTER SET 'utf8'");
       
// Удаляем выбранных подписчиков
    if (isset($_POST['delete'])) {
        foreach ($_POST['todelete'] as $delete_id) {
            echo $delete_id . ' ';
        $query = "DELETE FROM store_list WHERE id=$delete_id";
        $result = mysqli_query($connect, $query) or die ('Не удалось записать данные в БД');
        };
        echo '<span class="ok">Выбранные подписчики удалены!</span><br />';
        };

//Выводим список всех подписчиков
    $query = "SELECT * FROM store_list";
    $result = mysqli_query($connect, $query);
    while ($checkdell = mysqli_fetch_array($result)) {
        echo '<input type="checkbox" value="' . $checkdell['id'] . '" name="todelete[]">';
        echo $checkdell['first_name'];
        echo ' ' . $checkdell['last_name'];
        echo ' ' . $checkdell['email'];
        echo '<br />';
    };
// Закрываем соединение с БД
    mysqli_close($connect);

Вывод удаленных ID не обязательно, его можно удалить.

Несколько слов о главном:

1
2
3
- проверяем, была ли нажата кнопка формы на удаление if (isset($_POST['delete']));
- ищем в суперглобальном переменной массив todelete, извлекаем значение элементов и записываем их в переменную $delete_id. foreach ($_POST['todelete'] as $delete_id)
- создаем SQL запрос на удаление из таблицы store_list, где в колонке id совпадение с данными переменной  $delete_id. $query = "DELETE FROM store_list WHERE id=$delete_id".

Значения, которые попадут в массив todelete – те, который были отмечены в списке. Представьте себе, что у вас есть 3 записи в базе данных. Первая запись имеет в колонке ID число 32, вторая 43, третья 46. Почему числа не 32, 33 и 34? Ответ вы найдете в прошлом уроке. Нам нужно удалить первую и третью запись. В списке мы их выбираем и жмем кнопку удалить. В массив todelete попадают номера 32 и 46. Дальше цикл foreach() извлекает их и записывает в переменную $delete_id. А где нам пригодится переменная $delete_id? Правильно, для sql запроса удаления. Получается, что SQL запрос получил цифру ID колонки каждый проход цикла. Дальше вы и сами уже можете сказать, что происходит.

На этом урок будем считать оконченным. Мы уверено приближаемся к статусу Junior PHP Developer. Следующие уроки будут более сложными, но у нас рубрика «Учим вместе» и вы всегда сможете спросить о непонятном моменте в комментариях.

С Уважением и надеждой, Ваш ProIN!

Скачать файлы урока:
Lessons_filles_all

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

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

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