2013-12-09 89 views
0

我有四個下拉列表,我希望使用MSSQL表中的值填充下拉列表。所有四個列表應該包含相同的值。查詢看起來是這樣的:使用單個查詢填充多個下拉列表

$data = $con->prepare("SELECT ID, Code FROM Table WHERE Code = :value ORDER BY Code"); 
$input = array('value'=>'value'); //'value' is hardcoded, not a variable 
$data->execute($input); 

這裏是我的下拉菜單代碼:

<?php 
echo "<select name=\"proj1[]\">"; 
while($row = $data->fetch(PDO::FETCH_BOTH)) 
{ 
    echo "<option value='".$row['Code']."'>".$row['Code']."</option> "; 
} 
echo "</select>"; 
?> 

這工作得很好一個下拉。如果我嘗試創建另一個(proj2 [],proj3 [],proj4 [])並應用相同的查詢,那麼PHP頁面將停止加載,並且第二個下拉列表不會填充。我發現它的唯一方法是複製查詢並更改變量($ data爲proj2 []的$ data2,等等)。我真的寧願不必四次寫同一個查詢。有沒有辦法解決它?

回答

2
$select = ''; 

while($row = $data->fetch(PDO::FETCH_BOTH)) 
{ 
    $select .= "<option value='".$row['Code']."'>".$row['Code']."</option> "; 
} 

echo "<select name=\"proj1[]\">"; 
echo $select; 
echo "</select>"; 

echo "<select name=\"proj2[]\">"; 
echo $select; 
echo "</select>"; 

//etc... 
+0

完美。謝謝。現在,當我加載存儲的記錄時,如何呈現用戶選擇的下拉值? – Chris

+0

這是一個不同的問題,也不清楚。 – AbraCadaver

0

爲什麼不把它全部放在一個可讀的,然後使用它4次? 類似這樣的:

<?php 
while($row = $data->fetch(PDO::FETCH_BOTH)) 
{ 
    $options .= "<option value='".$row['Code']."'>".$row['Code']."</option> "; 
} 
for($i = 0; $i <= 4; $i++){ 
echo "<select name=\"proj1[]\">"; 
echo $options; 
echo "</select>"; 
} 
?>