2013-06-27 3 views
0

Я пытаюсь решить проблему, используя конкретный5 Пользователь хочет, чтобы блок мог отображать информацию о книге, выбранной из базы данных все на месте в меню выбора я могу заполнить выпадающий список заголовками в базе данных, но при выборе книги блок просто отображает значение индекса в массиве опций меню выбора.Получить выбранный элемент из выпадающего списка в конкретном5

Например, если массив выглядел что-то вроде

0 => Гарри Поттер и кубок огня, 1 => Игра престолов

и выбирает Гарри Поттера из списка блока просто пользователь отображает «0» в качестве данного заголовка. Я достаточно уверен, что могу исправить это, используя функцию для назначения правильных значений путем запроса базы данных. но я не могу получить выбранный элемент из меню выбора только его значение индекса массива.

любые мысли?

код выглядит следующим образом

add.php

<?php defined('C5_EXECUTE') or die(_("Access Denied.")) ?> 
<?php $titles = $controller -> getTitles() ?> 
<div class="ccm-ui"> 
    <?php echo $form->select('bookselect', $titles, 1, array('style' => 'width: auto;')) ?> 

</div> 

Я попытался с помощью $ title = $this -> $_REQUEST['bookselect'];, но он не работал, а теперь спустя несколько часов я теряюсь

ответ

0

HTML Select элемент только передает свой индекс массива (или атрибут value), он никогда не отправит вам значение, это не так, как работает HTML.

У вас есть несколько вариантов.

  1. Посмотрите на значение из индекса в базе данных.
  2. Изменение индекса включают значение, например()
+0

так что тогда значение не было решением? Однако теперь я заполняю поле выбора массивом, который использует уникальный идентификатор строки как ключ и столбец заголовка в качестве значения. но когда я нажимаю кнопку add, база данных по-прежнему получает добавленные к ней значения null. – user2182380

1

Поскольку вы уже заселять список заголовков из функции контроллера, вы можете просто повторно использовать, что для «просмотра» вашего блока. Так что в вашем блоке управления, найти функцию view() (или добавить его, если он еще не существует), и сделать это:

$titles = $this->getTitles(); 
$this->set('title', $titles[$bookselect]); 

Теперь в шаблоне вида вашего блока, вы будете иметь переменную $title доступны эхо, и он будет содержать название книги.

+0

Не повезло, я боюсь, что в базе данных ничего не публикуется. Когда я выполняю сценарий добавления и делаю выбор, а затем запускаю запрос select all в таблице экземпляра блока, я получаю нуль по всей доске (несмотря на первичный ключ) – user2182380

+0

Мне сложно понять, в чем заключается ваша ситуация. Возможно, если вы предоставите фактический код из файлов вашего контроллера controller.php, add.php, edit.php и view.php, это будет более понятно. –

0

документации для выбора коробки выглядит следующим образом,

$form->select($name, $options, $selectedValue, $tagAttributes); 

в вашем примере,

$form->select('bookselect', $titles, 1, array('style' => 'width: auto;')) 

Это должно выбрать Игру престолов, как выбранная книга (предполагается, что значение используется в ключ массива), вы можете попробовать передать опции в качестве ассоциативного массива

array(
'Harry Potter and the Goblet of Fire'=>'Harry Potter and the Goblet of Fire', 
'Game of Thrones'=>'Game of Thrones' 
) 

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

$form->select('bookselect', $titles, $title, array('style' => 'width: auto;')) 

Я не проверял это, поэтому для его использования в качестве ключа может потребоваться санация названия.