表单不会将信息提交到数据库
Posted
技术标签:
【中文标题】表单不会将信息提交到数据库【英文标题】:Form won't submit info to database 【发布时间】:2015-10-17 04:02:15 【问题描述】:我最近一直在为一个朋友建立一个网站,但我一直停留在这个表单上。一个按钮链接到此表单所在的 url,然后一旦您填写所有信息并单击提交,而不是让您返回 home.php,它只是从视图中删除表单,您看到的只是一个空白的 new.php并且它没有提交信息。
<?php
function renderForm($user, $rank, $position, $error)
?>
<?php
if ($error != '')
echo '<div style="padding:4px; border:1px solid red; color:red;">'.$error.'</div>';
?>
<center>
<form action="" method="post">
<div class="form-group">
<label for="username">Username*</label>
<input id="username" class="form-control" type="text" name="user" placeholder="Username" value="<?php echo $user; ?>" />
</div>
<div class="form-group">
<label for="rank">Rank</label>
<select class="form-control" name="rank">
<option value="1">Pending Rank</option>
<option value="2">PVT</option>
</select>
</div>
<div class="form-group">
<label for="position">Position</label>
<input id="position" class="form-control" type="text" name="position" placeholder="MOG/GG" value="<?php echo $position; ?>" />
</div>
<div class="form-group">
<label for="Date">Date*</label>
<input id="Date" class="form-control" type="text" name="date" placeholder="<?php echo date('d M y'); ?>" value="<?php echo $date; ?>" />
</div>
<div class="form-group">
<label for="Tag">Tag*</label>
<input id="Tag" class="form-control" type="text" name="tag" placeholder="[]" value="<?php echo $tag; ?>" />
</div>
<div class="form-group">
<label for="adt">ADT</label>
<input id="adt" class="form-control" type="text" name="adt" placeholder="TEST" value="<?php echo $adt; ?>" />
</div>
<div class="form-group">
<label for="exp">EXP</label>
<input id="exp" class="form-control" type="text" name="exp" placeholder="420" value="<?php echo $exp; ?>" />
</div>
<div class="form-group">
<label for="reg">Regiment</label>
<input id="reg" class="form-control" type="text" name="reg" placeholder="[P]" value="<?php echo $reg; ?>" />
</div>
<div class="form-group">
<label for="Notes">Notes</label>
<input id="Notes" class="form-control" type="text" name="notes" placeholder="Notes" value="<?php echo $notes; ?>" />
</div>
<button type="submit" name="submit" class="btn btn-default" value="Submit">Submit</button>
</form>
<script>
$('.modal').on('hidden.bs.modal', function()
$(this).find('form')[0].reset();
);
</script>
<?php
include('config/db.php');
if (isset($_POST['submit']))
$user = mysql_real_escape_string(htmlspecialchars($_POST['user']));
$rank = mysql_real_escape_string(htmlspecialchars($_POST['rank']));
$position = mysql_real_escape_string(htmlspecialchars($_POST['position']));
$date = mysql_real_escape_string(htmlspecialchars($_POST['date']));
$tag = mysql_real_escape_string(htmlspecialchars($_POST['tag']));
$adt = mysql_real_escape_string(htmlspecialchars($_POST['adt']));
$exp = mysql_real_escape_string(htmlspecialchars($_POST['exp']));
$reg = mysql_real_escape_string(htmlspecialchars($_POST['reg']));
$notes = mysql_real_escape_string(htmlspecialchars($_POST['notes']));
$datej = mysql_real_escape_string(htmlspecialchars($_POST['date']));
if ($user == '' || $rank == '' || $date == '' || $tag == '')
$error = '<center>ERROR: Please fill in all required fields!</center>';
@renderForm($user, $rank, $position, $error);
else
mysql_query("INSERT per SET user='$user', rank='$rank', position='$position', date='$date', tag='$tag', adt='$adt', exp='$exp', reg='$reg', notes='$notes', datej='$datej'", $db1)
or die(mysql_error());
include('logsadd.php');
write_mysql_log('has added member <font color="black"><b>'. $user .'</b></font>.', $db);
header("Location: home.php");
else
header("home.php");
@renderForm('','','');
?>
【问题讨论】:
你处理这个问题的方式有点过时了,你应该在未来查看 MySQLi 扩展或 PDO。由于我看不到您的数据库的实际外观,因此很难仅从脚本中找出问题所在。 这两个独立的部分,表格和表格后面的所有东西吗?喜欢两个不同的页面? @Rasclatt 不,这一切都在同一页上。 检查错误日志。似乎 php 脚本有一些致命的错误。还要从@renderForm 中删除@。它不允许报告错误 【参考方案1】:你的 else 看起来像这样
else
header("home.php");
@renderForm('','','');
应该是
else
// header should be inside the else part
header("Location:home.php");
@renderForm('','','');
【讨论】:
以上是关于表单不会将信息提交到数据库的主要内容,如果未能解决你的问题,请参考以下文章
使用 jQuery 和 AJAX 提交表单如果 return 设置为 false 则不会将值插入 SQL 以防止重定向
提交按钮的 HTML 不会将数据插入数据库并一起重定向到 URL
ASP.NET MVC 网站开发总结——Ajax异步提交表单之检查验证码