下拉列表增强缺失值

时间:2015-07-02 13:36:03

标签: php html drop-down-menu insert

我有一个从数据库中填充的下拉列表

<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>

如何修改它,以便如果我在字段中没有新的Counterparty字段,用户只需键入新值即可。并将其输入数据库。

谢谢。

2 个答案:

答案 0 :(得分:0)

让我们假设这是你的示例下拉列表:

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

如果您使用像jQuery这样的JavaScript库,则可以在选择伪选项“New Item”时动态地向此下拉列表添加新项目,并输入新项目的名称。以下是它的示例代码:

$('.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/

答案 1 :(得分: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>