我想创建一个充满数字的下拉列表。需要从数据库中检索这些数字。与数据库的连接和假定的显示代码如下:
检索下拉列表选项的函数
<?php
function dropdown_menu() {
global $wpdb;
/* Query the database */
$query = $wpdb->prepare('SELECT * FROM LID ORDER BY LidID', 'LID', 'LidID');
$results = $wpdb->get_results($query);
/* Check for $results */
if(!empty($results)) :
/* Loop through the $results and add each as a dropdown option */
global $options;
$options = '';
foreach($results as $result) :
echo ("<option value=\"<?php echo $item->LidID ?>\"> <?php echo $item->LidID ?> </option>");
endforeach;
endif;
}
?>
包含上述功能的声明:
<tr class="form-field form-required">
<th scope="row"><label for="LidID">Lid ID <span class="description">(verplicht)</span></label></th>
<td><select name="LidID" id="LidID" value="<?php echo $item->LidID ?>" aria-required="true"> <?php dropdown_menu(); ?> </select></td>
</tr>
我遇到的问题是,它会在数据库中创建一个下拉列表,其中包含相应数量的“LidID”记录,但它们都显示为空白。我已经一直在玩它,我想我知道问题是什么,但我不知道如何解决它。我认为问题在于echo语句;
echo ("<option value=\"<?php echo $item->LidID ?>\"> <?php echo $item->LidID ?> </option>");
当我删除第二个LIDID时?&gt;并将其替换为例如5,它显示五个列表。由于某种原因,它不承认我写的声明。我试图将echo语句中的$ item-&gt; LidID切换为$ result-&gt; LidID,但这似乎没有任何影响。有没有人对这里出了什么问题有任何想法?
哦,是的,我不知道它是否相关,但它是wordpress的插件。
答案 0 :(得分:1)
你是对的,这就是问题所在。回声时你已经使用PHP了,所以你不需要打开更多的PHP标签。其他问题是$item
不存在。另一个问题是您没有正确使用MySQLi
,如果您有变量,则只使用prepare,但不要使用它。您也不会在该上下文中使用get_results
。试试这个:
function dropdown_menu($default) {
global $wpdb;
/* Query the database */
$query = 'SELECT * FROM LID ORDER BY LidID, LID, LidID';
$results = $wpdb->query($query);
while ($item = $results->fetch_assoc()):
echo '<option value="'.$item->LidID.'"'.($item->LidID == $default ? ' selected="selected"' : '').'>'.$item->LidID.'</option>';
endwhile;
}
然后调用函数
<td>
<select name="LidID" id="LidID" aria-required="true"> <?php dropdown_menu($item->LidID); ?> </select>
</td>