Помогите покомпактней решить задачу (обработка большого числа форм)

Pyatka-ubiyca

Новичок
Помогите покомпактней решить задачу (обработка большого числа форм)

Ситуация:

Заходим на страницу.. там выпадающие меню..
выбираем там один из нескольких вариантов ( их 7 )

далее на основе того что мы выбрали генерируетца (и выводится) уникальная форма.

ну это я сделаю switchem .. или набором условий. это не важно.

Но , мне нужно проверять данные в этой форме.. а формы все разные.. неписать же 7 кусков кода проверок?? или писать?? можно както все это дело сделать универсальным.. чтобы один блок кода проверял все формы?

вообщем предложите правильный метод.. уж больно не хочется, заниматься этой рутиной, наверняка можно как-то более логично сделать.
 

Pyatka-ubiyca

Новичок
Это к тому что все-таки придетца отдельно к каждой форме свою проверку писать??

жесть...
 

Фанат

oncle terrible
Команда форума
зачем писать к каждой форме обработчик, если у тебя всего семь полей?
написать обработку каждого поля и всё
 

Pyatka-ubiyca

Новичок
у меня 7 форм.. а не полей...

у меня выпадаюший список.. в котором мы выбираем какую форму будем заполнять.. (7 вариантов ) и все 7 ФОРМ разные.

с разным количеством полей.. и поля названы будут по разному.
 

Фанат

oncle terrible
Команда форума
ну и что? ОБЩЕЕ количество полей конечное ведь.
 

Pyatka-ubiyca

Новичок
А ну да.. тоесть вы имее ввиду сделать количество условий=общему количеству полей

ну да так канешно лучше..

а совсем компактно увы, я чусвутвую не получитца..
 

SaNeK

Новичок
Все поля в один массив. Например,
<input type="text" name="text[имя1]">...
<input type="text" name="text[имя2]">...

Проверку делаешь в цикле foreach по $_POST['text'] или $_GET['text']. Можно в эти же формы складывать hidden-поля с информацией по каждому полю и требованиям к данным в этих полях.
 

SaNeK

Новичок
Tor
Хм... И что же можно сделать с формой, у которой поля идут парами:
<input type="text" name="text[name]" value="" />
<input type="hidden" name="p[name]" value="0 (или 1)" />

И вот такой код будет их проверять:
PHP:
if(isset($_POST['text']) && is_array($_POST['text']) && count($_POST['text']) > 0 && count($_POST['text']) < 50)
{
    foreach($_POST['text'] as $field)
    {
        if(!isset($_POST['p'][$field]))
            die("error");

        $param = (int)$_POST['p'][$field]; // и еще может какую обработку, если совсем хочется...

        // легко можно заменить константами,
        // а можно заменить проверкой наличия этого значения в массиве
        if($param !== 0 && $param !== 1)
            die("error");

        $value = обработка($field);

        // поле обязательно для заполнения (т.к. флаг param == 1)
        if($param == 1 && $value == "")  // можно по-другому проверить на некорректность
            die("error");
    }
}
Может код не работает или я что-то забыл тут, но хотел передать лишь смысл.

Tor
Где здесь может быть "unsecure"? Может я чего-то не совсем понимаю? Обычная форма, можно вставить жесткую проверку и все. Шаг право-влево - расстрел.
 

SaNeK

Новичок
Tor
Посмотри в код и скажи мне, пожалуйста, зачем здесь нужны поля hidden? =)

-~{}~ 27.12.06 19:10:

SaNeK
Нет, я конечно понимаю, что можно изменить поле hidden и тем самым изменить свойства самого поля. Но это я предложил просто вариант...

У автора свои мозги есть, пусть он подумает, подойдет ему или нет
 

Pyatka-ubiyca

Новичок
Так и сделал, спасибо, обзываю имена полей элементами массива, никаких срытых полей не использую.
 

jonjonson

Охренеть
По мне проще отписать семь обработчиков для семи форм.
Так тестировать их работу проще.
Потом произвести рефакторинг, что бы удалить дублирование.
А потом использовать повторно наработанный код в новых проектах.

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

Любые абстракции хороши, если они вышли из "живого" требуемого кода и подтверждаются новым "живым" требуемым кодом.
 
Сверху