2013-07-18 71 views
0

嗨我有一段PHP代碼,它從數據庫中獲取php變量,然後填充A下拉框。這工作正常,但一旦頁面更新它不顯示選定的值,而是隻是再次顯示原始列表。PHP的下拉框不顯示選定的值

我玩過一些不同的想法,用isset來顯示選定的值,但它只是顯示該值,沒有別的。

我附加了它的原始代碼,但它始終只顯示數據庫中的原始值列表。

如果任何機構可以提供解決方案,甚至在正確的方向推動,那麼將非常感激。

感謝

if (isset($select) && $select != "location") { 
    $select = $_POST['location']; 
} 
?> 

<select name="location"> 
<?php 
// Get records from database (table "name_list"). 
$list = mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc"); 

// Show records by while loop. 
while ($row_list = mysql_fetch_assoc($list)) { 
    $location = $_POST['location']; ?> 
    <option value="<?php echo $row_list['region_name']; ?>" 
    <?php if $row_list['region_name'] == $select) { 
     echo "selected"; 
    } ?>><?php echo $row_list['region_name']; ?></option>   
<?php } ?> 
+0

其中是$ select set? –

+0

不應該是'&& $ select!==「location」'? – Alfo

+0

@Alfo不強制 –

回答

1

你確信你發送形式POST請求?

您的代碼不可讀 更好的做這樣的事情:

<?php 

    //database request don't belong in the presentation layer 
    $list=mysql_query("select DISTINCT region_name from masterip_details WHERE country_code='GB' AND TRIM(IFNULL(region_name,'')) <> '' order by region_name asc"); 
    $location = ""; 
    $isSelect = ""; 
    if(isset($_POST['location'])){ 
     $location = $_POST['location']; 
    } 
    while($row_list=mysql_fetch_assoc($list)){ 
     if($row_list['region_name'] == $location){ 
      $isSelect = "selected"; 
     } 
     echo '<option value="'.$row_list['region_name'].'" '.$isSelect.' >'. $row_list['region_name'].'</option>'; 

    } 
?> 
+0

謝謝,我喜歡代碼更整潔,更容易遵循,雖然它應該有一個錯誤周圍如果(如果($行...但我會看看這個,讓它工作,因爲它比我更整潔 – user2516043

+0

sry得到了,雙「如果(如果(」現在它應該工作 – alabama

0

在創建<option>標籤,你可以使用以下命令:

<?php if ($row_list['region_name'] == $select) { echo "selected='true'"; } ?> 

你可能也想檢查條件$row_list['region_name'] == $select正在返回true。您可以分別嘗試echo其結果爲:

echo ($row_list['region_name'] == $select) 

或類似的東西,如果你得到true與否,將顯示。

+0

沒有必要像這樣設置 – Ranjith

+0

@Ranjith,是的沒有必要這樣設置它,問題可能是'$ row_list [ 'region_name'] == $ select'。但遵守XHTML約定,每個屬性都應該有一個值。 –

+0

是的,你是對的。但這裏並不是主要問題。請參閱http://www.w3.org/community/webed/wiki/HTML/Elements/option#Example_A w3.org的鏈接 – Ranjith

1

您沒有正確檢查選擇值。

更改此:

if (isset($select) && $select != "location") { 
    $select = $_POST['location']; 
} 

TO

if (isset($_POST['location']) && $_POST['location'] != "location") { 
    $select = $_POST['location']; 
} 
+0

謝謝你完美 – user2516043

0

問題就出在第一線 - 實際上,系統將不會執行2號線到指定$select因爲$select從未設置:

if(isset($_POST['select']) && $select!="location") { $select=$_POST['location']; } ?> 
+0

以及位$ location = $ _POST ['location'] in while循環沒有意義... – MBaas