0

我有一个 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>

下拉框出现,但其中没有写入任何值。我在这里想念什么?任何帮助表示赞赏...

发送

4

1 回答 1

0

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

while($row = mysql_fetch_assoc($result)) {
$candidates[] = array(
"fname" => $row["first_name"],
"lname" => $row["last_name"],
"id" => $row["id"],
"candidate" => $row["candidate"]);
}
于 2013-07-14T12:55:57.353 回答