我有这个代码动态地在drupal中创建一个选择列表。
$res = db_query("select field1 from content_type_1");
while($row = db_fetch_array($res)){
$rows[] =$row['field1'];
}
return $rows;
输出如下:
<select>
<option value="0">row['field1']</option>
</select>
我需要这样的输出
<select>
<option value="row['field1']">row['field1']</option>
</select>
怎么做?
答案 0 :(得分:1)
要成为“drupal compliance”,您的代码应遵循编写SQL查询的“drupal方式”。
你需要在SQL表的名称周围使用{...}(如果需要,这允许drupal添加前缀),你应该使用
$res = db_query("select field1 from {content_type_1}");
while ($row = db_fetch_array($res)) {
$rows[] =$row['field1'];
}
然后,对于网站上的任何表单,您应该使用 form API ( select 声明)
所以代码应该是这样的:
function mymodule_form(&$form_state) {
$form['mySelect'] = array(
'#type' => 'select',
'#title' => t('A title'),
'#default_value' => '',
'#options' => get_rows();
);
return $form
}
function get_rows() {
$res = db_query("select field1 from {content_type_1}");
while ($row = db_fetch_array($res)) {
$rows[] = $row['field1'];
}
return $rows;
}
/* .. more code if needed .. */
// Then you can print your form.
// This should be called by a hook_menu or a theme() function ... not alone like here.
echo drupal_get_form('mySelect');
答案 1 :(得分:0)
不确定,但我想drupal:
value
属性<option>
。如果是这种情况,将循环更改为此可能会有所帮助:
while($row = db_fetch_array($res)){
$rows[ $row['field1'] ] = $row['field1'];
}
现在,对于$rows
数组的每个项目,键与值相同。
答案 2 :(得分:0)
现在可以肯定了,但我从数据库中选择的大部分内容都是这样的日志:
<select name="cctype">
<option value="" selected = "Selected" >Pick one</option>
<?PHP
while($row = db_fetch_array($res)) {
echo (' <option value="'.$row["field1"].'">'.$row["field1"].'</option>');
}
?>
</select>
希望有所帮助。
Silver Tiger