使用php将数据从html表单插入数据库

时间:2016-11-23 21:36:54

标签: php jquery html mysql

我建立了以下形式,它100%工作。 只有一个问题。 当我打开这个页面时,每次都有一个空白数据插入到数据库,不按任何提交按钮。

我不想在seprate文件上使用php,如action =“php / doctor.php” 我确实想在html表单的同一页面上使用php。

<?php
$servername = "localhost";
$username = "root";
$password = "";

?>
<?php
if (isset($_POST["dname"]))
{
    $dname = $_POST['dname'];
} else {
    $dname = null;
}


if (isset($_POST["mobile"]))
{
    $mobile = $_POST['mobile'];
} else {
    $mobile = null;
}


if (isset($_POST["dusername"]))
{
    $dusername = $_POST['dusername'];
} else {
    $dusername = null;
}

if (isset($_POST["dpassword"]))
{
    $dpassword = $_POST['dpassword'];
} else {
    $dpassword = null;
}

try {
    $conn = new PDO("mysql:host=$servername;dbname=team", $username, $password);
    // set the PDO error mode to exception

    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $sql = "INSERT INTO doctor (dname, mobile, dusername, dpassword)
        VALUES ('$dname', '$mobile', '$dusername', '$dpassword')";
    // use exec() because no results are returned
    $conn->exec($sql);
    echo '<div class="alert alert-success alert-dismissible">
        <a href="#" class="close" data-dismiss="alert" aria-label="close">&times;</a>
        <strong>Success!</strong> Indicates a successful or positive action.
        </div>';

}
catch(PDOException $e)
{
    echo $sql . "<br>" . $e->getMessage();
}

$conn = null;
?>

<script src="bootstrap/js/bootstrap.min.js"></script>
<script src="bootstrap/jquery-1.12.3.min.js"></script>

<link rel="stylesheet" href="bootstrap/css/bootstrap.min.css">
<link rel="stylesheet" href="style/team.css">
<link rel="stylesheet" href="style/teams.css">
<script src="js/javas.js"></script>

</head>
<body >

<form class="form-horizontal" action="doctor.php" method="post"  role="form">
    <div class="form-group">
        <label class="control-label col-sm-2" >Doctor Name:</label>
        <div class="col-sm-8">
            <input type="text" class="form-control" name="dname" placeholder="Enter email">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2" >Mobile:</label>
        <div class="col-sm-8">
            <input type="text" class="form-control" name="mobile" placeholder="Enter mobile">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2">User name:</label>
        <div class="col-sm-8">
            <input type="text" class="form-control" name="dusername" placeholder="Enter username">
        </div>
    </div>
    <div class="form-group">
        <label class="control-label col-sm-2">Password:</label>
        <div class="col-sm-8"> 
            <input type="password" class="form-control" name="dpassword" placeholder="Enter password">
        </div>
    </div>
    <div class="form-group"> 
        <div class="col-sm-offset-2 col-sm-10">
            <button type="submit" class="btn btn-default">Submit</button>
        </div>
    </div>
</form>
</div>

2 个答案:

答案 0 :(得分:2)

  • 这里的问题是&#34;逻辑&#34;。

首先,命名您的提交按钮,这将是必需的。

<button name="submit" type="submit" class="btn btn-default">Submit</button>

然后应用我在评论中陈述的逻辑:

  

如果设置了按钮...如果所有POST都不为空/查询

请注意以下代码中的注释,我希望您这样做,并且您将学习&#34;从它这里是最终目标。

旁注:您可以将&&(AND)替换为||(OR) 关于逻辑运算符,请参考http://php.net/manual/en/language.operators.logical.php

if (isset($_POST["submit"])){

    if (!empty($_POST["dname"]) && 

        !empty($_POST["mobile"]) &&

        !empty($_POST["dusername"]) && 

        !empty($_POST["dpassword"])

)

    {

    $dname = $_POST["dname"];
    // Do the same for the other POST arrays

    // Place your query in here
    }

}

如果留空,您还可以在if (isset($_POST["submit"]))条件语句中使用三元运算符,并将NULL指定为默认值。

参考:

从中拉出的例子:

$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];

并将该逻辑应用于您的代码。

同样如评论中所述;使用准备好的声明并哈希密码。

参考文献:

答案 1 :(得分:2)

你可以使用像这样的东西

if(isset($_POST['submit'])) {
// Enter the Code you want to execute after the form has been submitted

} else {
// Display the Form and the Submit Button
}

这是一个完整的例子:

<?php    
    if(isset($_POST['SubmitButton'])) { //check if form was submitted
        $input = $_POST['inputText']; //get input text
        echo "Success! You entered: " . $input;
    }    
?>
<html>
    <body>    
        <form action="" method="post">
            <input type="text" name="inputText"/>
            <input type="submit" name="SubmitButton"/>
        </form>    
    </body>
</html>