2014-02-24 48 views
0

我正在從表單中將數據收集到一個會話中,在另一個表單上,我使用一些變量來提供SELECT選項,該選項按我的意願工作。如下圖所示在SELECT選項中使用變量php

<select class="select2_category form-control" data-placeholder="Choose a Category" tabindex="1" id="householder" name="householder"> 
    <option value=""></option> 
    <option value="A"><?php echo $_SESSION["name1"];?></option> 
    <option value="B"><?php echo $_SESSION["name2"];?></option> 
    <option value="C"><?php echo $_SESSION["name3"];?></option> 
    <option value="D"><?php echo $_SESSION["name4"];?></option> </select> 

我的問題是當它涉及到SELECT我如何改變這一狀況,目前如果表單中,任何名稱爲空白,沒有爲每個選項留空一個空行,有沒有辦法改變這一點,如果一個變量爲空則忽略並使用下一個變量,這會再做出我的選擇看起來整潔

+0

只要把if條件。 – Rikesh

+0

IMO您應該使用一些集合來存儲選項。迭代它以刪除不需要的,然後迭代顯示。或者在迭代時顯示選項之前直接進行檢查。 –

回答

3

你應該考慮使用數組,而不是一系列的唯一命名的會話變量名的,例如:首先

$_SESSION['names'] = array('A' => 'First', 'B' => 'Second'); 

然後你可以遍歷他們foreach代替。也與所述好處是你可以使用array_filter功能(documentation)遍歷之前過濾掉從你的名字的數組空值:

<select class="select2_category form-control" data-placeholder="Choose a Category" tabindex="1" id="householder" name="householder"> 
<option value=""></option> 
<?php 
$options = array_filter($_SESSION['names']); 
foreach ($options as $option_value => $option_name): ?> 
    <option value="<?php echo $option_value; ?>"><?php echo $option_name;?></option> 
<?php endforeach; ?> 
</select> 
1
<?php if (isset($_SESSION["name1"]) && $_SESSION["name1"]!='') {?><option value="A"><?php echo $_SESSION["name1"];?></option><?php } ?> 

這對您的選擇

1

使用的,如果每一行/選項語句來檢查你的變量是否存在。

<?php if (isset($_SESSION["name1"])) : ?> 
    <option value="C"><?php echo $_SESSION["name1"];?></option> 
<?php endif; ?>