《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>';
?>
相關文章
相關標籤/搜索