0 / 0 / 0
Регистрация: 25.10.2018
Сообщений: 28
MySQL

Вставка в бд множества значений из формы

15.11.2019, 04:00. Показов 2608. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте. Логику понимаю, а написать не могу.

Есть таблица с продуктами, которая выводится и к ней дополнительно генерируются два столбца: количество и чекбоксы.

Пользователь вводит количество и отмечает чекбокс.
Столбец с чекбоксами формируется так
PHP
1
$result .= "<td><input type='checkbox' name='buy_row[]' value='" . $element['id'] . "'></td>";
То есть у нас каждый чекбокс соответствует определенному товару по id.
Эти данные по нажатию кнопки уходят на скрипт, который считывает массив введенных значений количества
и считывает массив чекбоксов.
Для массива с чекбоксами:
PHP
1
2
3
4
$ids_to_buy = array();
foreach($_POST['buy_row'] as $selected){
        $ids_to_buy[] = $selected;
    }
Потом цикл, где последовательно читается массив и вносятся данные в таблицу. Другие данные у меня статичные, так что ими можно пренебречь.

Собственно вопросы:
1) Как формировать столбец с количеством, чтобы он соответствовал массиву чекбоксов?
2)Как реализовать считывание введенные данные с полей "количество"?
3)Как реализовать цикл на вставку?

Таблица вида:
id //primary
name //статичный, будет присваиваться из переменной $name сформированной заранее
count
product_id
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
15.11.2019, 04:00
Ответы с готовыми решениями:

Denwer вставка множества значений в базу
Всем привет! Столкнулся с такой проблемой, при попытке использовать такой код: $db = new PDO('sqlite:test.db'); ...

Вставка значений из формы в форму
Есть форма Выбор_оснастки нужно чтобы при двойном нажатии в поле Оснастка открывалась форма Оснастка_БИХ и при двойном нажатии на поле...

Вставка значений с поля формы и из таблиц
Добрый день! Есть 4 таблицы: allTable (id, reg, title, send_fk, sign_fk, type_fk) senders (id, name) signers (id, lastname) ...

4
88 / 66 / 24
Регистрация: 12.10.2019
Сообщений: 224
15.11.2019, 07:39
Лучший ответ Сообщение было отмечено digtosh как решение

Решение

можете например поля для данных формировать таким образом

PHP
1
$result .= "<td><input type='text' name='" . $element['id'] . "'  value=''></td>";
тогда в массиве:

PHP
1
2
3
4
foreach($_POST['buy_row'] as $selected){
        $ids_to_buy[] = $selected;
        $ids_count[] = ${$selected};
    }
Добавлено через 10 минут
что касается цикла на вставку, его можно сформировать прям в этом же цикле.
Перед циклом вы начинаете формировать запрос

PHP
1
$query = "INSERT INTO `ТАБЛИЦА` (`id`, `name`, `count`, `product_id`) VALUES ";

а цикл меняете

PHP
1
2
3
4
5
6
7
8
9
foreach($_POST['buy_row'] as $selected){
        $ids_to_buy[] = $selected;
        $ids_count[] = ${$selected};
        $query .= "('', $name, 'USD', '".${$selected}."', $selected),";
    }
 
$query .= rtrim($query, ",").";";
 
MYSQLi_QUERY($GLOBALS['link'],$query);
1
0 / 0 / 0
Регистрация: 25.10.2018
Сообщений: 28
18.11.2019, 03:59  [ТС]
Цитата Сообщение от Antonio_1982 Посмотреть сообщение
можете например поля для данных формировать таким образом
Сколько не пробовал - не получается.
Теперь два столбца формируются так:
HTML5
1
2
$result .= "<td><input type='number' name='" . $element['id'] . "'  value=''></td>";
$result .= "<td><input type='checkbox' name='buy_row[]' value='" . $element['id'] . "'></td>";
PHP
1
2
3
4
5
6
7
8
9
   $query = "INSERT INTO `tab2` (name,price,product_id) VALUES ";    
foreach($_POST['buy_row'] as $selected){
        $ids_to_buy[] = $selected;
        $ids_count[] = ${$selected};
        $query .= "($name,'".${$selected}."', $selected)"; //в вашей версии после $selected) стоит запятая. Я вообще не понял, зачем она там
 
    }
        $query .= rtrim($query, ",").";";
        MYSQLi_QUERY($link,$query);

Я пробовал добавить в сам цикл вот это
PHP
1
2
$query="INSERT INTO `tab2` (product_id) VALUES($selected)";
       MYSQLi_QUERY($link,$query);
И у меня занеслось в таблицу 2 записи, как раз id тех продуктов, которые я отметил чекбоксом
0
0 / 0 / 0
Регистрация: 25.10.2018
Сообщений: 28
20.11.2019, 02:36  [ТС]
Чуть разобрался в ответе выше и чуть дописав его все получилось.
Только единственное, что там лучше не использовать $query .= rtrim($query, ",").";";
Эта операция приведет к дублированию запроса и переменная $query будет состоять фактически из двух запросов INSERT, которые разделены запятыми.
Я решил проблему последней запятой в запросе грубо, но эффективно:
$query = substr($query, 0, -1);
В итоге из запроса удаляется лишняя запятая и все работает!
Вопрос решен,спасибо Antonio_1982
0
88 / 66 / 24
Регистрация: 12.10.2019
Сообщений: 224
21.11.2019, 08:20
Цитата Сообщение от digtosh Посмотреть сообщение
Только единственное, что там лучше не использовать $query .= rtrim($query, ",").";";
PHP
1
$query = rtrim($query, ",").";";
забыл убрать точку перед знаком равно
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.11.2019, 08:20
Помогаю со студенческими работами здесь

Вставка множества записей
Доброго времени суток. прошу помочь решить задачу по sql такого плана: Есть таблицы qqqpl(fond,nskv,...) и allfnd(mest,plosh,fond,....) ...

Вставка множества записей
Доброго времени суток. СУБД MySQL. Начала осваивать совсем недавно. Так что прошу помочь решить задачу такого плана: Есть таблицы...

Вставка множества картинок в ячейки
Здравствуйте, подскажите, пожалуйста. Есть много картинок в .pdf надо перенести их в ячейки Excel. Ячейки идут в 1 столбец, но некоторые...

Вставка значений из БД
SqlConnection con = new SqlConnection(@&quot;Data Source=FANTONI-PC\FANTONIEXPRES;Initial Catalog=baseofcoll;Integrated Security=True&quot;); ...

Вставка значений
у меня получился такой запрос: &quot;INSERT INTO `info1`(`name`, `pass`, `login`) (VALUES ,,)&quot; он должен вставить в NAME PASS LOGIN...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

Новые блоги и статьи
Отчёт о затраченных материалах за определенный период с макетом печатной формы
Maks 21.04.2026
Отчёт из решения ниже размещён в конфигурации КА2. Задача: разработка отчёта по затраченным материалам за определённый период, с возможностью вывода печатной формы отчёта с шапкой и подвалом. В. . .
Отчёт о спецтехнике находящейся в ремонте
Maks 20.04.2026
Отчёт из решения ниже размещен в конфигурации КА2. Задача: отобразить спецтехнику, которая на данный момент находится в ремонте. Есть нетиповой документ "Заявка на ремонт спецтехники" который. . .
Памятка для бота и "визитка" для читателей "Semantic Universe Layer (Слой семантической вселенной)"
Hrethgir 19.04.2026
Сгенерировано для краткого описания по случаю сборки и компиляции скелета серверного приложения. И пусть после этого скажут, что статьи сгенерированные AI - туфта и не интересно. И это не реклама -. . .
Запрет удаления строк ТЧ документа при определённом условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru