零基础学习PHP笔记【三】数据库操作--邮件列表

今天学习进一步的通过网页作为交互界面,来对数据库进行管理

涉及到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来确定是否有结果。再对结果进行删除或者添加。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值