没有填充Smarty下拉列表

时间:2013-07-14 12:51:27

标签: php smarty

我有一个聪明的插件,不会在我的模板中填充我的下拉框。

这是我的function_candidates.php代码:

<?php

function smarty_function_candidates(array $parameters, Smarty_Internal_Template $smarty)
    {
$sql = "SELECT first_name, last_name, id, candidate FROM wmmw.main_members WHERE candidate='1'";   
    $result = mysql_query($sql)
              or die("Couldn't execute user query.");  
foreach ($result as $row){
$candidates[] = array(
"fname" => $row["first_name"],
"lname" => $row["last_name"],
"id" => $row["id"],
"candidate" => $row["candidate"]);
}
$smarty->assign("candidates", $candidates);
    }   
    ?>

这是我的模板代码:

<section>
{candidates}               
<label for="candidate">Candidate</label>
            <div>
                <select name="candidate" id="candidate">
                    <optgroup label="candidate">
                        {foreach item=c from=$candidates}
                            <option name="candidate" value="{$c.fname}">{$c.fname}</option>
                        {/foreach}
                    </optgroup>
                </select>
            </div>
        </section>

显示下拉框,但不会写入任何值。 我在这里错过了什么?任何帮助表示赞赏...

的Tx

1 个答案:

答案 0 :(得分:0)

你不能只使用带有mysql_query返回值的普通foreach循环。使用mysql_fetch_assoc

的while循环
while($row = mysql_fetch_assoc($result)) {
$candidates[] = array(
"fname" => $row["first_name"],
"lname" => $row["last_name"],
"id" => $row["id"],
"candidate" => $row["candidate"]);
}