Программное создание HTML select в Drupal 7

Аватар пользователя Gnom7 Gnom7 20 октября 2018 в 9:27

Здравствуйте! Подскажите пожалуйста как грамотно составить HTML список select на основе выборки из базы данных. Полдня ломаю голову. Дошел до такого варианта:

<?php
function protocol_sql_content() {
    
//подключаюсь бд
    
try {
        
$competition db_query("SELECT id, name_ru FROM " BDNAME "." TABLENAME);
    } catch (
Exception $e) {
        return 
"При подключении к базе данных возникла ошибка <b><u>{$e->getMessage()}</u></b>";
    }
    
    
$rows = array();
    for(
$i=0;$competition_rows $competition->fetchAssoc();$i++){
        
$rows[$i] = $competition_rows;
        
$form = array();
        
$form['term-selected'] = array(
        
'#type' => 'select',
        
'#title' => t('Терминов в блоке'),
        
'#options' => array($rows[$i]['id'] => $rows[$i]['name_ru']),
        );
    }

    return 

$form;
    
}
?>

Но этот вариант выводит только одну строку из выборки. А как вывести все строки?

Лучший ответ

Аватар пользователя bumble bumble 20 октября 2018 в 10:37
2
<?php
$options 
= [];
$items $competition->fetchAssoc();
foreach (
$items as $item) {
  
$options[$item['id']] = $item['name_ru'];
}
$form['term-selected'] = [
  
'#type' => 'select',
  
'#title' => t('Terms in block'), // Не используйте переводы в переводимых строках!
  
'#options' => $options,
];
?>

Комментарии

Аватар пользователя bumble bumble 20 октября 2018 в 10:37
2
<?php
$options 
= [];
$items $competition->fetchAssoc();
foreach (
$items as $item) {
  
$options[$item['id']] = $item['name_ru'];
}
$form['term-selected'] = [
  
'#type' => 'select',
  
'#title' => t('Terms in block'), // Не используйте переводы в переводимых строках!
  
'#options' => $options,
];
?>
Аватар пользователя Andruxa Andruxa 21 октября 2018 в 12:17

В семерке это не соответствует стандартам кода.

Please note, short array syntax is unsupported in versions of PHP prior to 5.4. This means that Drupal 7 core and Drupal 7 contributed projects without an explicit PHP 5.4+ requirement must use long array syntax.

Аватар пользователя bumble bumble 21 октября 2018 в 12:22

Нафиг такие стандарты!
Если нет желания выкладывать на орг и казаться там "примерным кодером" - можно игнорить подобные архаизмы.
Когда лично для себя пишу - вообще по PSR'ам.