自动检查并提交到mysql

时间:2012-01-28 19:15:51

标签: php mysql ajax

我有一个注册表单,其中我有三个字段

用户名,密码和电子邮件地址

这三个字段将存储在表A中。当用户立即输入电子邮件地址时,我想检查表B(不是我在提交时检查的表A),以确定该电子邮件地址的可用性。如果表B中有该电子邮件地址,那么我想从表B中获取相应电子邮件地址的ID,并将该ID插入电子邮件下方的隐藏字段中,当用户点击提交时,该字段将与所有字段一起提交。请告诉如何做

1 个答案:

答案 0 :(得分:0)

你需要的是一些简单的AJAX魔法,如果你还没有在你的代码中使用它,帮自己一个忙,抓住jQuery http://www.jquery.com并做这样的事情

<script>
    $("#email").change(function(e) {
        $.post("checkemail.php", { email: $(this).val() }, function(data) {
            if(data.available == "false") {
                $("#hidden_field_id").val(data.id);
            }
        }, "json");
    });
</script>

这将使用POST检查你的checkemail.php脚本(每次确保正确刷新返回数据,与GET不同)当某人点击或标记离开该字段并且javascript看到内容已更改时(所以它每次在表单生命周期内内容不同时才触发一次

你的checkemail.php

$return = array("available"=>"true", "id"=>"");
$sql = mysql_query("select id from tableB where email='".trim($_POST['email'])."'");
if(mysql_num_rows($sql) > 0) {
   $return['available'] = "false";
   $r = mysql_fetch_object($sql);
   $return['id'] = $r->id;
}
echo json_encode($return);

这是一个非常基本的函数,可以ping你的数据库,如果找到它,它将获取与该电子邮件相关的id(无论该字段恰好在你的数据库中)并将其放入我们的返回数组中。 一旦完成所有操作,它将回显出JSON编码的数组,以便与Javascript一起使用(这就是为什么在您的脚本中,有一个“json”参数,因此数据被解析并准备好在完成ajax调用时使用)。如果它发现电子邮件不可用,它将获取json对象中存储的id号,并将其作为您用于存储返回的id的表单中指定的隐藏字段的值。

希望有所帮助!