无法使用php从表单中将数据插入MYSQL

时间:2015-09-25 06:40:40

标签: php html mysql

我想使用PHP从HTML表单中将数据插入MYSQL。当我在表单中输入有效字符串并按照代码将其重定向到 main.php 顺便说一下,输入的字符串未插入进入MYSQL表。

以下是我的代码

HTML

<form class="form" action="" method="post" >
    <input type="text" placeholder="User Id" id="userid" name="userid" title="Enter your Roll number">
    <button onclick="validate()" type="submit" id="login-button" name="formSubmit" value="submit">Login</button>

</form>

这是表单验证。

JS

function validate()
{
    var id=document.getElementById('userid').value;
    if(id=="")
    {
        document.getElementById('msg').innerHTML = "Please enter User Id";
        setTimeout(function(){
        window.location.replace('index.php');
        }, 2000);
    }
    else
    {
        if(id.length=="10")
        {
            document.getElementById('msg').innerHTML = "Login Success";
            setTimeout(function(){
            window.location.replace('main.php');
            }, 2000);
        }
        else
        {   
            document.getElementById('msg').innerHTML = "Please enter valid User Id";
            setTimeout(function(){
            window.location.replace('index.php');
            }, 2000);
        }
    }
}

PHP

mysql_connect("localhost", "root", "password") or die(mysql_error());
mysql_select_db("gcet_elib") or die(mysql_error());

if(isset($_POST['formSubmit']))
{

    $userid = $_POST['userid'];

    $query = "INSERT INTO users ( uid ) VALUES ('$userid')";

    $result = mysql_query($query);

    if($result){
        //$msg = "User Created Successfully.";

        echo '<script language="javascript">';
        echo 'alert("Login Successfull")';
        echo '</script>';

    }

else
{
    echo '<script language="javascript">';
    echo 'alert("Cant submit this form")';
    echo '</script>';
}

}

This is MYSQL table structure

所以请帮我找出代码中的错误。

6 个答案:

答案 0 :(得分:0)

  

当我运行此代码时,它会像这样警告&#34;无法提交此表单&#34;

可能是因为您的表单要求未得到满足,而这要求在validate()函数中定义。检查你的javascript validate()函数。这可能是错的。因此将其作为编辑发布,或者您可能没有将所需信息传递给validate()为true所需的输入字段。

mysql或php现在不是问题,因为您的表单甚至没有提交。

你的脚本可能是错的 检查一下,看看我提出的评论并提出一个想法。

function validate()
        {
            var id=document.getElementById('userid').value;
            //if id is null this will rise
            if(id=="")
            {
                document.getElementById('msg').innerHTML = "Please enter User Id";
                setTimeout(function(){
                window.location.replace('index.php');
                }, 2000);
            }
            //if the id is not null this means a string is passed
            else
            {
                //if the id is exactly 10 characters long
                if(id.length=="10")
                {
                    document.getElementById('msg').innerHTML = "Login Success";
                    setTimeout(function(){
                    window.location.replace('main.php');
                    }, 2000);
                }
                //if the id is not null and character length is not equal to 10
                else
                {   
                    document.getElementById('msg').innerHTML = "Please enter valid User Id";
                    setTimeout(function(){
                    window.location.replace('index.php');
                    }, 2000);
                }
            }
        }

在这种情况下,如果id不为null或null,它会将window.location.replace('index.php');重定向到index.php,这是btw的意思,即使字符串被传递给它,它也会刷新。因此,请更正这些条件语句,以使其正常工作

答案 1 :(得分:0)

如果您在加载时看到错误,那么它是正常的,因为您没有设置  $_POST['formSubmit'] ifelse循环将重定向到isset($_POST['formSubmit']),并显示错误。

在加载页面上,你没有设置post变量,但是php部分会执行,它会找到false作为else,它将会IFacebookService声明。

进行以下更改。

  1. 在JS中,执行所有验证并让JS提交表单。
  2. 在if((__ POST [&#39; formSubmit&#39;])中创建完整的PHP代码,以便php代码仅在提交完成后执行。

答案 2 :(得分:0)

将html替换为以下内容:

<form class="form" action="main.php" method="post">
  <input type="text" placeholder="User Id" id="userid" name="userid" title="Enter your Roll number">
  <button onclick="return validate()" type="submit" id="login-button" name="formSubmit" value="submit">Login</button>

</form>

将javascript替换为以下内容:

function validate() {
  var id = document.getElementById('userid').value;
  if (id == "") {
    document.getElementById('msg').innerHTML = "Please enter User Id";
    return false;
  } else {
    if (id.length == "10") {
      document.getElementById('msg').innerHTML = "Login Success";
      return true;
    } else {
      document.getElementById('msg').innerHTML = "Please enter valid User Id";
      return false;

    }
  }
}

答案 3 :(得分:0)

更改您的PHP代码,如下所示:

mysql_connect("localhost", "root", "root") or die(mysql_error());
mysql_select_db("stackov") or die(mysql_error());

if(isset($_POST['formSubmit']))
      {

        $userid = $_POST['userid'];

        $query = "INSERT INTO users ( id ) VALUES ('$userid')";

        $result = mysql_query($query);

        if($result){
            //$msg = "User Created Successfully.";

            echo '<script language="javascript">';
            echo 'alert("Login Successfull")';
            echo '</script>';

        }
        else{
          echo '<script language="javascript">';
            echo 'alert("Cant submit this form")';
            echo '</script>';
      }
      }

我刚刚更改了else块的位置,因此不会弹出不能提交表单的消息。

答案 4 :(得分:0)

如果您在页面加载时不需要错误,请将PHP文件更改为:

<?php
  mysql_connect("localhost", "root", "root") or die(mysql_error());
  mysql_select_db("stackov") or die(mysql_error());

  if(isset($_POST['formSubmit']))
  {

    $userid = $_POST['userid'];

    $query = "INSERT INTO users ( uid ) VALUES ('$userid')";

    $result = mysql_query($query);

    if($result){
        //$msg = "User Created Successfully.";

        echo '<script language="javascript">';
        echo 'alert("Login Successfull")';
        echo '</script>';

    }
    else{
        echo '<script language="javascript">';
        echo 'alert("Cant submit this form")';
        echo '</script>';
    }
  }
?>

在check isset($ _ POST)上移动else语句

答案 5 :(得分:0)

您只是重定向和更改窗口位置。你需要提交表格。您需要提供action="main.php"的操作,并且如果您的字段不为空或根据您的验证正确,则需要使用此$( "#formid" ).submit(); jquery函数。您将提交表单并且您将能够访问在main.php中发布值