在数据库中查找不成功后,如何用已插入的文本替换表单?

时间:2019-05-03 15:28:37

标签: javascript php html

Participate.php文件中有以下格式的代码:

<form method="post" action="input.php" id="Form">
            <input type="text" class="form-control" name="txtName" maxlength="20" required style="margin-bottom:20px"> 
            <input type="email" class="form-control" name="txtEmail" aria-describedby="emailHelp" required style="margin-bottom:20px">
            <input type="submit" class="btn btn-success" id="btnsubmit" value="Zgłoś się" />
        </form>

提交失败后(我检查插入的邮件是否已存在于数据库中),如果不存在,我想重新填写表单值。这是input.php代码:

<?php

$name = $_POST['txtName']; 
$mail = $_POST['txtEmail']; 
$description = $_POST['txtDescription'];
$connect = new PDO("mysql:host=4*****3;dbname=3*****b", "3***b", "****");
$connect->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );

$q=$connect->prepare("SELECT mail FROM konkurs WHERE mail LIKE (?)");
$q->bindValue(1, $mail);
$q->execute();
$row_cnt = $q->rowCount();
    if($row_cnt == 0){
        $query = $connect->prepare("insert into konkurs(name,mail,description)
        values(?, ?, ?)");
        $query->bindValue(1, $name);
        $query->bindValue(2, $mail);
        $query->bindValue(3, $description);
        try {
            $query->execute();
            echo ("<script LANGUAGE='JavaScript'>
            window.alert('Sent.');
            window.location.href='index.html';
            </script>");
            exit;
            } catch (PDOException $e) {
            die($e->getMessage());
            } 
    } else {
        echo ("<script LANGUAGE='JavaScript'>
            window.alert('This mail already exist.');
            window.location.href='Participate.php';
            document.getElementById('txtName').value = 'nothing';
            </script>");
        }

?>

问题是,未成功完成汇总后,它将重定向到Participate.php。但这不会重新填写表格。

1 个答案:

答案 0 :(得分:0)

首先,您必须更改HTML以包含id属性,例如:

<form method="post" action="input.php" id="Form">
    <input type="text" class="form-control" id="txtName" name="txtName" maxlength="20" required style="margin-bottom:20px"> 
    <input type="email" class="form-control" id="txtEmail" name="txtEmail" aria-describedby="emailHelp" required style="margin-bottom:20px">
    <input type="submit" class="btn btn-success" id="btnsubmit" value="Zgłoś się" />
</form>

然后,您必须将逻辑移动到与表单容器相同的文件(此处为Participate.php),并删除失败的重定向。否则,您将看不到任何结果,因为重定向将阻止进一步的JavaScript代码运行。

// Updated to prevent syntax errors with multiline strings
echo "<script>"
     . "window.alert('This mail already exist.');"
     . "document.getElementById('txtName').value = 'nothing';"
     . "</script>";