Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Автосоздание input:select:textarea и обработка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
maragon
Отправлено: 01 Апреля, 2015 - 18:38:09
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




Интересует такой вопрос, имеется бд (forms) со значениями
Цитата:
name, type (имя, тип: input, select, textarea)

При выводе из бд обрабатываю по типу, если input -> создаю поле для ввода текста с заданными значениями (<input name="name"> и т.д.
Как эти поля вывести - дело понятно, а как их обрабатывать? Чтобы каждый раз ручками не дописывать что-то вроде ( if(isset("name") AND (!empty("name")){ все окей! } )


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Faraon-san
Отправлено: 01 Апреля, 2015 - 19:18:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 318
Дата рег-ции: Сент. 2013  


Помог: 8 раз(а)




как выводишь так и проверяй, через цикл.
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Апреля, 2015 - 19:20:12
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну, типа я вот так запилил:

Это родитель всех форм: https://github[dot]com/Romandry/phps[dot][dot][dot]/common/Form.php
Это форма регистрации: https://github[dot]com/Romandry/phps[dot][dot][dot]RegisterForm.php
Это её использование (вызов): https://github[dot]com/Romandry/phps[dot][dot][dot]ntroller.php#L53
Это фильтры (ессно можно добавлять новые): https://github[dot]com/Romandry/phps[dot][dot][dot]n/common/filters
Это валидаторы (тоже можно новые добавлять): https://github[dot]com/Romandry/phps[dot][dot][dot]ommon/validators

Т.е. просто описываю цепочку фильтров и валидаторов.
Кроме того в методе валидации потомка можно сделать чонить кастомное.

В любом случае у тебя должен быть какой-то конфиг валидации, хотябы для типов, даже если не известно сколько и каких их приедет.
 
 Top
maragon
Отправлено: 01 Апреля, 2015 - 19:27:22
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




О как, спасибо! Покурю Закатив глазки


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
DeepVarvar Супермодератор
Отправлено: 01 Апреля, 2015 - 19:38:49
Post Id



Активный участник


Покинул форум
Сообщений всего: 10377
Дата рег-ции: Дек. 2008  
Откуда: Альфа Центавра


Помог: 353 раз(а)




Ну вот с работы, конфиг динамических полей формы, которая создается в админке:
PHP:
скопировать код в буфер обмена
  1.  
  2.     /**
  3.      * $_fieldRules
  4.      *
  5.      * Fields rules for represented types of data and extras
  6.      **/
  7.  
  8.     private $_fieldRules = array(
  9.         'text' => array(
  10.             'allowed_data_types'     => array('varchar', 'bigint', 'decimal'),
  11.             'with_extra'             => false,
  12.             'can_choose_is_required' => true,
  13.             'is_required_by_default' => false
  14.         ),
  15.         'textarea' => array(
  16.             'allowed_data_types'     => array('text'),
  17.             'with_extra'             => false,
  18.             'can_choose_is_required' => true,
  19.             'is_required_by_default' => false
  20.         ),
  21.         'select' => array(
  22.             'allowed_data_types'     => array('bigint'),
  23.             'with_extra'             => true,
  24.             'can_choose_is_required' => true,
  25.             'is_required_by_default' => false
  26.         ),
  27.         'radio' => array(
  28.             'allowed_data_types'     => array('bigint'),
  29.             'with_extra'             => true,
  30.             'can_choose_is_required' => false,
  31.             'is_required_by_default' => true
  32.         ),
  33.         'checkbox' => array(
  34.             'allowed_data_types'     => array('bigint'),
  35.             'with_extra'             => false,
  36.             'can_choose_is_required' => false,
  37.             'is_required_by_default' => false
  38.         )
  39.     );
 
 Top
maragon
Отправлено: 01 Апреля, 2015 - 20:08:43
Post Id



Посетитель


Покинул форум
Сообщений всего: 340
Дата рег-ции: Февр. 2011  


Помог: 2 раз(а)




На коленке Улыбка
PHP:
скопировать код в буфер обмена
  1.  
  2. <form action="" method="POST">
  3. <?PHP
  4. $inputs = array(
  5.         //Поле текстовое
  6.         1 => array(
  7.         name => 'name-input',
  8.                 type => 'input'),
  9.         //Поле select
  10.         2 => array(
  11.         name => 'name-select',
  12.         type => 'select',
  13.         data => array(
  14.                                 1 => 'option 1',
  15.                                 2 => 'option 2'
  16.                                 )
  17.                 )
  18. );
  19. foreach($inputs AS $id => $row){
  20. if($row['type'] == "input"){
  21. $content .= "<input type='text' name='".$row['name']."'>";
  22. } elseif($row['type'] == "select"){
  23. $content .= "<select name='".$row['name']."'>";
  24. $content .= "<option value='0'>-- Выбрать --</option>";
  25. foreach($row['data'] AS $data => $id){
  26. $content .= "<option name='".$row['name']."' value='".$id."'>".$data."</option>";
  27. }
  28. $content .= "</select>";
  29. }
  30. }
  31. echo $content;
  32. ?>
  33. <input type="submit" name="go" value="Отправить">
  34. </form>
  35. <?PHP
  36. if(isset($_POST['go'])){
  37. foreach($inputs AS $id => $row){
  38. if(isset($_POST[$row['name']]) AND !empty($_POST[$row['name']])){
  39. echo "Поле ".$row['name']." заполнено<br>";
  40. } else {
  41. echo "Заполните поле ".$row['name']."<br>";
  42. }
  43. }
  44. }
  45. ?>
  46.  

Дальше стоит плясать?


-----
https://vk[dot]com/tvoycase_ru - Твой чехол со своим дизайном
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB