我建立了以下形式,它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">×</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>
答案 0 :(得分:2)
首先,命名您的提交按钮,这将是必需的。
<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>