我有一个从数据库中填充的下拉列表
<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字段,用户只需键入新值即可。并将其输入数据库。
谢谢。
答案 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>