2013-02-21 65 views
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」發佈到DB中。去過這一個公平的一段時間,所以任何幫助,將不勝感激 謝謝... 大衛

回答

0

你可以只改變你的while循環,並刪除在foreach:

while ($rowvat= $resultsvat->fetch_assoc()){ 
    echo '<option value="'.$rowvat['vat_rate_id'].'">'.$rowvat['vat_rate_name'].'</option>'; 
} 
+0

嗨你的幫助表示讚賞 – David 2013-02-21 18:06:08

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

Saludos;)

+0

謝謝你的幫助,非常感謝。 – David 2013-02-21 18:06:34

+0

不客氣......隨意問大衛。 – Hackerman 2013-02-21 18:13:31