如何在提交后重新填充动态生成的表单选择字段?

时间:2014-05-19 12:03:26

标签: php html mysql forms select

所以,我的表单如下面的代码片段所示。

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中添加输入文本字段。插入更改了同一个表,因此每次表单重新加载时我都需要获得新鲜的不同(位置)。

2 个答案:

答案 0 :(得分:1)

检查错误日志以查看是否一切正常。我怀疑header(...)无效。您也可以考虑在创建选择之前将位置插入数据库。

答案 1 :(得分:0)

您应该像这样写下您的查询,或者将部分恢复为像 <?php if (isset($_POST['newjob'])) { } ?> <form method="POST" action=""> </form>
我认为它会对你有所帮助