2012-07-18 140 views
0

我使用PHP和試圖改變使用PHP我的代碼看起來像這樣一個選項:PHP來改變選擇框選項

<?php 
$ProductName = 'test2'; 
?> 

<select id="product" name="product" value=<? echo $ProductName; ?> > 
    <option value="test1">Option 1</option> 
    <option value="test2">Option 2</option> 
    <option value="test3">Option 3</option> 
    <option value="test4">Option 4</option> 
</select> 

但是上面並沒有更改的選項。

任何想法?

回答

1

你必須是這樣的:

<select id="product" name="product" value="" > 
    <option value="test1"<? if($ProductName == "test1") echo " selected"; ?>>Option 1</option> 
    <option value="test2"<? if($ProductName == "test2") echo " selected"; ?>>Option 2</option> 
    <option value="test3"<? if($ProductName == "test3") echo " selected"; ?>>Option 3</option> 
    <option value="test4"<? if($ProductName == "test4") echo " selected"; ?>>Option 4</option> 
</select> 

但是這將是件好事,在價值觀和選項名稱數組並執行循環檢查

+0

但我會建議使用蒂姆的解決方案,它是非常優雅和漂亮的解決方案國際海事組織 – haynar 2012-07-18 22:55:24

+0

現在這個技巧 – Aaron 2012-07-18 23:01:13

0

當使用一個選擇框,正確的HTML做到這將是這樣的:

<select id="product" name="product"> 
    <option value="test1" selected>Option 1</option> 
    <option value="test2">Option 2</option> 
    <option value="test3">Option 3</option> 
    <option value="test4">Option 4</option> 
</select> 

所以你要選擇的值的末尾添加「選擇」二字。

在PHP中,你可以做這樣的輕鬆:

<select id="product" name="product"> 
<?php 
$options = array(1 => 'Option 1', 2 => 'Option 2', 3 => 'Option 3'); 
foreach ($options as $key => $value) { 
    echo '<option value="' . $key . '"' . ($key == $_GET["test"] ? ' selected="selected"' : '') . '>' . $value . '</option>'; 
} ?> 
</select> 
+0

但我希望能夠更改基於php值的值? – Aaron 2012-07-18 22:50:25

+0

然後您需要修改該代碼以顯示「選項1」的部分。這是顯示給用戶的'價值'。 – edwardmp 2012-07-18 22:53:58

1

您需要將selected屬性添加到<option>元素。你可能會考慮這樣的事情:

<?php 
$options = array('test1' => 'Option 1', 
       'test2' => 'Option 2', ...); 

$selected = 'test1'; 
?> 

<select id="product" name="product"> 
    <?php foreach ($options as $value => $text): ?> 
     <option value="<?=$value?>"<?=$value == $selected ? ' selected' : ''?>> 
     <?=$text?> 
     </option> 
    <?php endforeach; ?> 
</select> 
+0

你爲什麼要複製我的確切代碼? – edwardmp 2012-07-18 22:52:36

+0

@edwardmp你在開玩笑嗎?他們相隔2分鐘,這是一個相當「標準」的做法。此外,當$ _GET數組爲空時,我不會發出通知。 – Martin 2012-07-19 09:14:44

1

有幾種方法可以做到這一點。首先在HTML你要找的是:

<option value="test2" selected="selected">Option 2</option> 

我更喜歡使用Javascript/jQuery的方法,我自己,因爲它不弄亂了地獄,我的代碼。 select HTML:

$("#product option[value='<?php echo $productName;?>']").attr('selected','selected'); 
+0

偉大的解決方案:)我喜歡它 – haynar 2012-07-18 22:52:22