HTML-форма и запрос на добавление в БД

Bartman

Новичок
HTML-форма и запрос на добавление в БД

Здравствуйте!
Есть обычная html-форма с некоторым количеством полей. Имена полей в форме - такие же как имена полей в таблице. Форма передается скрипту методом пост. После ее заполнения и отправки необходимо передать данные в ф-ю, которая вставит новую запись в таблице БД.

При отправке формы в настоящий момент я передаю в функцию глоб. массив $_POST, в цикле пробегаю по нему, ключи становятся именами полей, переданные значения для каждого ключа - значением в поле. После того как цикл пробежит по всему массиву на выходе получаю строку-запрос INSERT.

У меня вопрос в следующем. Положим, в массиве $_POST после отправки формы содержится:

Array
(
[name] => Вася
[fam] => Пупкин
[nick] => Vasya
[sitename] => Имя сайта
[id] => 2
[description] => Описание
[submit] => Отправить
)

Для заливки в БД мне не нужно поле [submit] (в примере - последнее). Каким образом можно было бы задавать только те поля, которые нужны?

Есть идея в скрипте вручную формировать новый массив, содержащий только те поля, кот. нужны. Но может быть есть более красивое и более универсальное решение?
 

alpine

Новичок
>> [submit] => Отправить
этому полю в форме не нужно писать
<input type="submit" name="submit" value="submit">
, а нужно писать
PHP:
<input type="submit" value="submit">
>> в цикле пробегаю по нему, ключи становятся именами полей
можно в том же цикле делать
PHP:
if ('submit' == $key) continue;
но это уже костыль.
 

Bartman

Новичок
Автор оригинала: alpine
>> [submit] => Отправить
этому полю в форме не нужно писать name
тоесть писать <input type="submit" value="submit">
Да, с этим согласен.
А как быть, если нужно залить в БД все поля кроме [nick] и [description]?
 

alpine

Новичок
>> А как быть, если нужно залить в БД все поля кроме [nick] и [description]?
У тебя там что форма универсальная ?
 

Bartman

Новичок
Автор оригинала: alpine
>> А как быть, если нужно залить в БД все поля кроме [nick] и [description]?
У тебя там что форма универсальная ?
Нет, форма не универсальная. Просто иногда возникает необходимость заливки в базу выборочных полей. И я хочу попробовать найти наиболее оптимальное решение описанного выше.
 

alpine

Новичок
Bartman
Кстати, а когда ты проверку данных делаешь которые из формы пришли ?
 

Bartman

Новичок
Автор оригинала: Фанат
очень красивое решение.
Это просто вариант.

В качестве еще одного варианта - можно создать массив, но не в ручную, а достать список полей в таблице, получить массив и потом смотреть, если пришедшее значение есть в списке полей, то добавить его в строку запроса.

-~{}~ 03.07.04 00:32:

alpine
Как раз перед тем как запостить в БД.

1. сначала проверяю данные
2. если всё корректно -> пост данных в базу
 

alpine

Новичок
Bartman
Ты передаешь $_POST в функцию, в цикле его вертишь на выходе запрос к базе, затем проверяешь данные(запрос к базе) и кладешь в базу(проверенный запрос)

я ничего не упустил ?!
 

Фанат

oncle terrible
Команда форума
не стоит доверять пришедшему от пользователя, кем бы он ни был.
 

Bartman

Новичок
Автор оригинала: alpine
Bartman
Ты передаешь $_POST в функцию, в цикле его вертишь на выходе запрос к базе, затем проверяешь данные(запрос к базе) и кладешь в базу(проверенный запрос)

я ничего не упустил ?!
Нет, не так.
1. после передачи данных они проверяются на корректность и правильность
2. если все поля введены корректно - вызываю ф-ю Add_Record($_POST) которая пробегает по массиву и формирует запрос к базе
 

Фанат

oncle terrible
Команда форума
1. для проверки надо поля перечислять.
2. пришедшему из формы нельзя доверять.
и не все поляв таблице юзер может редактировать.

лучше всего руками задавать список полей.
часто у одной и той же формы он может меняться.
 

Bartman

Новичок
Автор оригинала: Фанат
1. для проверки надо поля перечислять.
2. пришедшему из формы нельзя доверять.
и не все поляв таблице юзер может редактировать.

лучше всего руками задавать список полей.
часто у одной и той же формы он может меняться.
Да, я не спорю, что поля для проверки надо проверять :)
Собственно, так и делаю: сначала всё проверяю, как только проверил и ошибок не возникло - надо часть данных положить в базу, а часть, скажем, записать в файл.

В качестве предложения хочу написать еще об одном варианте: можно в форме поля, которые нужно постить в БД назвать, к примеру "FORM_name", т.е. имя будет состоять из префикса "FORM_" и имени поля (кот. совпадает с именем поля в таблице). При постинге можно пробегать по массиву $_POST, проверять наличие ключей "FORM_что-то" и парсить только эти ключи. Разумеется, для нужных полей надо будет до поста в базу обрезать префиксы.

Насколько приемлем такой вариант по вашему мнению?
 

Фанат

oncle terrible
Команда форума
по нашему мнению, это изврат.
почему - я ПОДРОБНО описал выше.
 

Bartman

Новичок
Автор оригинала: Фанат
по нашему мнению, это изврат.
почему - я ПОДРОБНО описал выше.
Фанат, ты написал, что "часто у одной и той же формы список полей может меняться".

Не совсем с тобой согласен, т.к. если это отлаженая, хорошо продуманая форма, нет необходимости часто менять ее поля. Да, я не исключаю возможность того, что когда-то может потребоваться добавить/удалить/подредактировать какое-то поле, но имхо это не частое явление.
 

Фанат

oncle terrible
Команда форума
я написал:
. пришедшему из формы нельзя доверять.
не все поля в таблице юзер может редактировать.
этих двух утверждений достаточно человеку, который обладает логическим мышлением.
с остальными беседовать бесполезно в принципе.
 
Сверху