发生错误后,请勿清除文本框值

时间:2014-12-18 12:12:23

标签: php forms

我希望在发送数据后,如果发生错误,它不会删除已经写入文本框或复选框的数据。我怎样才能做到这一点? 这是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>";但是它没有用..

3 个答案:

答案 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>