我試圖修改一個函數,我一直在使用動態填充<select>
元素來使用數據庫中的數組。原始函數使用硬編碼數組來填充元素,並預先選擇了與db值相匹配的選項。修改函數動態填充選擇要使用數組的數據庫
修改後的函數創建元素,但它只是從db中添加第一個值。我怎樣才能修改它,以便循環遍歷所有應該添加到<select>
元素的值?
PHP函數和查詢
<?php
function printSelectOptions($dataArray, $currentSelection) {
foreach ($dataArray as $key => $value) {
echo '<option ' . (($key == $currentSelection)) . ' value="' . $key . '">' . $value . '</option>';
}
}
try {
$stmt = $conn->prepare("SELECT * FROM student");
$stmt->execute();
}catch(PDOException $e) {
echo $e->getMessage();
}
$row = $stmt->fetch();
?>
填充選擇元素
<select name="fname">
<?php
echo printSelectOptions(array($row['fname']));
?>
</select>
原有功能&代碼填入一元
function printSelectOptions($dataArray, $currentSelection) {
foreach ($dataArray as $key => $value) {
echo '<option ' . (($key == $currentSelection) ? 'selected="selected"' : '') . ' value="' . $key . '">' . $value . '</option>';
}
}
<select name="fname">
<?php
$options = array("John"=>"John", "Mary"=>"Mary", "Elizabeth"=>"Elizabeth");
$selected = $row['fname'];
echo printSelectOptions($options, $selected);
?>
</select>
無需改變功能即可。只需在數據庫查詢後準備數組列表。 ' - > fetchAll'可能會有所幫助。 – mario 2013-03-27 01:32:16
@mario - 謝謝你讓我知道' - > fetchAll'。不幸的是這個功能需要比多一點,但值得慶幸的是邁克爾的回答得到它:-)工作 – 2013-03-27 01:59:38