在HTML中使用数据库输出使用PHP选择标记

时间:2015-01-20 18:31:51

标签: php mysql wordpress

我在wordpress网站上完成了以下工作。

<?php 

global $wpdb;

$results = $wpdb->get_results( "SELECT post_title FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );
$options = array();
foreach ($results as $result) {
$options[$result->post_title] =  $result->post_title;
}

echo '<select class="field" name="djshow">';
foreach ($options as $key => $value) {
echo "<option value='$key'" . ( $_GET['show'] == $value ? " selected='selected'" : "" ) . ">$value</option>";
}
'</select>';

?>

wp_posts 中搜索数据库中 post_title 的每个实例,其中 post_type 显示且< em> post_status 是公开。然后对它进行排序并将其输出到数组,然后使用匹配的每个 post_title 的列表填充Select标记。

目前它将 post_title 输出到选项值和名称字段....

我想要做的是在原始查询中选择另一个字段 ID ,以填充选项值,同时 post_title 填充名称。

因此,当在html中呈现时,select会读取类似的内容:

<option value="15">Post Title 1</option>
<option value="18">Post Title 2</option>
<option value="23">Post Title 3</option>
etc...

我认为我需要使用的正确查询是这样的(如果我错了,请纠正我)

$results = $wpdb->get_results( "SELECT post_title,ID FROM wp_posts WHERE post_type = 'show' AND post_status = 'publish' ORDER BY post_title ASC" );

但那是我有限的知识让我失望的地方......

如何将 ID 的输出分配给选项值,将 post_title 分配给select标签的名称?

2 个答案:

答案 0 :(得分:0)

当您查询多个值时,可以使用逗号分隔它们。 在你的代码中

post_title AND ID

应该是

post_title, ID

您的返回值是$结果,您的foreach可能是

foreach ($results as $result) {
echo "<option value='$result->ID'" . ( $_GET['show'] == $result->ID ? " selected='selected'" : "" ) . ">$result->post_title</option>";
}

不确定您的$ _GET是否包含post_title或ID

答案 1 :(得分:0)

更改SQL以同时包含post_titleID之后,您只需要修复此部分:

foreach ($results as $result) {
  $options[$result->post_title] =  $result->post_title;
}

现在应该是:

foreach ($results as $result) {
  $options[$result->ID] =  $result->post_title;
}

因为在下一个foreach中,$key中的内容来自您在括号中的内容,而$value来自作业的右侧。