2010-05-25 25 views
1

我試圖在我的網站中實現搜索功能。如何保持表格POST或GET後的選擇框的選定值

當在文本框中輸入搜索關鍵字並選擇類別組合後,表單將被張貼並且結果將顯示在同一頁面上。

我想是默認的形式,以保持組合的選定類別發佈

對於如。之後,如果我選擇在組合類「汽車」,並點擊搜索,表單提交後,該組合應該將汽車顯示爲默認選擇的選項。請幫幫我。任何幫助將不勝感激

回答

3

我假設你從數據庫中獲得類別。

你應該嘗試:

<?php 

$categories = $rows; //array from database 
foreach($rows as $row){ 
    if($row['name'] == $_POST['category']){ 
      $isSelected = ' selected="selected"'; // if the option submited in form is as same as this row we add the selected tag 
    } else { 
      $isSelected = ''; // else we remove any tag 
    } 
    echo "<option value='".$row['id']."'".$isSelected.">".$row['name']."</option>"; 
} 
?>
2

假設通過「組合」您的意思是「一個常規的選擇元素呈現爲下拉菜單或列表框」,而不是「一個組合框,下拉菜單和自由文本輸入「:

當輸出<option>元素,選項元素的屬性檢查對提交的數據的值在$_POST/$_GET和輸出selected(在HTML)或selected="selected"(在XHTML)。

0

這解決了我的問題。感謝所有這些修改米哈伊Iorga碼

0
$countries_uid = $_POST['countries_uid']; 
       while($row = mysql_fetch_array($result)){ 
        $uid = $row['uid']; 
        $country = $row['country_name']; 
        $isSelected = null; 
        if(!empty($countries_uid)){ 
        foreach($countries_uid as $country_uid){//cycle through country_uid 
         if($row['uid'] == $country_uid){ 
         $isSelected = 'selected="selected"'; // if the option submited in form is as same as this row we add the selected 
         } 
        } 
        }else { 
        $isSelected = ''; // else we remove any tag 
        } 
        echo "<option value='".$uid."'".$isSelected.">".$country."</option>"; 
       } 

這是我的多個選擇下拉框中的解決方案。

<select name="name" id="name"> 
    <option value="a">a</option> 
    <option value="b">b</option> 
</select> 

<script type="text/javascript"> 
    $("#name").val("<?php echo $_POST['name'];?>"); 
</script> 

但是,這只是如果你有你的網頁中包含jquery。 Regards

1

這裏是我使用jQuery的方法後回答

<select name="name" id="name"> 
    <option value="a">a</option> 
    <option value="b">b</option> 
</select> 

<script type="text/javascript"> 
    document.getElementById('name').value = "<?php echo $_GET['name'];?>"; 
</script> 
0

試過這個「解決」沒有任何工作。在之前做過關於w3school的一些研究,並且記得有關於保持無線電價值的解釋。但它也適用於選擇選項。看到這裏的一個例子。試試看吧,玩吧。

<?php 
$example = $_POST["example"]; 
?> 
<form method="post">   
<select name="example"> 
    <option <?php if (isset($example) && $example=="a") echo "selected";?>>a</option> 
    <option <?php if (isset($example) && $example=="b") echo "selected";?>>b</option> 
    <option <?php if (isset($example) && $example=="c") echo "selected";?>>c</option> 
</select> 
<input type="submit" name="submit" value="submit" /> 
</form> 
1
<?php 
$example = $_POST["friend"]; 
?> 
<form method="POST"> 
<select name="friend"> 
    <option value="tom" <?php if (isset($example) && $example=="tom") echo ' selected';?>>Thomas Finnegan</option> 
    <option value="anna" <?php if (isset($example) && $example=="anna") echo ' selected';?>>Anna Karenina</option> 
</select> 
<br><br> 
<input type="submit"> 
</form> 

這解決了我的問題。

0

簡單的解決方案: 如果從數據庫獲取的選擇框中的值,然後繼續選擇價值形態後提交或表單POST

<select name="country" id="country"> 
     <?php $countries = $wpdb->get_results('SELECT * FROM countries'); ?> 
     <option value=""> 
     <?php if(isset($_POST['country'])){echo htmlentities($_POST['country']); } else { echo "Select Country *"; }?> 
     </option> 
     <?php foreach($countries as $country){ ?> 
     <option <?php echo ($_POST['country'] == $country->country_name ? 'selected="selected"':''); ?> value="<?php echo $country->country_name; ?>"><?php echo $country->country_name; ?> 
     </option> 
     <?php } ?> 
     </select>