2015-07-02 53 views
0

我有一個從數據庫下拉列表增強了缺失值

<td>  
    <select style="width:100%"class="CounterParty" > 
    <?php 

     echo '<option selected="selected"></option>'; 
     $stmt = $conn->prepare("SELECT DISTINCT(CounterParty) 
          FROM dbo.tbl_hist_transactions 
          ORDER BY CounterParty DESC"); 
     $stmt->execute(); 
      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
         echo '<option >'.$row['CounterParty'].'</option>'; 
      } 
    ?> 
    </select> 
</td> 

如何修改它填充一個下拉列表,這樣,如果我有一個新的對手場是不存在的領域,用戶可以簡單地輸入新的值。它被輸入到數據庫中。

謝謝。

+1

您需要創建一個帶有文本框的表單,然後編寫PHP代碼以獲取POST值並將其插入到表中。 – mituw16

回答

0

讓我們假設,這就是你們的榜樣下拉列表:

<select class="CounterParty"> 
    <option value="ABC">ABC</option> 
    <option value="XYZ">XYZ</option> 
    <option value="new">New item</option> 
</select> 

如果您使用的是JavaScript庫如jQuery,您可以將新項目時,您選擇的僞選項添加到該下拉列表動態「新建項目」並輸入新項目的名稱。這裏是它的示例代碼:

$('.CounterParty').change(function(){ 
    var value = $(this).val(); 
    if (value == 'new') { 
     var newItem = prompt('Add new item:'); 

     if(!newItem) return false; 

     $(this).append('<option value"' + newItem + '" selected="selected">' + newItem + '</option>'); 
    } 
}); 

新項目,並將該表格已經提交後,該值可以存儲在像任何其他價值的數據庫了。

這裏是例子小提琴: http://jsfiddle.net/Lms1p5a3/

0

如果你不想使用JavaScript/jQuery的你可以用if()循環接住從這個梅索德缺點插入新的選擇是,它有刷新頁面。

<?php 

if(isset($_GET['insert'])){ 

    // prepare sql and bind parameters 
    $stmt = $conn->prepare("INSERT INTO `dbo.tbl_hist_transactions` (CounterParty) 
    VALUES (:CounterParty)"); 
    $stmt->bindParam(':CounterParty', $option); 

    // insert a row 
    $option = $_GET['insert']; 
    $stmt->execute(); 

} 
?> 


<form action="test.php" method="get"> 
    <select style="width:100%"class="CounterParty" > 
    <?php 

     $stmt = $conn->prepare("SELECT DISTINCT(CounterParty) FROM dbo.tbl_hist_transactions ORDER BY CounterParty DESC"); 
     $stmt->execute(); 

      while($row = $stmt->fetch(PDO::FETCH_ASSOC)) { 
       echo '<option value="'.$row['CounterParty'].'">'.$row['CounterParty'].'</option>'; 
      } 
    ?> 
    </select> 
    Add option<input type="text" name="insert"><br> 
    <input type="submit" value="Submit"> 
</form>