Форум программистов, компьютерный форум, киберфорум
PHP: базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/6: Рейтинг темы: голосов - 6, средняя оценка - 4.67
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288

Запись в mysql из множества текстовых полей POST

19.11.2015, 11:57. Показов 1219. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день! Возникла задача добавить в базу данных из формы, просто добавить данные из формы не проблема, ну там где пару форм.

Пр.1
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
    require_once 'lib/db.php';//Соединяемся с БД
    if(isset($_POST['submit'])){
        $this1 = $_POST['this1'];
        $this2 = $_POST['this2'];
        $this3 = $_POST['this3'];
        $query = "INSERT INTO `these` (`this`) VALUES ('$this1'), ('$this2'), ('$this3')";
        $res = mysqli_query($db, $query);
        
        if($res){
            echo 'Yes';
        }else{
            echo 'No';
        }
    }
?>
HTML5
1
2
3
4
5
6
<form method="POST" action="#">
    Данные 1: <input type="text" name="this1">
    Данные 2: <input type="text" name="this2">
    Данные 3: <input type="text" name="this3">
    <input type="submit" name="submit" value="Записать">
</form>
В первом примере post данный не много ну на скидку скажем их будет всего то 10, мне бы узнать а если в пост данный скажем более 50-ти данных.

Пр.2
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
    require_once 'lib/db.php';//Соединяемся с БД
    if(isset($_POST['submitN'])){
        $this1 = $_POST['this1'];
        $this2 = $_POST['this2'];
        $this3 = $_POST['this3'];
        $this4 = $_POST['this4'];
        $this5 = $_POST['this5'];
        $this6 = $_POST['this6'];
        $this7 = $_POST['this7'];
        $this8 = $_POST['this8'];
        /*$this... = $_POST['this...'];*/
        $thisN = $_POST['thisN'];
        $query = "INSERT INTO `these` (`this`) VALUES ('$this1'), ('$this2'), ('$this3'), ('$this4'), ('$this5'), ('$this6'), ('$this7'), ('$this8'), "./*('$this...'),*/." ('$thisN')";
        $res = mysqli_query($db, $query);
        
        if($res){
            echo 'Yes';
        }else{
            echo 'No';
        }
    }
?>
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
<form method="POST" action="#">
    Данные 1: <input type="text" name="this1">
    Данные 2: <input type="text" name="this2">
    Данные 3: <input type="text" name="this3">
    Данные 4: <input type="text" name="this4">
    Данные 5: <input type="text" name="this5">
    Данные 6: <input type="text" name="this6">
    Данные 7: <input type="text" name="this7">
    Данные 8: <input type="text" name="this8">
    <!--Данные ...: <input type="text" name="...">-->
    Данные N: <input type="text" name="thisN">
    <input type="submit" name="submitN" value="Записать">
</form>
И вот вопрос это правильно? Если нет подскажите более разумный и правильный вариант ото форма для записи в БД очень большая. Объяснил как мог недеюсь поймете о чем идет речь
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
19.11.2015, 11:57
Ответы с готовыми решениями:

Запись в массив чисел из текстовых полей и их вывод
Здравствуйте, я уже писал две темы, но вопрос так и остался не решённым. Через цикл выводится некоторое число тестовых полей (как ячейки...

Как произвести запись в БД с текстовых полей на форме или других контроллов
пишу на vb10, подскажите плиз как мне записывать введеную в текстовые поля инфу в бд? к примеру фио в таблицу1, Данные родителей в таблицу...

Как выбрать запись и все значения её полей по максимальному значению одного из полей?
Как выбрать запись и все значения её полей по максимальному значению одного из полей? Код. Форма &quot;фрм_03_03_Студенты_Лент&quot;....

9
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
19.11.2015, 12:38
Как-то так:

PHP/HTML
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
27
28
29
<?
    require_once 'lib/db.php';//Соединяемся с БД
    if(!empty($_POST['this']))
    {
        $values = array();
        foreach($_POST['this'] as $value)
            $values[] = "('" . mysqli_escape_string($db, $value) . "')"; // Экранирование данных для защиты от SQL-инъекций
        
        $values = explode(',', $values);
        
        $query = "INSERT INTO `these` (`this`) VALUES $values";
        $res = mysqli_query($db, $query) or die(mysqli_error($db));
        
        echo $res ? 'Yes' : 'No';
    }
?>
<form>
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="text" name="this[]" />
    <input type="submit" />
</form>
1
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
19.11.2015, 12:41  [ТС]
Jodah, Так начальная картина ясна, благодарю, так же если POST будет пустым я смогу применить к нему unset не так ли ?
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
19.11.2015, 12:43
Лучший ответ Сообщение было отмечено Monster-95 как решение

Решение

Monster-95, можно исключить пустые поля:

PHP
1
2
3
foreach($_POST['this'] as $value)
    if(mb_strlen(trim($value)))
        $values[] = "('" . mysqli_escape_string($db, $value) . "')";
1
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
19.11.2015, 12:44  [ТС]
Jodah, А вот это уже вообще класс, просто не сразу вспомнил про trim, благодарю выручили.
0
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
23.11.2015, 19:27  [ТС]
Jodah, Получилось только сегодня проверить предложенные вами вариант, и к сожалению нечего не получилось уже час вожусь но нечего не выходит, проблема с
PHP
1
$values = explode(',', $values);
Warning: explode() expects parameter 2 to be string, array given in
А в базу добавляется пустое значение.

Весь код
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
27
28
29
30
31
<?php
    require_once "db.php";  
}
    
    if($_POST['submit']){
        
        if(!empty($_POST['this'])){
            
            $values = array();
            
            foreach($_POST['this'] as $value)
            
            if(mb_strlen(trim($value)))
                
                $values[] = "('". mysqli_escape_string($db, $value) ."')";          
            
            $values = explode(",", $values);    
            
            
            print_r ("<pre>".$values."</pre>");
            
            
            $query = "INSERT INTO `groups` (`groupName`) VALUES ('$group')";
            $res = mysqli_query($db, $query) or die(mysqli_error($db));
            echo $res ? 'Yes' : 'No';
            
        }
        
    
    }
?>
HTML5
1
2
3
4
5
<form action="#" method="POST">
    1 <input type="text" name="this[]" /><br>
    2 <input type="text" name="this[]" /><br>
    <input type="submit" name="submit" />
</form>
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
23.11.2015, 19:50
Monster-95, прошу прощения, там implode должна быть вместо explode. Первая превращает массив в строку (что нам и нужно), вторая наоборот строка -> массив.
1
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
23.11.2015, 19:58  [ТС]
Jodah, Попробовал но теперь же в бд записывается просто пустое значение, и только одно пустое значение, а не две пустых хотя формы две, не понимаю почему записывается пустое значение в бд

Добавлено через 3 минуты
Jodah, Все разобрался просто не подставил нужную переменную спасибо большое!
0
Эксперт PHP
3899 / 3237 / 1353
Регистрация: 01.08.2012
Сообщений: 10,909
23.11.2015, 20:03
Monster-95, вы подставляете $group, а нужно $values и скобки там не нужны - они на 15-ой строчке уже генерируются. Так должно работать:

PHP/HTML
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
27
28
29
<?
error_reporting(E_ALL); // Вывод всех ошибок
 
require_once "db.php";  
    
if(isset($_POST['submit']))
{
    if(!empty($_POST['this']))
    {
        $values = array();
        
        foreach($_POST['this'] as $value)
            if(mb_strlen(trim($value)))
                $values[] = "('". mysqli_escape_string($db, $value) ."')";          
        
        $values = implode(",", $values);    
        
        $query = "INSERT INTO `groups` (`groupName`) VALUES $values";
 
        $res = mysqli_query($db, $query) or die(mysqli_error($db));
        echo $res ? 'Yes' : 'No';
    }
}
?>
<form action="#" method="POST">
    <input type="text" name="this[]" /><br>
    <input type="text" name="this[]" /><br>
    <input type="submit" name="submit" />
</form>
0
 Аватар для Monster-95
53 / 53 / 26
Регистрация: 05.02.2013
Сообщений: 288
23.11.2015, 20:08  [ТС]
Jodah, Еще раз благодарю все супер работает.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.11.2015, 20:08
Помогаю со студенческими работами здесь

Объединение текстовых полей
Ребята, прошу помощи. В запросе есть фрагмент, который объеденяет в одно поле три поля . .+' '+.+' '+. AS AdrБеда такая, когда в поле,...

Индекс текстовых полей
Всем привет! На форме есть текстовые поля всего 10 шт. Имена txtData(Index).Text Вопрос, как определить, что на каком-то из полей...

Обработка текстовых полей
Доброго времени суток! Вопрос: на форме1 есть 3 текстовых поля. Как при нажатии на кнопку эти значения передать на форму2, посчитать их...

Очистка текстовых полей
Друзья, я только начал учиться. Поэтому вопрос Простейший. Итак, 2 текстбокса 2 кнопки. Нажатием &quot;Command1&quot; я задаю в...

Сложение текстовых полей
Господа, помогите пожалуйста! Задача: Составить название номенклатуры, т.е. соединить разные поля одной таблицы в одно текстовое поле....


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru