2016-04-11 62 views
0

一個選擇選項列表我有一個foreach循環,顯示在它如何保存從foreach循環

foreach($countries as $cc => $name) { 

echo '<option value="' . $name . '">' . $name . '</option>'; 
} 

選定的選項被保存在數據庫中的所有國家一個選項列表。我想要做的是,如果我回到這個頁面,它顯示了從數據庫中已經選擇的選項。我將如何做到這一點?

感謝。

回答

2

只是把選定的屬性上要選擇

foreach ($countries as $name) { 
    if ($yourselectedValue == $name) { 
     $selected = 'selected'; 
    } else { 
     $selected = ''; 
    } 
    echo '<option value="' . $name . '" '.$selected.'>' . $name . '</option>'; 
} 
+0

這不起作用,因爲$ name始終是選項列表中的最後一個名稱,而不是選定的名稱。 – kerv

+0

@kerv'$ name'在while循環運行時更改值,因此它最終將被選中,並將設置爲「selected」。 –

0

試試這個:當你創建你的選擇對象

//$saved_option = get saved option or selected option 

foreach($countries as $cc => $name) { 
    if ($saved_option == $name) { 
     echo '<option value="' . $name . '" selected="selected">' . $name . '</option>'; 
    } else { 
     echo '<option value="' . $name . '">' . $name . '</option>'; 
    } 
} 
+0

$ name始終是選擇列表的最後一個選項,所以我無法比較保存的選項和$名稱。 – kerv

+0

@kerv是什麼讓你相信'$ name'永遠是選擇列表的最後一個選項? – apokryfos

+0

'$ name'不是最後一個選項。要檢查它,在循環中輸入'$ name'的值。 '$ countries'數組的每個值都將被打印。只需在循環中鍵入'echo $ name;'並查看會發生什麼。 –

0
$previousselect = database query; 

foreach($countries as $cc => $name) { 

echo '<option value="' . $name .'" '. ($previousselected == $name) ? 'selected' .'>' . $name . '</option>'; 
} 

一個或

<select name="arbitraryname" value="' . echo($previousselect); . '"> 

對不起,只是很快輸入它沒有去爲語法只是方法

$previousselect = database query; 

foreach($countries as $cc => $name) { 

echo '<option value="' . $name .'" '. ($previousselect == $name ? 'selected' : '') .'>' . $name . '</option>'; 
} 

應該是正確的語法

+0

埃姆代碼將無法正常工作,並給予選擇的值不會使其工作。 – kerv

0

檢索國家ID,並將其存儲在一個變量

$query = "SELECT country_id FROM Tablename WHERE YOUR_CONDITION"; 
$result = mysqli_query($connection, $query); 
if (mysqli_num_rows($result) > 0) 
{ 
$row = mysqli_fetch_assoc($result); 
$selectedOption = $row['country_id']; 
} 
else 
{ 
$selectedOption = ''; // Your default selection of $cc 
} 

選擇框

下面的代碼顯示國家數組的所有選項。 $ cc將檢查數據庫值($ selectedOption),並且該國家將被默認選中。

$Option = ''; 
foreach ($countries as $cc => $name) 
{ 
    if ($cc == $selectedOption) 
    { 
     $Option .= '<option value="'.$cc.'" selected="selected">'.trim($name).'</option>'; 
    } 
    else 
    { 
     $Option .= '<option value="'.$cc.'">'.trim($name).'</option>'; 
    } 
} 


<select name="country_id" id="country_id"> 
<?php echo $Option;?> 
</select