今天学习进一步的通过网页作为交互界面,来对数据库进行管理
涉及到PHP对数据库的添加,删除,修改。
首先,把连接数据库和查询数据库的方法封装起来。
<?php
//function to connect to database
function doDB(){
global $mysqli;
//connect to server and select database
$mysqli = mysqli_connect("localhost", "root", "", "info");
if(mysqli_connect_errno()){
printf("Connect failed: &s\n",mysqli_connect_error());
exit();
}
}
//function to check email address
function emailChecker($email){
global $mysqli,$safe_email,$check_res;
//check that email is not already in list
$safe_email = mysqli_real_escape_string($mysqli, $email);
$check_sql = "SELECT id FROM SUBSCRIBERS
WHERE email = '".$safe_email."'
";
$check_res = mysqli_query($mysqli, $check_sql) or die(mysqli_errno($mysqli));
}
?>
接着,我们再写一段代码,把以上代码给include进去。
<?php
include 'ch19_include.php';
if(!$_POST){
$display_block = <<<END_OF_BLOCK
<form method="post" action="$_SERVER[PHP_SELF]">
<p>
<label for="email">Your Email Address:</label>
<br/>
<input type="email" id="email" name="email" size ="40" maxlength="150" />
</p>
<fiedkset>
<legend>Action:</legend>
<br/>
<input type="radio" id="action_sub" name="action" value="sub" checked="checked"/>
<label for="action_sub">subscribe</label>
<input type="radio" id="action_unsub" name="action" value="unsub" />
<label for="action_sub">unsubscribe</label>
<br />
</fiedlset>
<button type="submit" name="submit" value="submit">Submit</button>
</form>
END_OF_BLOCK;
}else if(($_POST)&&($_POST['action']=="sub")){
//trying to subscribe; validate email address
if($_POST['email']==""){
//如果email为空,则点击submit重新加载当前jiem
header("Location:manager.php");
exit;
}else {
//connect to database
doDB();
//check that email is in list
emailChecker($_POST['email']);
if(mysqli_num_rows($check_res)<1){
//free result
mysqli_free_result($check_res);
//add record
$add_sql = "INSERT INTO subscribers(email)
VALUES('".$safe_email."')";
$add_res = mysqli_query($mysqli, $add_sql) or die(mysqli_error($mysqli));
$display_block = "<p>Thanks for signing up</p>";
//close connection to MYSQL
mysqli_close($mysqli);
}else{
//print failure message
$display_block = "<p>You are already subscribed!</p>";
}
}
}else if(($_POST)&&($_POST['action']== "unsub")){
if($_POST['email']==""){
header("Location:manager.php");
exit;
}else {
//connect to database
doDB();
//check that email is in list
emailChecker($_POST['email']);
if(mysqli_num_rows($check_res)<1){
mysqli_free_result($check_res);
$display_block = "<p>Could not find your address!No action was taken</p>";
}else{
while($row = mysqli_fetch_array($check_res)){
$id = $row['id'];
}
$del_sql = "DELETE FROM subscribers WHERE id = ".$id;
$del_res = mysqli_query($mysqli, $del_sql) or die(mysqli_errno($mysqli));
$display_block = "<p>You are unsubscribed!</p>";
}
mysqli_close($mysqli);
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Subscribe/Unsubscribe to Mailing List</title>
</head>
<body>
<h1>Subscribe/Unsubscribe to a Mailing List</h1>
<?php echo "$display_block"?>
</body>
</html>
原理非常简单,逻辑清晰,HTML界面有两个选择按钮,根据选择按钮对邮件进行注册和反注册(就是进行数据库的添加和删除操作),以判断查询的结果的行数是否大于1来确定是否有结果。再对结果进行删除或者添加。