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 :: Значение в пункте списка select

 PHP.SU

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


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

> Описание: Значение в пункте списка select
oc01
Отправлено: 11 Октября, 2016 - 11:21:38
Post Id


Новичок


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


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




Есть:

CODE (htmlphp):
скопировать код в буфер обмена
  1. require_once("components/com_quickform/classes/buildform.php");
  2. $qf = new QuickForm();
  3.  
  4. echo $qf->getQuickForm((int)$params->get('id'));

Необходимо выбирать значение 'id' в выпадающем списке. Попробовал так:

CODE (htmlphp):
скопировать код в буфер обмена
  1. require_once("components/com_quickform/classes/buildform.php");
  2. $qf = new QuickForm();
  3. ?>
  4. <select echo $qf->getQuickForm((int)$params->get());>
  5.   <option value="0" >Перейти</option>
  6.   <option value="get('id')">1</option>
  7. <option value="get('id2')">2</option>
  8. </select>

Не работает. Как правильно сделать? Спасибо.
 
 Top
zypikov
Отправлено: 11 Октября, 2016 - 13:20:50
Post Id



Частый гость


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


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




oc01 пишет:

<select echo $qf->getQuickForm((int)$params->get());>

Цитата:
$qf->getQuickForm((int)$params->get());
. Это обращение к методу объекта который возвращает.. что?

Раз это список, то разве он не должен генериться в цикле?

oc01 пишет:
<option value="get('id')">1</option>
. Что это вообще за фигня с get('id')?


-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 11 Октября, 2016 - 13:38:41
Post Id


Новичок


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


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




zypikov пишет:
Раз это список, то разве он не должен генериться в цикле?

Да, список. Как его генерировать в цикл?
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $qf->getQuickForm((int)$params->get('id'));

выводит одну форму.
Если добавить:
CODE (htmlphp):
скопировать код в буфер обмена
  1. echo $qf->getQuickForm((int)$params->get('id2'));

то выводятся 2 разные формы.
Необходимо сделать выпадающий список для выбора одной из этих форм.
#3oc01, Сегодня, в 12:14
zypikov пишет:
Что это вообще за фигня с get('id')?

Согласен, что фигня.
Переделал, но все равно не работает, выпадает сразу весь список из id.
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?php  
  2. require_once("components/com_quickform/classes/buildform.php");
  3. $qf = new QuickForm();
  4. $id = $qf->getQuickForm((int)$params->get('id'));
  5. $id2 = $qf->getQuickForm((int)$params->get('id2'));
  6. ?>
  7. <select>
  8.   <option value="0" >Перейти</option>
  9.   <option value="<?php echo $id ?>">1</option>
  10. <option value="<?php echo $id2 ?>">2</option>
  11. </select>
 
 Top
zypikov
Отправлено: 12 Октября, 2016 - 15:54:21
Post Id



Частый гость


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


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




Помнится мне, что форма это элементы заключенные в тэг <form></form>. Метод getQuickForm возвращает именно его?

Если выбор всего из двух форм, то смысла нет в цикле.


-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 12 Октября, 2016 - 16:42:45
Post Id


Новичок


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


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




Нет. Тут форма подразумевает вывод форм из компонента, который формирует формы (обратной связи, калькуляции и т.д.). Эти формы состоят из своих полей (радио, селект, чексбокс и т.д.). Необходимо чтоб указанный выше код создал выпадающий список этих форм, при выборе одной из которых открылись ее поля. В данный момент открываются поля первой формы еще до ее выбора. Сам выбор не работает.
 
 Top
zypikov
Отправлено: 12 Октября, 2016 - 22:15:37
Post Id



Частый гость


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


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




Но он и не будет работать.
Пользователь должен видеть только одну форму, которая выбирается из списка?
И потом пых генерит судя по вашему коду сразу все формы. Значит изначально они должны быть скрыты для пользователя. По ходу ваш select должен в значения option принимать Id формы и соответственно скрипт должен искать форму на документе с соот. Id и показывать/ прятать ее.

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <select onchagne = "show_hide()">
  3.   <option value="0" >Перейти</option>
  4.   <option value="form1">1</option>
  5. <option value="form2">2</option>
  6. </select>
  7.  
  8.  
  9.  


А в show_hide() прописать соответ. действия.
И покажите код вот этого Улыбка

(Отредактировано автором: 12 Октября, 2016 - 22:18:10)



-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 17 Октября, 2016 - 12:44:04
Post Id


Новичок


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


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




Спасибо, что уделяете мне внимание!
Да, пользователь выбирает один из выпавших заголовков форм, после чего ниже открывается селект соответствующей формы.
Попробовал по Вашему совету с использованием js, но видать мне еще далеко до этого))). Список форм выпадает, но формы не открываются при выборе.
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <head>
  3.    <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  4.   <script>
  5.    require_once("components/com_quickform/classes/buildform.php");
  6.    $qf = new QuickForm();
  7.  
  8.    form1{$qf->getQuickForm((int)$params->get('id'))}
  9.    form2{$qf->getQuickForm((int)$params->get('id2'))}
  10.    
  11.  function show_hide(elem){
  12.             $('.blocks').not(elem).hide();
  13.             $(elem).toggle();
  14.    }
  15.  </script>
  16. </head>
  17.  
  18. <select>
  19.   <option value="0" >Перейти</option>
  20.   <option onchagne="show_hide('form1')">1</option>
  21.   <option onchagne="show_hide('form2')">2</option>
  22. </select>
  23.  


Сама функция из файла
Цитата:
components/com_quickform/classes/buildform.php
выглядит так:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. public function getQuickForm($id)
  3.         {
  4.                 $html = '';
  5.                 $doc = JFactory::getDocument();
  6.                 $db             = JFactory::getDBO();
  7.                 $user      = JFactory::getUser();
  8.                 $groups = $user->getAuthorisedViewLevels();
  9.                
  10.                 $db->setQuery(
  11.                         'SELECT * FROM #__quickform_projects
  12.                         WHERE published=1
  13.                         AND id = '.(int)$id
  14.                 );
  15.                 $project = $db->loadObject();
  16.                 if(!empty($project)){
  17.                         if(in_array($project->access, $groups)){
  18.                                 if($project->language == JFactory::getLanguage()->getTag() || $project->language == '*')
  19.                                 {
  20.                                         JHtml::_('jquery.ui');
  21.                                         if($project->cssstyle != 'none'){
  22.                                                 $doc->addStylesheet(JURI::root(true)."/components/com_quickform/assets/css/".$project->cssstyle);
  23.                                         }
  24.                                         $doc->addScript(JURI::root(true)."/components/com_quickform/assets/js/quickform.js");
  25.                                        
  26.                                         $db->setQuery(
  27.                                                 'SELECT * FROM #__quickform_forms
  28.                                                 WHERE def=1
  29.                                                 AND projectid = '.(int)$project->id
  30.                                         );
  31.                                         $form = $db->loadObject();
  32.                                         if(!empty($form)){
  33.                                                 $html .= $this->getFilds($form);
  34.                                         }
  35.                                 }
  36.                         }
  37.                 }
  38.                 else{
  39.                         $html .=JText::_( 'not found' );
  40.                 }
  41.                
  42.                 return ('<div class="qf2form"><form method="post" enctype="multipart/form-data">'.$html.'<input name="option" type="hidden" value="com_quickform" /><input name="id" type="hidden" value="'.$id.'" />'.JHtml::_('form.token').'<input name="formul" type="hidden" value="'.trim($project->calculator).'" /><input name="root" type="hidden" value="'.JURI::root().'" />'.$this->getQFlink().'</form></div>');
  43.         }
  44.  
  45. protected function getDataById($id) {
  46.                 $db             = JFactory::getDBO();
  47.                 $db->setQuery(
  48.                         'SELECT * FROM #__quickform_forms
  49.                         WHERE id = '.(int)$id
  50.                 );
  51.                 return $db->loadObject();
  52.         }
  53.  

(Отредактировано автором: 17 Октября, 2016 - 14:17:08)

 
 Top
zypikov
Отправлено: 23 Октября, 2016 - 15:09:05
Post Id



Частый гость


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


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




Я вообще-то писал событие show_hide() в тэге select. Зачем вы "залепили" его в option?


-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 23 Октября, 2016 - 20:33:29
Post Id


Новичок


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


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




Пробовал и в теге select и в option. Результата нет. В тегах option в интернете нашел от безысходности.
 
 Top
zypikov
Отправлено: 27 Октября, 2016 - 23:08:50
Post Id



Частый гость


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


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




Судя по пых-скрипту у вас формы не имеют идентификатора. В свой код я залепил для примера идентификатор (form1,2).
Где у вас Селект генерируется? Покажите его хтмл код


-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 28 Октября, 2016 - 09:53:49
Post Id


Новичок


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. protected function qSelect($field, $id){
  3.                 $label = $field->label;
  4.                 $class = (isset($field->class) && $field->class)?' class="'.$field->class.'"':'';
  5.                 $required = (isset($field->required) && $field->required)?' required':'';
  6.                 $custom = (isset($field->custom) && $field->custom)?' '.$field->custom:'';
  7.                 $options = (isset($field->options) && $field->options)?$field->options:false;
  8.                 $field->fildid = $id.'.'.$field->fildnum;
  9.                        
  10.                 $html = '';
  11.                 $html .= '<div class="qf2 qfselect'.($required?' req':'').'">';
  12.                         $html .= '<label class="qf2label">'.$label.($required?' *':'').'</label>';
  13.                        
  14.                         $html .= '<select name="qfselect[]"'.$class.$custom.$required.' data-settings="'.htmlentities('{"fildid":"'.$id.'.'.$field->fildnum.'"}').'">';
  15.                        
  16.                         $i=0;
  17.                         foreach($options as $option) {
  18.                                 $label = $option->label;
  19.                                 unset($option->label);
  20.                                 if(!$i)$i='';
  21.                                 $html .='<option value="'.$i.'" data-settings="'.htmlentities(json_encode($option), ENT_QUOTES, 'UTF-8').'">'.$label.'</option>';
  22.                                 $i++;
  23.                         }
  24.                        
  25.                         $html .= '</select>';
  26.                 $html .= '</div>';
  27.                
  28.                 return $html;
  29.         }
  30.  
 
 Top
zypikov
Отправлено: 30 Октября, 2016 - 22:22:17
Post Id



Частый гость


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


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




Чтобы я написал обработчик мне нужен Исходный код страницы, а именно фрагмент сгенерированный приведенным вами кодом. Вы же иногда смотрите, что пых "вывалил" на страницу?


-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 31 Октября, 2016 - 08:37:02
Post Id


Новичок


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


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




CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="sidebar_module sidebar_module_ color4 roundblock leftpos">
  3.                
  4.                              <h3 class="sidebar_module_heading">Заказ физической охраны</h3>                   
  5.                 <div class="sidebar_module_content">
  6. <head>
  7.    
  8.   <script>
  9.   require_once("components/com_quickform/classes/buildform.php");
  10.   $qf = new QuickForm();
  11.  
  12.   form1{$qf->getQuickForm((int)$params->get('id'))}
  13.   form2{$qf->getQuickForm((int)$params->get('id2'))}
  14.  
  15. function show_hide(elem){
  16.            $('.blocks').not(elem).hide();
  17.            $(elem).toggle();
  18.   }
  19. </script>
  20. </head>
  21.  
  22. <select>
  23.   <option value="0" >Перейти</option>
  24.   <option onchagne="show_hide('form1')">1</option>
  25.   <option onchagne="show_hide('form2')">2</option>
  26. </select>
  27.  </div>
  28.                
  29.           </div>
  30.  
  31.  


Только в этом случае формы не работают. Просто выпадает список, но ничего не выбирается.
(Добавление)
А это исходный код одной из форм, которая выбирается в обсуждаемом нами селекте:
CODE (htmlphp):
скопировать код в буфер обмена
  1.  
  2. <div class="sidebar_module sidebar_module_ color4 roundblock leftpos">
  3.                
  4.                              <h3 class="sidebar_module_heading">Заказ физической охраны</h3>                   
  5.                 <div class="sidebar_module_content"><div class="qf2form"><form method="post" enctype="multipart/form-data"><div class="qf2 qfselect"><label class="qf2label"></label><select name="qfselect[]" data-settings="{"fildid":"2.0"}"><option value="" data-settings="{"related":"","calculator":"*1"}">Выберите объект охраны</option><option value="1" data-settings="{"related":"4","calculator":"(110"}">Банк</option><option value="2" data-settings="{"related":"4","calculator":"(110"}">Бизнес-центр</option><option value="3" data-settings="{"related":"4","calculator":"(110"}">Элитный жилой дом</option><option value="4" data-settings="{"related":"4","calculator":"(110"}">Бутик</option><option value="5" data-settings="{"related":"4","calculator":"(110"}">Салон красоты</option><option value="6" data-settings="{"related":"4","calculator":"(110"}">Фитнес-клуб</option><option value="7" data-settings="{"related":"4","calculator":"(110"}">Гостиница</option><option value="8" data-settings="{"related":"4","calculator":"(110"}">Ювелирный салон</option><option value="9" data-settings="{"related":"4","calculator":"(110"}">Санаторий, пансионат</option><option value="10" data-settings="{"related":"4","calculator":"(110"}">Учебное, воспитательное заведение</option><option value="11" data-settings="{"related":"4","calculator":"(110"}">С массовым пребыванием людей</option><option value="12" data-settings="{"related":"4","calculator":"(95"}">Жилой многоэтажный дом</option><option value="13" data-settings="{"related":"4","calculator":"(95"}">Сетевая розничная торговля</option><option value="14" data-settings="{"related":"4","calculator":"(95"}">Кафе, бар</option><option value="15" data-settings="{"related":"4","calculator":"(95"}">Офисное помещение</option><option value="16" data-settings="{"related":"4","calculator":"(95"}">Стационарный с площадью более 5000 м2</option><option value="17" data-settings="{"related":"4","calculator":"(95"}">Промышленное предприятие</option><option value="18" data-settings="{"related":"4","calculator":"(95"}">Торговый комплекс</option><option value="19" data-settings="{"related":"4","calculator":"(80"}">Автостоянка</option><option value="20" data-settings="{"related":"4","calculator":"(80"}">Гаражный кооператив</option><option value="21" data-settings="{"related":"4","calculator":"(80"}">Автозаправочная станция</option><option value="22" data-settings="{"related":"4","calculator":"(80"}">Строительный объект</option><option value="23" data-settings="{"related":"4","calculator":"(80"}">Складские помещения</option></select></div><input name="option" type="hidden" value="com_quickform" /><input name="id" type="hidden" value="1" /><input type="hidden" name="70d3aa41ff6d9becfa570f94bf71a04c" value="1" /><input name="formul" type="hidden" value="" /><input name="root" type="hidden" value="http://xn--90aid1bp.com/" /><input name="qfcod" type="hidden" value="" /><div class="qfcapt nfl"><a href="http://juice-lab.ru" target="_blank">QuickForm</a></div></form></div></div>
  6.                
  7.           </div>
  8.  
  9.  

Прикреплено изображение (Нажмите для увеличения)
31-10-2016 9-34-41.jpg
 
 Top
zypikov
Отправлено: 01 Ноября, 2016 - 21:01:26
Post Id



Частый гость


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


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




Меня эта тема уже "тащит". Если приведенный вам код сохранить в файл и просмотреть в браузере, то там другой совсем Селектор получается.
Т.е. у вас (кстати Перейти к 1 или 2 лично мне ни о чем не говорят) получается что выбор 1 или 2 приводит к показу форм обернутых в контейнер див с классом qf2form? И таких формы 2?



CODE (javascript):
скопировать код в буфер обмена
  1.  
  2. function show_hide(sh){
  3.    var form_to_show = document.getElementsByClassName("qf2form");
  4.        sh_value = sh.value - 1;
  5.        if(sh_value == 0){
  6.            form_to_show[sh_value+1].style.visibility = 'hidden';
  7.            form_to_show[sh_value].style.visibility = 'visible';
  8.        }
  9.        if(sh_value == 1){
  10.            form_to_show[sh_value-1].style.visibility = 'hidden';
  11.            form_to_show[sh_value].style.visibility = 'visible';
  12.        }
  13.  
  14. }
  15.  
  16.  
  17.  
  18.  
  19.  


если селектор в таком виде:

CODE (html):
скопировать код в буфер обмена
  1.  
  2. <select name="oc1" size="1"  onchange="show_hide(this);">
  3. <option>Все формы</option>
  4. <option value="1">1</option>
  5. <option value="2">2</option>
  6. </select>
  7.  

Изначально у форм свойство visibility = hidden

(Отредактировано автором: 01 Ноября, 2016 - 21:04:19)



-----
У всего есть обратная сторона.
 
 Top
oc01
Отправлено: 02 Ноября, 2016 - 09:23:45
Post Id


Новичок


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


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




Спасибо, смысл теперь понятен. При открытии одной формы скрываются остальные.
zypikov пишет:
Если приведенный вам код сохранить в файл и просмотреть в браузере, то там другой совсем Селектор получается.

Все правильно-это реальный код. Перейти к 1 и 2 - это вроде как образца, чтоб не лезть в кучу слов.
Реально же код этого модуля выглядит так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. defined('_JEXEC') or die;
  4.  
  5. require_once("components/com_quickform/classes/buildform.php");
  6. $qf = new QuickForm();
  7. echo $qf->getQuickForm((int)$params->get('id1'));
  8.  

и показывается таким образом:

Если сделать так:
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. defined('_JEXEC') or die;
  4.  
  5. require_once("components/com_quickform/classes/buildform.php");
  6. $qf = new QuickForm();
  7. echo $qf->getQuickForm((int)$params->get('id1'));
  8. echo $qf->getQuickForm((int)$params->get('id2'));
  9. echo $qf->getQuickForm((int)$params->get('id3'));
  10.  

то получится:

Вывод. Селект этих трех форм должен выглядить где-то так:
CODE (html):
скопировать код в буфер обмена
  1.  
  2. <select name="oc1" size="1"  onchange="show_hide(this);">
  3. <option>Выберите услугу</option>
  4. <option value="<?php echo $qf->getQuickForm((int)$params->get('id1')) ?>">Физическая охрана</option>
  5. <option value="<?php echo $qf->getQuickForm((int)$params->get('id2')) ?>">Пультовая охрана</option>
  6. <option value="<?php echo $qf->getQuickForm((int)$params->get('id3')) ?>">Личная охрана</option>
  7. </select>
  8.  

Как здесь быть со свойством visibility = hidden?
Форм может быть больше.

(Отредактировано автором: 02 Ноября, 2016 - 09:25:58)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« JavaScript & VBScript »


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



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

 
Powered by ExBB FM 1.0 RC1. InvisionExBB