2015-05-20 28 views
0

我想创建一个填充数字的下拉列表。这些数字需要从数据库中检索。到数据库,并假定显示用代码的连接如下:检索数据库中的下拉选项

的函数来检索的选项下拉

<?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 ("<option value=\"<?php echo $item->LidID ?>\"> <?php echo $item->LidID ?> </option>"); 

当我删除第二个LidID?>并用例如5代替它时,它显示一个五个列表。由于某种原因,它不承认我写的陈述。我试图将echo语句中的$ item-> LidID转换为$ result-> LidID,但这似乎没有任何影响。有没有人有丝毫的想法在这里出了什么问题?

哦,是的,我不知道它是否有相关性,但它是一个WordPress的插件。

回答

1

你说得对,就是这个问题。回声时你已经在PHP中,所以你不需要打开更多的PHP标签。其他问题是$item不存在。另一个问题是你没有正确使用MySQLi,如果你有一个变量,你只使用准备,你不这样做不使用它。在这种情况下,您也不要使用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> 
+0

似乎并没有做任何的伎俩,他们仍然显示空 – Ciphra

+0

哈哈,我看你刚才编辑您的文章,因为我想再次回复。我用$ result替换$ item,现在它可以工作。谢谢您的帮助! – Ciphra

+0

你是完整的功能被搞砸了。我已更新我的答案,以显示它应该是什么样子。 – Styphon

相关问题