《Head First PHP & MySQL》 学习笔记 第四章 “总会有一些问题须要修复的”

   艾玛的顾客邮件列表飞速的膨胀,不过他的邮件招来了一些抱怨。尽管每一个人的抱怨都各有不一样,其实看起来都与顾客收到空邮件或者收到多个邮件有关。

  这两种状况都不太好,艾玛须要明确的知道问题出在哪里,并修复它。 php


  1. 顾客会收到空邮件是由于发送促销广告时艾玛并无填写内容,不当心按下了发送键,致使邮件发出去了,可是没有任何内容。
   同理,顾客登记邮箱时也可能并无填写内容,可是却成功登记空的,甚至错误的内容,因此要对这些这些数据进行验证。 mysql

//若是姓名和邮箱都是空的,强制退出。
	if(empty($name) && empty($email)) {
		exit('请填写姓名 和 邮箱');
	}
	//若是姓名 或者 邮箱都是空的,强制退出。
	else if(empty($name) || empty($email)){
		exit('请填写姓名 或者 邮箱');
	}


2. 而顾客收到多条邮件是由于相同的邮件地址登记了屡次,因此艾玛发送促销广告时,重复的邮件也发送过去了。 sql

    解决办法是顾客登记时须要先检查邮件是否已经存在了。
//执行SQL语句。
	$query = "SELECT * FROM email_list WHERE email = '{$email}'";
	$result = mysqli_query($dbc,$query) or die('执行SQL语句出错');
	$row = mysqli_fetch_assoc($result);
	//若是查询到有记录了,强制退出。
	if($row) {
		exit('您已经登记了邮件了');
	}


   3. 对于以前的重复邮件,删除 顾客重复的邮件时,不能经过邮件地址来删除,这样作的话,会把全部重复的邮件一并删除,因此须要修改数据库表,创建惟一值,删除经过惟一值删除。 数据库

//修改数据库表,创建惟一值。
ALTER TABLE email_list ADD id INT NOT NULL AUTO_INCREMENT FIRST,ADD PRIMARY KEY (id);
  修改删除方式为选择式删除。
<?php
 //定义常量,链接数据库,并设置编码。
 define('HOST','localhost');
 define('USER','root');
 define('PWD','root');
 define('DB','elvis_store');


 $dbc = mysqli_connect(HOST,USER,PWD,DB)  or die('链接数据库失败');
 mysqli_set_charset($dbc,"utf8");


 //若是提交了删除请求,删除对应id的顾客资料
 if(isset($_POST['submit'])) {
 $id = $_POST['id'];
 foreach($id as $key){
 $query = "DELETE FROM email_list WHERE id ='{$key}'"; 
 $result = mysqli_query($dbc,$query) or die('执行SQL语句出错');
 echo '邮件编号:'.$key.' 删除完毕<br />';
 }
 }
 // 列出顾客邮件列表
 echo '<form action="'.$_SERVER["PHP_SELF"].'" method="post">';
 $query = "SELECT * FROM email_list"; 
 $result = mysqli_query($dbc,$query) or die('执行SQL语句出错');
 while($row = mysqli_fetch_assoc($result)){
 echo '<input type="checkbox" name="id[]"  value="'.$row[id].'"/>'.$row[name]." ".$row[email].'<br />';
 }
 echo '<input type="submit" name="submit" value="删除选中邮件" /></form>';
?>
相关文章
相关标签/搜索