0

为了在我的页面中尽可能多地保持 php 代码与 html 分离,我正在尝试创建一个函数,该函数可用于填充其他页面上的列表/下拉框。使用 msqli,我查询了我的表“acc_vat_rates!并选择了我感兴趣的两个字段,“vat_rate_id”和“vat_rate_name”,然后循环遍历结果并填充一个名为 $vatratearray 的数组,代码如下...

<?php 

function vat_rates(){
    $conn = new mysqli("192.168.1.81", "root", "", "cloudoneaccountsdb");
$queryvat = "SELECT vat_rate_id,vat_rate_name FROM acc_vat_rates ORDER BY vat_rate_id";
$resultsvat = $conn->query($queryvat);
//SET UP AN ARRAY NOW
$vateratearray = array();
while ($rowvat= $resultsvat->fetch_assoc())
    $vatratearray[] = $rowvat['vat_rate_id']." "." ". $rowvat['vat_rate_name'];
//print_r($vateratearray);

foreach($vatratearray as $key => $value)
//echo "<p>{$value} <?br></p>";
echo '<option value="'.$value.'">'.$value.'</option>';
}

?>

该函数存储在一个名为“global_functions.php 的页面中以包含在其他页面中所有上述工作正常。然后我使用函数“function vat_rates() 作为其他页面上列表框的选项值,但是,这就是我的问题开始的地方。当该函数填充一个列表框时,它会同时显示record_id和名称,这没关系,但是当我发布所选行时,它还会发布我不需要的“id”和“name”。我只希望发布“id”以包含在数据库中。

我已经有一段时间了,所以任何帮助将不胜感激。谢谢...大卫

4

2 回答 2

0

你可以改变你的while循环并删除foreach:

while ($rowvat= $resultsvat->fetch_assoc()){
    echo '<option value="'.$rowvat['vat_rate_id'].'">'.$rowvat['vat_rate_name'].'</option>';
}
于 2013-02-21T17:10:27.967 回答
0

尝试这个:

 while ($rowvat= $resultsvat->fetch_assoc())
        {

            array_push($vatratearray, 
              array('vat_rate_id' => $rowvat['vat_rate_id'], 
                    'vat_rate_name' => $rowvat['vat_rate_name']

              ));

        }    

        foreach($vatratearray as $key => $value)
        {
        echo '<option value="'.$value['vat_rate_id'].'">'.$value['vat_rate_id'].'  '$value['vat_rate_name'].'</option>';
        }

您可以对这段代码进行很多改进......您甚至可以在 while 循环中创建选项;就像其他答案一样XD

萨卢多斯 ;)

于 2013-02-21T17:11:11.620 回答