所以,我的表单如下面的代码片段所示。
tl; dr - form有一个select字段,它使用不同的sql查询从数据库表中动态获取其选项,并在提交时将新行插入表中,然后返回到表单。
问题 - 提交和插入后,即使已将行添加到表中,下拉选择字段也不会显示最新添加的选项。我必须手动刷新页面才能获得最新选项。
请帮助我解决此问题,因为我不想在每次添加新数据项时都加载此页面。
如何在每次成功提交后强制表单重新填充选择字段?
<form method="POST" action="">
<?php
$lsql = 'SELECT distinct(location) FROM some_table';
$result = mysql_query($lsql);
?>
<select class="field" name="locations" onchange="showfield(this.options[this.selectedIndex].value)">
<?php while($row = mysql_fetch_array($result)) {
$key = str_replace(',', '', $row['location']);
$key = str_replace(' ', '', $key);
$loc = $row['location'];
$locations[$key] = $loc;
echo '<option value="'.$key.'">'.$loc.'</option>';
}
?>
<option value="other">Other</option>
</select>
<div id="otherloc"></div>
<?php
if (isset($_POST['newjob'])) {
// getting form data
$location = $_POST['location'];
$other = $_POST['other'];
$jlocation = ($locations[$jlocation])? $locations[$jlocation] : $jother;
// Then, get all the fields data and insert into a database table
header('Location: ' . $_SERVER['PHP_SELF']);
}
?>
showfield()是一个javascript函数,当在下拉列表中选择“其他”选项时,会在“otherloc”div中添加输入文本字段。插入更改了同一个表,因此每次表单重新加载时我都需要获得新鲜的不同(位置)。
答案 0 :(得分:1)
检查错误日志以查看是否一切正常。我怀疑header(...)
无效。您也可以考虑在创建选择之前将位置插入数据库。
答案 1 :(得分:0)
您应该像这样写下您的查询,或者将部分恢复为像
<?php if (isset($_POST['newjob'])) { } ?>
<form method="POST" action=""> </form>
我认为它会对你有所帮助