我希望在发送数据后,如果发生错误,它不会删除已经写入文本框或复选框的数据。我怎样才能做到这一点? 这是HTML代码:
<form action="adaugare-elev.php?actiune=validare" method="post">
Date de contact <br>
<table>
<tr><td>Nume: <th><input type="text" name="nume" required></th></td></tr>
<tr><td>Prenume: <th><input type="text" name="prenume" required></th></td></tr>
<tr><td>Seria: <input type="text" style="width:25px;" name="seria" required></td> <td>Nr: <input type="text" name="nr" style="width:50px;" name="nr" required></td></tr>
<tr><td>CNP: <th><input type="text" name="cnp" required></th></td></tr>
<tr><td>Mail: <th><input type="text" name="mail" required></th></td></tr>
<tr><td>Loc de munca: <th><input type="text" name="locmunca" required></th></td></tr>
</table><br>
</form>
这是表单的php代码:
if(!isset($_GET['actiune']))
$_GET['actiune'] = '';
switch($_GET['actiune'])
{
case 'validare':
$_SESSION['nume'] = $_POST['nume'];
$_SESSION['prenume'] = $_POST['prenume'];
$_SESSION['seria'] = $_POST['seria'];
$_SESSION['nr'] = $_POST['nr'];
$_SESSION['cnp'] = $_POST['cnp'];
$_SESSION['mail'] = $_POST['mail'];
$_SESSION['locmunca'] = $_POST['locmunca'];
$inserare = "insert into `elevi` (`nume`,`prenume`,`nr`,`cnp`,`mail`,`locmunca`,) values ('".addentities($_SESSION['nume'])."','".addentities($_SESSION['prenume'])."','".addentities($_SESSION['nr'])."','".addentities($_SESSION['cnp'])."','".addentities($_SESSION['mail'])."','".addentities($_SESSION['locmunca'])."')";
}
我试过在if子句之后使用弹出式alert (echo "<script>alert('Something's wrong')</script>";
但是它没有用..
答案 0 :(得分:3)
您需要检查,是否设置了帖子数据,如果是,则将其设置为输入值。例如:
<tr><td>Nume: <th><input type="text" name="nume" value="<?php if (!empty($_POST["nume"])) { echo $_POST["nume"]; } else { echo ''; }; ?>" required></th></td></tr>
答案 1 :(得分:2)
PHP是一种服务器端语言,为了保存您的数据,您应该将值保存到会话中以保留它们。如果您想阻止用户将字段留空,请使用javascript。
您应该添加一项检查,看看是否有mysql_error()
或者您是否正在使用mysqli; mysqli_error()
。如果有,请回显表单中的值。在表单中添加一个小支票,以查看会话是否已填写。可以通过这个来实现:
if ( isset ( $_SESSION['error'] ) ) {
// echo the form with the values in there
}
如果你想做得更容易,但是要用脏话,那就用这样的东西;
<tr><td>Nume: <th><input type="text" name="nume" value="<?php ( ( isset ( $_SESSION['error'] ) ) ? echo $_SESSION['nume'] : "" ) ?>" required></th></td></tr>
确保在$_SESSION['error']
返回错误时将mysql_error()
设置为某些内容。
但由于它是一个POST,你也可以在值中回显$ _POST [&#34; nume&#34;]。
要填写$_SESSION['error']
,首先需要添加支票,以确保$inserare
正在以正确的方式执行。为此,您必须为您使用的正确mysql版本请求错误。
我不知道您为结果使用了哪些变量,因此请将此更改为您的变量!
$query = mysql_query($inserare);
的mysqli:
if ( mysql_error ( $query ) ) {
$_SESSION['error'] = 1;
}
MySQL的:
if ( mysqli_error ( $query ) ) {
$_SESSION['error'] = 1;
}
答案 2 :(得分:1)
或者除了lolka_bolka的帖子之外还使用三元运算符
<tr><td>Nume: <th><input type="text" name="nume" value="<?= !empty($_POST["nume"]) ?$_POST["nume"] : '' ?>" required></th></td></tr>