精华内容
下载资源
问答
  • 数据库主要功能 和 特点

    千次阅读 2012-12-28 10:49:02
    1、数据定义功能:DBMS(数据库管理系统 DataBase Management System)提供了DDL(数据定义语言 Data Definition Language),用户可以通过它方便的对数据库中的数据对象进行定义 2、数据组织、存储和管理:DBMS要...

    一、功能:

    1、数据定义功能DBMS(数据库管理系统 DataBase Management System)提供了DDL(数据定义语言 Data Definition Language),用户可以通过它方便的对数据库中的数据对象进行定义

    2、数据组织、存储和管理:DBMS要分类组织、存储和管理各种数据,包括数据字典、用户数据、数据的存取路径==

    3、数据操纵功能:DBMS 还提供了DML(数据操纵语言 Data Manipulation Language),用户可以使用DML操纵数据增、删、改、查

    4、数据库的事物管理和运行管理:数据库在建立、运用和维护时由数据库管理系统统一管理、统一控制,以保证数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复

    5、数据库的建立和维护功能:数据库初始数据的输入、转换功能,数据库的转储、恢复功能,数据库的重组织功能和性能监视、分析功能等。这些功能通常是由一些实用程序或管理工具完成的

    6、其他功能:DBMS与网络中其他软件系统的通信功能;一个DBMS与另一个DBMS或文件系统的数据转换功能;异构数据库之间的互访和互操作功能

    二、特点:

    数据结构化,数据的共享性高、冗余度低、易扩展,数据独立性高

    展开全文
  • 功能: DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态 登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。 ADMIN具有添加,删除,更新等权限。用户只能查看手机,...

    声明!

    最近几个月,不断地有站友向我索要完整的代码,其实之前我是全部粘贴到博客里供大家参考交流的。之所以删掉一部分,是因为有一些网站全盘照抄并标明为原创,以抄袭获取流量甚至盈利,违背了我的初衷。

    感谢各位不嫌弃我的代码粗陋。如果还有站友想要源代码,请在这篇博客下留下自己的联系方式。但是再次声明,之前和今后私下从我这里以任何方式要走的代码,都不能用作商业用途!

    请勿转载!

    谢谢!

    这是我在研究生期间,老师要求做的一个类似原始淘宝网的购物网站,
    因为不会PHP,为了写这个作业而新学的。
    做这个网站用了两周时间,在此把这个小项目做一个总结。

    这个小项目做的时间非常赶,一共两周,实际有效时间只有10天,中间还在忙其他的事。所以有很多不足之处。
    有些代码原本可以写的更精简,合并在一起。
    连接数据库和其他的一些执行sql语句的操作,可以封装在单独的文件里面调用,这里也都比较简单的哪里用到就在哪里处理了。
    数据库的链接方式用了两种,没有统一。

    还是有很多值得改进的地方。

    功能:

    DONE. 用户权限管理。包括管理员和普通用户。管理员有所有权限,包括更新网站状态
    登录的其他值为用户名和密码,用户名和密码正确,跳转到下一页。
    ADMIN具有添加,删除,更新等权限。用户只能查看手机,只能添加到购物车中的手机等。

    DONE.新用户:此模块适用于没有帐户的用户。这里用户可以创建一个帐户来登录。账户的创建是通过填写注册表单和用户的详细信息,如姓名,电话,电子邮件等来完成的。

    DONE.产品管理和展示:该模块展示手机产品信息,如产品编号,项目,名称,类别,产品图像,说明,功能和产品限制等。所有这些都将输入到数据库,因此可以在网站上找到。

    DONE.搜索:该模块可帮助客户根据自己的预算或兴趣来放松搜索。搜索可以在不同的类别上完成,如品牌,型号名称,型号,颜色或价格等。

    DONE:交易:在此模块中,购物车的管理已完成。此模块购物者可以选择任意数量的物品(手机,配件)并将它们添加到购物车,在从购物车购买物品后,所有要购买的物品都可以再次查看。如果他以后不喜欢,购物者也可以从购物车中取出。购物者还可以逐一检查购物车中保存的产品。由于产品从购物车中检出,总价格将相加。

    DONE:装运:在这个模块中,购物者可以选择合适的装运选项。购物者可以使用不同服务提供商提供的各种运送选项。

    DONE:付款:该模块描述了客户完成的付款。购物者可以选择不同的支付方式,并根据所选的支付方式的要求提供机密的支付信息。付款信息还可能包括购买型号,数量和供应商名称等信息。

    DONE:报告:在此模块中,将生成所有报告。无论何时出售物品或客户订购产品,都应立即通过电子邮件向其供应商发送警报,以便他可以尽快装运该物品。该模块有3个子模块;股票报告,订单报告和交付报告。

    • 股票报告将生成可用产品数量和产品状态的报告。
    • 订单报告将列出订购的产品清单以及购买该产品的客户详细信息,这些信息未送达。
    • 交付报告将生成已售出产品清单及其交付状态。

    ###1.数据库表设计
    下面是对数据库设计的一个说明,交作业用的。

    Design ideas of relational schema:
    Since the website will not be too complex, so I just design basic fields of the whole website logic. As for the tables “order_info” and “orderDetailRecord_info”, I separate order information into two tables to solve the problem that one order may have two types of products. Plus, the “p_image_url” field in the table “product_info”, will be used for analyzing url of images of products. Plus plus: actually an order may conclude many products, every products may choose different delivery method, but here we simplify it and assume that an order only have one delivery method.

    另外需要说明的是,
    delivery_info表和payment_info表中分别加入了一个random字段,是因为在写php处理的过程中,产生了相应的需要,具体处理请看代码。

    下面是具体的表名和字段:
    mysql1
    mysql2
    mysql3

    附上刚开始创建数据表的mysql代码,后期自此基础上有一些修改

    `admin_info(admin_id,admin_name,admin_pwd)`
    CREATE TABLE IF NOT EXISTS admin_info(
        admin_id int(10) NOT NULL AUTO_INCREMENT,
        admin_name varchar(50) NOT NULL,
        admin_pwd varchar(50) NOT NULL,
        PRIMARY KEY(admin_id)
    );
    
    
    `user_info(u_id,u_name,u_pwd,u_phone,u_email)`
    CREATE TABLE IF NOT EXISTS user_info(
        u_id int(10) NOT NULL AUTO_INCREMENT,
        u_name varchar(50) NOT NULL,
        u_pwd varchar(50) NOT NULL,
        u_phone int(50) NOT NULL,
        u_email varchar(50) NOT NULL,
        PRIMARY KEY(u_id)
    );
    
    
    `product_info(p_id, p_name,p_brand, p_type,p_price,p_inventory,p_descr,p_color,p_image_url)`
    CREATE TABLE IF NOT EXISTS product_info(
        p_id int(10) NOT NULL AUTO_INCREMENT,
        p_name varchar(50) NOT NULL,
        p_brand varchar(50) NOT NULL,
        p_type int(50) NOT NULL,
        p_price varchar(50) NOT NULL,
        p_inventory varchar(50) NOT NULL,
        p_descr varchar(100) NOT NULL,
        p_color varchar(50) NOT NULL,
        p_image_url varchar(200) NOT NULL,
        PRIMARY KEY(p_id)
    );
    
    
    `payment_info(pay_id,pay_user,receive_user,pay_account,receive_account,pay_status)`
    CREATE TABLE IF NOT EXISTS payment_info(
        pay_id int(10) NOT NULL AUTO_INCREMENT,
        pay_user varchar(50) NOT NULL,
        receive_user varchar(50) NOT NULL,
        pay_account int(50) NOT NULL,
        receive_account int(50) NOT NULL,
        pay_status boolean NOT NULL,
        PRIMARY KEY(pay_id)
    );
    
    
    `delivery_info(d_id,d_company,d_init_add,d_trgt_add,d_price)`
    CREATE TABLE IF NOT EXISTS delivery_info(
        d_id int(10) NOT NULL AUTO_INCREMENT,
        d_company varchar(50) NOT NULL,
        d_init_add varchar(50) NOT NULL,
        d_trgt_add varchar(50) NOT NULL,
        d_price varchar(50) NOT NULL,
        PRIMARY KEY(d_id)
    );
    
    
    `order_info(o_id,u_id,d_id,o_date,pay_id)`
    CREATE TABLE IF NOT EXISTS order_info(
        o_id int(10) NOT NULL AUTO_INCREMENT,
        u_id int NOT NULL,
        d_id int NOT NULL,
        o_date int(50) NOT NULL,
        pay_id int NOT NULL,
        PRIMARY KEY(o_id),
        FOREIGN KEY (u_id) REFERENCES user_info(u_id),
        FOREIGN KEY (d_id) REFERENCES delivery_info(d_id),
        FOREIGN KEY (pay_id) REFERENCES payment_info(pay_id)
    );
    
    
    `orderDetailRecord_info(r_id,o_id,p_id,p_num)`
    CREATE TABLE IF NOT EXISTS orderDetailRecord_info(
        r_id int(10) NOT NULL AUTO_INCREMENT,
        o_id int NOT NULL,
        p_id int NOT NULL,
        p_num int(50) NOT NULL,
        PRIMARY KEY(r_id),
        FOREIGN KEY (o_id) REFERENCES order_info(o_id),
        FOREIGN KEY (p_id) REFERENCES product_info(p_id)
    );
    
    
    `stock_info(s_id,p_id,p_inventory)`
    CREATE TABLE IF NOT EXISTS stock_info(
        s_id int(10) NOT NULL AUTO_INCREMENT,
        p_id int(10),
        p_inventory int(50),
        PRIMARY KEY(s_id),
        FOREIGN KEY(p_id) REFERENCES product_info(p_id)
    );
    
    
    
    

    下面是以上功能的代码以及一些相关的解释:
    最简单的主界面:
    index.html
    //只放了一个注册一个登录的链接

    <html>
    <head>
    <meta charset="utf-8">
    <title>Phones on saling</title>
    </head>	
    <h1>Phones on saling!</h1>
    	<a href="chooseCharactor.html" target="_blank">Sign in the website.</a><br><br>
    	<a href="login.php" target="_blank">Login into the website.</a>
    </html>
    
    

    ###1.注册功能:
    首先要选择角色类型:(这个功能是刚开始练习做的,其实应该把角色选择和注册功能都放在一个页面里,现在分为了三个,分别是选择,管理员注册和用户注册,比较麻烦。后来时间紧,就没有再改了,实际可以合并为一个。)

    chooseCharacter.html

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in to phone website</title>
    </head>	
    	<h1>Choose your charactor</h1>
    	Please choose which kind of charactor you want to sign in?
    	<form action="chooseCharactor.php" method="get">
        	<select name="q">
        	<option value="">Choose charactor</option>
        	<option value="admin">Admin</option>
        	<option value="user">User</option>
        	</select><br>
        	<input type="submit" value="Submit">
    	</form>
    </html>
    
    

    chooseCharacter.php
    //选择相应的角色后,会跳转到不同角色的注册界面

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Choose charactor</title>
    </head>
    <body>
    	<?php
    	       $q = isset($_GET['q'])? htmlspecialchars($_GET['q']) : '';
    	       if($q == "") {
                    echo "You must choose a charactor!";
                }else if($q != ""){
                    if($q =='admin') {
                        header('Location: adminSign.html');
                    } else if($q =='user') {
                        header('Location: sign.html');
                    }
                }
    	?>
    </body>
    </html>
    

    1)管理员注册:
    adminSign.html
    //管理员注册的界面。管理员注册需要拿到内部的Invitation number(邀请码),注册方可进行。如果已经注册,可以点击下方的login链接,直接登录,将跳转到login.php界面。

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in to phone website as admin user</title>
    </head>	
    	<h1>Sign in</h1>
    	<form action="adminSign.php" method="post">
     		User name:<input type="text" name="username"><br>
     		User password:<input type="password" name="psw"><br>
     		Confirm user password:<input type="password" name="cofpsw"><br>
     		Invitation number:<input type="text" name="invtnum"><br>
     		<input type="submit" name="submit">
    	</form>
    	If you have already signed in, please click here to login.<br>
    	<a href="login.html" target="_blank">Login into the website.</a>
    </html>
    
    

    adminSign.php
    //处理管理员注册请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Sign in the phone web as admin user, success!</title>
    </head>
    <body>
    	<?php
    		include 'executeSql.php';
    		$userName = $_POST["username"];
    		$pwd = $_POST["psw"];
    		$cofPsw = $_POST["cofpsw"];
    		$invtNum = $_POST["invtnum"];
    
    		if($userName == ""||$pwd == ""||$cofPsw == ""|| $invtNum == ""){
    			echo "None of the value can be empty!";
    		}else if($pwd != $cofPsw){
    			echo "The password entered for two time is not same!";
    		}else if($invtNum != "SN90IE58KP"){
    			echo "The invitation number is wrong!";	
    		}else{
    			echo "All values are right, your have sucessfully sign in as admin user!";
    			$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('" . $userName . "','" . $pwd . "');";
    			//$sql = "INSERT INTO admin_info (admin_name,admin_pwd) VALUES('superadmin','admin123');";
    			//echo $sql;
    			executeSql($sql);
    		}
    	?>
    </body>
    </html>
    
    

    2)用户注册
    sign.html
    //用户注册界面

    <html>
    <head>
    <meta charset="utf-8">
    <title>Sign in to phone website</title>
    </head>	
    <h1>Sign in</h1>
    <form action="sign.php" method="post">
     	User name:<input type="text" name="username"><br>
     	User password:<input type="password" name="psw"><br>
     	Confirm user password:<input type="password" name="cofpsw"><br>
     	Phone:<input type="text" name="phone"><br>
     	Email:<input type="email" name="email"><br>
     <input type="submit" name="submit">
    </form>
    </html>
    
    

    sign.php
    //处理用户注册请求,收集基本信息并加入到数据库。如果存在数据缺失,则不能注册,对两次输入的密码做了基本的检测,并检测邮箱格式的正确性。
    //注册后会跳转到login.php界面,但是因为普通用户注册后,会自动为当前用户登录,并在当前的cookie中存储用户登录的状态,因此不需要再登录一次,可以直接由网页链接跳转到手机购买界面。

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Sign in sucess!</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	}
    	/*.divcss5-right{width:320px; height:120px;border:1px solid #F00;float:right} */
    	.divcss5-right{float:right;} 
    	/* css注释:对divcss5-right设置float:right即可让对象靠右浮动 */
    	</style>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    		return array($flag,$feedback);
    		}
    	}
    
    	$userName = $_POST["username"];
    	$pwd = $_POST["psw"];
    	$cofPsw = $_POST["cofpsw"];
    	$phone = $_POST["phone"];
    	$email = $_POST["email"];
    
    	if($userName == "" || $pwd == "" || $cofPsw == "" || $phone == "" || $email == ""){
    		echo "None of the value can be empty!";
    	}
    	else if($pwd != $cofPsw){
    		echo "The password entered for two time is not same!";
    	}else if ($pwd == $cofPsw){
    		$sql = "INSERT INTO user_info (u_name,u_pwd,u_phone,u_email) VALUES('" .$userName ."','" . $pwd ."','" . $phone . "','" . $email . "');";
    		$result = executeSql($sql);
    		if($result){
    			$select_sql = "SELECT u_id FROM user_info WHERE u_name = '".$userName."';";
    			$result = executeSql($select_sql);
    			if($result[0]){
    				setcookie('login_status',true);
    				while($row = mysqli_fetch_assoc($result[1])){
    					$u_id=$row["u_id"];
    					setcookie('u_id',$u_id);
    				}
    				header("location:login.php");
    			}
    		}
    	}
    	?>
    </body>
    </html>
    
    

    ###2.登录功能:
    login.php
    //用户登录的界面,可以选择管理员用户登录和普通用户登录。
    作为管理员用户登录后,跳转到产品管理界面。作为普通用户登录后,跳转到网站主页,即手机购买界面。

    <html>
    <head>
    <meta charset="utf-8">
    <title>Login in to phone website</title>
    <style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: left;
    	}
    	.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}
    	</style>
    <h2>User Login</h2>
    </head>
    	<body class = "body">
    		<?php
    		if(isset($_COOKIE['login_status'])){
    			echo "Login already.";
    		?>
    		<br>
    		<br>
    		<a href='showPhones.php'>Click here to buy phones.</a>
    		<?php
    		}else{
    		?>
    		<form action="process_login.php" method="post">
    
    			<select name="character">
    				<option value="">Choose your character</option>
    				<option value="admin">admin</option>
    				<option value="user">user</option>
    			</select><br>
    
     			User name:<input type="text" name="username"><br>
    			User password:<input type="password" name="psw"><br>
    			<input type="submit" class = "button" name="submit" value="Choose">
    		</form>
    		<?php
    		}
    		?>
    	</body>
    </html>
    
    

    process_login.php处理登录请求

    <!DOCTYPE html>
    <html>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$userName = $_POST["username"];
    	$pwd = $_POST["psw"];
    
    	if(isset($_POST["submit"])){
    		$selected_Charactor = $_POST["character"];	
    	}else{
    		echo "You have choose the wrong charactor!";
    		echo "<br>";
    	}
    
    	if($userName == ""||$pwd == ""){
    		echo "None of the value can be empty!";
    		echo "<br>";
    	}
    
    	//declare the sql var and decides the value
    	//$sql;
    	if($selected_Charactor == "admin"){
    		$sql = "SELECT admin_id FROM admin_info WHERE admin_name = '" . $userName . "' and admin_pwd = '". $pwd ." ' ;" ;
    		$result = executeSql($sql);
    		if ($result[0]) {
    			header('Location: p_manage.php');
    		} else {
    			echo "Error! Something wrong in your username or password!";
    			echo "<br>";
    		}
    	}else if($selected_Charactor == "user"){
    		$sql = "SELECT u_id FROM user_info WHERE u_name = '" . $userName ."' and u_pwd = '".$pwd."' ;" ;
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('login_status',true);
    			while ($row = mysqli_fetch_assoc($result[1])){
    					$u_id=$row["u_id"];
    					setcookie('u_id',$u_id);
    			}
    			header('Location: showPhones.php');
    		}else{
    			echo "Error! Something wrong in your username or password!";
    			echo "<br>";
    		}
    	}
    	?>
    </body>
    </html>
    
    
    

    ###3.手机产品管理(管理员):
    1)增加新的手机:
    add_product.html
    //增加新的手机库存

    <html>
    <head>
    	<title>Add new product</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "12%";
    	height: "20%";
    	}
    	</style>
    </head>
    <h1 align="center">Hello admin user, you can add a new product into database!</h1>
    <body>
    	<form action="add_product.php" method="post">
    		<table align="center" class = "table" border="1">
            	<th>Product Name</th>
            	<th>Product Brand</th>
            	<th>Product Type</th>
            	<th>Product Price</th>
            	<th>Product Inventory</th>
            	<th>Product Description</th>
            	<th>Product Color</th>
            	<th>Product Url</th>
    			<tr>
    				<td><input type="text" name="name"></td>
    				<td><input type="text" name="brand"></td>
    				<td><input type="text" name="type"></td>
    				<td><input type="text" name="price"></td>
    				<td><input type="text" name="inventory"></td>
    				<td><input type="text" name="descr"></td>
    				<td><input type="text" name="color"></td>
    				<td><input type="text" name="url"></td>
    			</tr>
    		</table>
    		<input type="submit" class = "button" name="submit" value="Submit">
    	</form>
    </body>
    </html>
    
    

    add_product.php
    //处理增加请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Add new product</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    			echo "<br>";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			// 创建连接
    			$conn = new mysqli($servername, $username, $password, $dbname);
    			// 检测连接
    			if ($conn->connect_error) {
    				die("Fail to connect!: " . $conn->connect_error);
    			}
    			//执行sql语句
    			if ($conn->query($sql) === TRUE) {
    				$flag = TRUE;
    			} else {
    				echo "Error: " . $sql . "<br>" . $conn->error;
    			}
    			$conn->close();
    			return $flag;
    		}
    	}
    
    	$p_name=$_POST["name"];
    	$p_brand=$_POST["brand"];
    	$p_type=$_POST["type"];
    	$p_price=$_POST["price"];
    	$p_inventory=$_POST["inventory"];
    	$p_descr=$_POST["descr"];
    	$p_color=$_POST["color"];
    	$p_image_url=$_POST["url"];
    
    	if($p_name ==""||$p_brand ==""||$p_type ==""||$p_price ==""||$p_inventory ==""||$p_descr ==""||$p_color ==""){
    		echo "You can not provide empty values!";
    	}else{
    		$sql = "INSERT INTO product_info(p_name,p_brand,p_type,p_price,p_descr,p_color,p_image_url) VALUES 
    		('".$p_name."','".$p_brand."','".$p_type."','".$p_price."','".$p_descr."','".$p_color."','".$p_image_url."');";
    
    		$result = executeSql($sql);
    		if($result){
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			// 创建连接
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			// Check connection
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$select_sql = "SELECT * FROM product_info WHERE p_name = '".$p_name."';";
    			$result=mysqli_query($conn,$select_sql);//result is a PHP array
    
    			var_dump($result);
    			$num_rows=mysqli_num_rows($result);
    			//echo $num_rows;
    
    			mysqli_close($conn);
    
    			while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    
    			$insert_sql = "INSERT INTO stock_info(p_id,p_inventory) VALUES (".$p_id.",".$p_inventory.");";
    			$feedback = executeSql($insert_sql);
    			if($feedback){
    				header("location:p_manage.php");
    			}
    		}
    	}
    }
    
    
    ?>
    <br>
    </body>
    </html>
    
    

    2)管理员管理手机(查看,删除,etc)
    p_manage.php

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Read product information from database</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "10%";
    	}
    	a:link {color:#000000;}      /* 未访问链接*/
    	a:visited {color:#4CAF50;}  /* 已访问链接 */
    	a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */
    	a:active {color:#0000FF;}  /* 鼠标点击时 */
    	</style>
    </head>
    	<h1 align="center">Welcome! Admin user. This is the page of Product Management.</h1>
    	<script src="http://libs.baidu.com/jquery/2.1.4/jquery.min.js"></script>
    	<script>
    		function newPage(){
    			window.location.assign("add_product.html")
    		}
    		function deleteProduct(p_id){
    			$.ajax({
    				type: "POST",
    				url: "deleteProduct.php",
    				data: "pid="+p_id,
    				success: function(msg){
    					window.location.reload();
    				}
    			});
    		}
    	</script>
    <body>
    	<table border="1" align="center" class = "table">
        	<tr>
            	<th align="center" width="10%">Product ID</th>
            	<th align="center" width="10%">Product Name</th>
            	<th align="center" width="10%">Product Brand</th>
            	<th align="center" width="10%">Product Type</th>
            	<th align="center" width="10%">Product Price</th>
            	<th align="center" width="10%">Product Inventory</th>
            	<th align="center" width="10%">Product Description</th>
            	<th align="center" width="10%">Product Color</th>
            	<th align="center" width="10%">Product Image</th>
            	<th align="center" width="10%">Delete Product</th>
        	</tr>
    	
    	<?php
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		// 创建连接
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$sql = "SELECT * FROM product_info;";
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    		//echo $num_rows;
    
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=mysqli_query($conn,$select_sql);
    			$select_num_rows=mysqli_num_rows($result);
    			if($select_num_rows){
    				while($select_rows = mysqli_fetch_assoc($select_result)){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			
    			echo "<tr>";
    			echo "<td align='center'>".$p_id."</td>";
    			echo "<td align='center'>".$p_name."</td>";
    			echo "<td align='center'>".$p_brand."</td>";
    			echo "<td align='center'>".$p_type."</td>";
    			echo "<td align='center'>".$p_price."</td>";
    			echo "<td align='center'>".$p_inventory."</td>";
    			echo "<td align='center'>".$p_descr."</td>";
    			echo "<td align='center'>".$p_color."</td>";
    
    			//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';
    			$imageData = base64_encode(file_get_contents($p_image_url));
    			//var_dump($imageData);
    			//echo '<div class="img">';
    			echo '<td align="center">[外链图片转存失败(img-WDPS9q7a-1562059529495)(data:image/jpeg;base64,'.$imageData.')]</td>';
    			//echo '</div>';
    			//echo "<td><input type='button' value='Delete' onclick='deleteProduct(".$p_id.")'></td>";
    			?>
    			<td align="center"><a href='deleteProduct.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td>
    			<?php
    			echo "</tr>";
    			$i++;
    		}
    		mysqli_close($conn);
    	?>
    	</table>
    	<br><br>
    	<div class="divcss5-right">
    	<input type="button" class = "button" value="Add new product" onclick="newPage()">
    	</div>
    </body>
    </html>
    
    

    界面如图所示(缩小版的界面)
    这里写图片描述

    4.用户购买手机

    手机展示界面,并可实现增加产品到购物车,没有实现批量添加,每点击一次手机产品对应的添加按钮,则购物车中增加一条该产品的记录。
    添加后会在购物车功能模块处理,如果已经添加够了,也可以直接点击页面最下方的链接,查看购物车。

    showPhones.php
    //代码和p_manage.php类似,有些功能类似或重合

    <!DOCTYPE html>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Product information</title>
    	<style>
    	.button {
    		background-color: #4CAF50;
    		border: none;
    		color: white;
    		padding: 15px 32px;
    		text-align: center;
    		text-decoration: none;
    		display: inline-block;
    		font-size: 16px;
    		margin: 4px 2px;
    		cursor: pointer;
    		align-self:right;
    		float: right;
    	}
    	.table{
    	border-style:solid;
    	border-color:#98bf21;
    	align-self: center;
    	align-items: center;
    	width: "10%";
    	}
    	.body{font-family:Arial,Helvetica,sans-serif;font-size:20px;}
    	a:link {color:#000000;}      /* 未访问链接*/
    	a:visited {color:#4CAF50;}  /* 已访问链接 */
    	a:hover {color:#4CAF50;}  /* 鼠标移动到链接上 */
    	a:active {color:#0000FF;}  /* 鼠标点击时 */
    
    	</style>
    </head>
    	<h2 align='center'>Welcome! You can buy your own phone here.</h2>
    <body class="body">
    	<table border="1" class="table"  align='center'>
        	<tr>
            	<th align='center' width="10%">Product Name</th>
            	<th align='center' width="10%">Product Brand</th>
            	<th align='center' width="10%">Product Type</th>
            	<th align='center' width="10%">Product Price</th>
            	<th align='center' width="10%">Product Inventory</th>
            	<th align='center' width="10%">Product Description</th>
            	<th align='center' width="10%">Product Color</th>
            	<th align='center' width="10%">Product Image</th>
            	<th align='center' width="10%">Add to Cart</th>
        	</tr>
    	
    	<?php
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		// 创建连接
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$sql = "SELECT * FROM product_info;";
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    		//echo $num_rows;
    
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result)){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=mysqli_query($conn,$select_sql);
    			$select_num_rows=mysqli_num_rows($result);
    			if($select_num_rows){
    				while($select_rows = mysqli_fetch_assoc($select_result)){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			
    			echo "<tr>";
    			echo "<td align='center'>".$p_name."</td>";
    			echo "<td align='center'>".$p_brand."</td>";
    			echo "<td align='center'>".$p_type."</td>";
    			echo "<td align='center'>".$p_price."</td>";
    			echo "<td align='center'>".$p_inventory."</td>";
    			echo "<td align='center'>".$p_descr."</td>";
    			echo "<td align='center'>".$p_color."</td>";
    
    			//$image = 'https://cdn2.gsmarena.com/vv/pics/apple/apple-iphone-x-new-1.jpg';
    			$imageData = base64_encode(file_get_contents($p_image_url));
    			//var_dump($imageData);
    			echo '<td align="center">[外链图片转存失败(img-ePhuvnsp-1562059529496)(data:image/jpeg;base64,'.$imageData.')]</td>';
    ?>
    
    			<td><a  align='center' href='process_shopCart.php?goods_id=<?php echo $p_id; ?>&goods_name=<?php echo $p_name; ?>'>addCart</a></td>
    <?php
    
    			echo "</tr>";
    			$i++;
    		}
    		mysqli_close($conn);
    ?>
    	</table>
    	<br><br>
    	<a  align='right' href='view_shopCart.php'>Enough adding, click here to shopcart.</a>
    	<br><br><br>
    </body>
    </html>
    
    

    ###5.购物车
    1)process_shopCart.php//处理添加请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>All fees of shipment.</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$unitPrice  = 0.0;
    	if(isset($_POST["submit"])){
    		$orignLocation = $_POST["orgn_location"];
    		$targetLocation = $_POST["trgt_location"];
    		$company = $_POST["company"];
    
    		if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}
    		if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}
    		if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}
    		if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}
    		if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}
    
    		$totalItem = $_COOKIE['total_item'];
    		$shipmentPrice = $unitPrice * $totalItem;
    
    		$numbers = range (1,1000000); 
    		//shuffle 将数组顺序随即打乱 
    		shuffle ($numbers); 
    		//array_slice 取该数组中的某一段 
    		$num=1; 
    		$result = array_slice($numbers,0,$num); 
    		$d_random = $result[0];
    
    		$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)
    		VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('shipment_price',$shipmentPrice);
    			$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					//var_dump($row);
    					$d_id=$row["d_id"];
    					setcookie('d_id',$d_id);
    					setcookie('shipment_status',true);
    				}
    			}
    		}
    	}
    	header("location:payInfo.php");
    	?>
    </body>
    </html>
    

    2)view_shopCart.php//查看购物车

    <?php
    session_start();
    ?>
    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shop cart</title>
    </head>
    <h1>View your shop cart here.</h1>
    <body>
    	<table border="1">
    		<tr>
    			<th>Product Name</th>
    			<th>Product Brand</th>
    			<th>Product Price</th>
    			<th>Product Description</th>
    			<th>Product Color</th>
    			<th>Counts</th>
    			<th>Delete from Cart</th>
    		</tr>
    		<?php
    		$totalPrice = 0;
    		$totalItem = 0;
    		$p_info = 0;
    		if(isset($_SESSION['shop-cart'])){
    			foreach ($_SESSION['shop-cart'] as $item){
    				$p_id = $item[0];
    				$p_name = $item[1];
    				$goods_num = $item[2];
    
    				$p_info = $p_info.$p_id.",".$goods_num."/";
    				
    				$servername = "localhost";
    				$username = "root";
    				$password = "";
    				$dbname = "hw";
    
    				$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    				if (mysqli_connect_errno()){
    					echo "Failed to connect to MySQL: " . mysqli_connect_error();
    				}
    
    				$sql = "SELECT * FROM product_info WHERE p_id =".$p_id.";";
    				$result=mysqli_query($conn,$sql);//result is a PHP array
    
    				$num_rows=mysqli_num_rows($result);
    				//echo $num_rows;
    
    				mysqli_close($conn);
    
    
    				while ($row = mysqli_fetch_assoc($result)){
    					$p_brand=$row["p_brand"];
    					$p_type=$row["p_type"];
    					$p_price=$row["p_price"];
    					//$p_inventory=$row["p_inventory"];
    					$p_descr=$row["p_descr"];
    					$p_color=$row["p_color"];
    
    
    					echo "<tr>";
    					echo "<td>".$p_name."</td>";
    					echo "<td>".$p_brand."</td>";
    					echo "<td>".$p_price."HKD</td>";
    					echo "<td>".$p_descr."</td>";
    					echo "<td>".$p_color."</td>";
    					echo "<td>".$goods_num."</td>";
    			?>
    
    					<td><a href='delCart.php?goods_id=<?php echo $p_id; ?>'>Delete</a></td>
    			<?php
    					echo "</tr>";
    					$singlePrice = $p_price * $goods_num;
    					$totalPrice = $totalPrice + $singlePrice;
    					$totalItem = $totalItem + $goods_num;
    					setcookie("total_item",$totalItem);
    					setcookie("phones_price",$totalPrice);
    				}
    			}
    			//echo $p_info;
    			setcookie('p_info',$p_info);
    		?>
    		<tr>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td></td>
    			<td><a href='clearCart.php?goods_id=<?php echo $p_id; ?>'>Clear cart</a></td>
    			<td>
    				<?php
    				echo "".$totalItem."   Items. ";
    				echo "Totol prize: ".$totalPrice." HKD";
    				?>
    			</td>
    		</tr>
    	</table>
    	<br>
    	<a href='shipment.php'>Shipment</a>
    	<br>
    	<?php
    }else{
    	echo "The shop cart is empty!";
    	?>
    	<br><br>
    	<a href='showPhones.php'>Back to add goods</a>
    	<?php
    }
    ?>
    
    
    </body>
    </html>
    
    

    购物车如下图:
    购物车界面

    购物车中会展示所有产品的信息,并计算他们的总价格。

    3)delCart.php
    //如果用户在查看购物车时点击删除某项产品,将该产品从购物车中全部删除

    <?php
    session_start();
    
    //$p_name = $_GET["goods_name"];
    $p_id = $_GET["goods_id"];
    $goods_num = 1;
    
    
    function id_inarray($findID, $cart_array)
    {
        $flag = false;
        $counter = 0;
        foreach ($cart_array as $itemList) {
            if (strcmp($itemList[0], $findID) == 0) {
                $flag = true;
                break;
            }
            $counter++;
        }
        return array($flag, $counter);
    }
    
    
    
    $result = id_inarray($p_id,$_SESSION['shop-cart']);
    
    if($result[0]){
    	//如果存在该项,从session中删除
    	if(isset($result[1])){
    		unset($_SESSION['shop-cart'][$result[1]]);
    		$_SESSION['shop-cart'] = array_values($_SESSION['shop-cart']);
    	}
    }else{
    	echo "Cannot delete non-existent items!";
    }
    
    header("location:view_shopCart.php");
    ?>
    

    4)clearCart.php
    //如果用户在查看购物车时,点击了清空购物车,将当前购物车中内容全部清空

    <?php
    session_start();
    $p_id = $_GET["goods_id"];
    echo $p_id;
    
    if(isset($_SESSION['shop-cart'])){
    	echo "destroy session";
    	echo "<br>";
    	echo "<br>";
    	$result = session_destroy();
    }else{
    	echo "There is no goods in shop cart!";
    }
    
    echo "<br>";
    echo $result;
    echo "<br>";
    echo "<br>";
    var_dump($_SESSION);
    header("location:view_shopCart.php");
    ?>
    

    ###6.物流
    点击购物车中的’shipment’,选择装运物流信息。
    shipment.php

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shipment</title>
    </head>
    <?php
    if(isset($_COOKIE['shipment_status'])){
    ?>
    <h1>You have already fill the shipment information</h1>
    <body><a href='payInfo.php'>Click here to pay</a></body>
    <?php
    }
    else{
    ?>
    <h1>Choose your shipment way</h1>
    <body>
    	<form action="process_shipment.php" method="post">
    		<table>
    			<th>Delivery Company</th>
    			<th>Orign Location</th>
    			<th>Target Location</th>
    			<tr>
    				<td>
    					<select name="company">
    						<option value="">Choose Company</option>
    						<option value="shun_feng">Shun Feng</option>
    						<option value="zhong_tong">Zhong Tong</option>
    						<option value="yuan_tong">Yuan Tong</option>
    						<option value="yun_da">Yun Da</option>
    						<option value="shen_tong">Shen Tong</option>
    					</select><br>
    				</td>
    				<td><input type="text" name="orgn_location"></td>
    				<td><input type="text" name="trgt_location"></td>
    			</tr>
    		</table>
    		<input type="submit" name="submit" value="Submit">
    	</form>
    </body>
    <?php
    }
    ?>
    </html>
    

    process_shipment.php
    //处理物流信息请求

    <!DOCTYPE html>
    <html>
    <head>
    	<title>All fees of shipment.</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    
    	$unitPrice  = 0.0;
    	if(isset($_POST["submit"])){
    		$orignLocation = $_POST["orgn_location"];
    		$targetLocation = $_POST["trgt_location"];
    		$company = $_POST["company"];
    
    		if($company == "shun_feng"){$unitPrice = 80.0;setcookie("shipment_way",$company);}
    		if($company == "zhong_tong"){$unitPrice = 40.0;setcookie("shipment_way",$company);}
    		if($company == "yuan_tong"){$unitPrice = 50.0;setcookie("shipment_way",$company);}
    		if($company == "yun_da"){$unitPrice = 39.8;setcookie("shipment_way",$company);}
    		if($company == "shen_tong"){$unitPrice = 57.6;setcookie("shipment_way",$company);}
    
    		$totalItem = $_COOKIE['total_item'];
    		$shipmentPrice = $unitPrice * $totalItem;
    
    		$numbers = range (1,1000000); 
    		//shuffle 将数组顺序随即打乱 
    		shuffle ($numbers); 
    		//array_slice 取该数组中的某一段 
    		$num=1; 
    		$result = array_slice($numbers,0,$num); 
    		$d_random = $result[0];
    
    		$sql = "INSERT INTO delivery_info (d_company, d_init_add, d_trgt_add, d_price, d_random)
    		VALUES ('".$company."', '".$orignLocation."', '".$targetLocation."',".$shipmentPrice.",".$d_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			setcookie('shipment_price',$shipmentPrice);
    			$select_sql = "SELECT d_id FROM delivery_info WHERE d_random = ".$d_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					//var_dump($row);
    					$d_id=$row["d_id"];
    					setcookie('d_id',$d_id);
    					setcookie('shipment_status',true);
    				}
    			}
    		}
    	}
    	header("location:payInfo.php");
    	?>
    </body>
    </html>
    

    物流选择界面如图:
    这里写图片描述

    ###7.支付
    1)payInfo.php
    //计算商品和物流的总价格并展示,让用户选择支付方式。如果已经选择了支付方式(检查cookie中的值),提升已经选择,并且给出跳转动支付页面的链接。否则让用户选择支付方式,提供了四种,微信,支付宝,信用卡和中国银联,默认选项为支付宝

    <html>
    <head>
    	<meta charset="utf-8">
    	<title>Shop cart</title>
    </head>
    <h1>Total money here, please fill your payment information.</h1>
    <body>
    	
    	<?php
    	if(isset($_COOKIE['pay_way'])){
    		echo "You have fill the payment information.";
    	?>
    	<br>
    		<a href='pay_money.php'>Click here to continue</a>
    	<?php
    	}
    	else{
    	?>
    	<table border="1">
    		<tr>
    			<th>Total Item</th>
    			<th>Phones Price</th>
    			<th>Shipment Way</th>
    			<th>Shipment Price</th>
    			<th>Total Price</th>
    		</tr>
    		<?php
    		$total_item = $_COOKIE['total_item'];
    		$shipment_price = $_COOKIE['shipment_price'];
    		$shipment_way = $_COOKIE['shipment_way'];
    		$phonesPrice = $_COOKIE['phones_price'];
    		$totalPrice = $shipment_price + $phonesPrice;
    		echo "<tr>";
    		echo "<td>".$total_item."</td>";
    		echo "<td>".$phonesPrice."</td>";
    		echo "<td>".$shipment_way."</td>";
    		echo "<td>".$shipment_price."</td>";
    		echo "<td>".$totalPrice."</td>";
    		echo "</tr>";
    		?>
    	</table>
    	<br>
    	<form action="payway.php" method="post">
    		<input type="radio" name="payway" value="Alipay" checked="">Alipay
    		<input type="radio" name="payway" value="WeChatPay">WeChatPay
    		<input type="radio" name="payway" value="Credit">Credit card
    		<input type="radio" name="payway" value="UnionPay">UnionPay<br>
    		<table border = '1'>
    			<tr>
    				<th>Pay user</th>
    				<th>Pay account</th>
    				<th>Receive user</th>
    				<th>Receive account</th>
    			</tr>
    			<tr>
    				<th><input type="text" name="payuser"></th>
    				<th><input type="text" name="payaccount"></th>
    				<th><input type="text" name="receiveuser"></th>
    				<th><input type="text" name="receiveaccount"></th>
    			</tr>
    		</table>		
    		<input type="submit" value="Submit">
    	</form>
    <?php
    }
    ?>
    
    </body>
    </html>
    
    

    界面如图:
    这里写图片描述

    2)pay_way.php
    //将用户支付信息填入数据库表中,并跳转到pay_money.php

    <?php
    
    function executeSql($sql){
    	$flag = false;
    	$feedback = array();
    	if($sql == ""){
    		echo "Error! Sql content is empty!";
    	}else{
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		if (mysqli_connect_errno()){
    			echo "Failed to connect to MySQL: " . mysqli_connect_error();
    		}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    	$payWay = $_POST['payway'];
    	$payUser = $_POST['payuser'];
    	$payAccount = $_POST['payaccount'];
    	$receiveUser = $_POST['receiveuser'];
    	$receiveAccount = $_POST['receiveaccount'];
    	$payStatus = false;
    
    	$numbers = range (1,1000000); 
    	shuffle ($numbers); 
    	$num=1; 
    	$result = array_slice($numbers,0,$num); 
    	$pay_random = $result[0];
    
    	if($payUser == "" ||$payAccount == "" || $receiveUser == "" || $receiveAccount == ""){
    		echo "You must fill the blanks.";
    	}else{
    		$sql = "INSERT INTO payment_info (pay_user, receive_user, pay_account, receive_account,pay_way,pay_status,pay_random)
    		VALUES ('".$payUser."', '".$receiveUser."', ".$payAccount.",".$receiveAccount.",'".$payWay."','".$payStatus."',".$pay_random.");";
    
    		$result = executeSql($sql);
    
    		if($result[0]){
    			$select_sql = "SELECT pay_id FROM payment_info WHERE pay_random = ".$pay_random.";";
    			$select_result = executeSql($select_sql);
    			if($select_result[0]){
    				while ($row = mysqli_fetch_assoc($select_result[1])){
    					$pay_id=$row["pay_id"];
    					setcookie('pay_id',$pay_id);
    				}
    			}
    			setcookie('pay_way',$payWay);
    		}
    		header("location:pay_money.php");
    	}
    ?>
    

    3)pay_money.php
    //根据payInfo.php中选择的支付方式,打开相应的界面,让用户登录并付钱。
    然后将订单信息全部丢给process_order.php处理
    //这里有一点需要特别说明的是,因为这是一个练习,数据都是虚拟的,所以无法从支付宝或者微信,银联等获知用户支付已经支付成功,所以这里将是否已经支付的判定设置为,只要用户填写了付款信息,并点击付款,打开了支付页面,这里就在cookie中设置为已支付状态

    <?php
    function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    		return array($flag,$feedback);
    		}
    	}
    
    if(isset($_COOKIE['pay_way'])){
    	$payWay = $_COOKIE['pay_way'];
    }else{
    	echo "Error!";
    }
    
    if($payWay == "Alipay"){
    	echo "<script>window.open('https://auth.alipay.com/login/index.htm?goto=https%3A%2F%2Fmy.alipay.com%2Fportal%2Fi.htm')</script>";
    	//$image_url = "https://www.hkelectric.com/zh/CustomerServices/PublishingImages/Alipay_Download_QR.jpg";
    	//$imageData = base64_encode(file_get_contents($image_url));
    	//echo '[外链图片转存失败(img-0UVbanjU-1562059529497)(data:image/jpeg;base64,'.$imageData.')]';
    }else if($payWay == "WeChatPay"){
    	//$image_url = "https://3.bp.blogspot.com/-ymZs4Aij_f8/WnXUq9v5Z9I/AAAAAAAAFeA/Zrnru65sDLEgGbVbJ_KevD9_izoL3YO5wCLcBGAs/s1600/wechat.jpg";
    	//$imageData = base64_encode(file_get_contents($image_url));
    	//var_dump($imageData);
    	//echo '[外链图片转存失败(img-Ji9HZKJS-1562059529497)(data:image/jpeg;base64,'.$imageData.')]';
    	echo "<script>window.open('https://pay.weixin.qq.com/index.php/public/wechatpay')</script>";
    }else if($payWay == "Credit"){
    	echo "<script>window.open('https://bank.hangseng.com/1/2/chi/e-services/personal-ebanking/hk-personal-ebanking')</script>";
    }else if($payWay == "UnionPay"){
    	echo "<script>window.open('https://cn.unionpay.com/front.do')</script>";
    }
    
    setcookie('pay_status',true);
    
    $sql = "UPDATE payment_info SET pay_status=1 WHERE pay_id = ".$_COOKIE['pay_id'].";";
    $result = executeSql($sql);
    if($result[0]){
    	echo "<br>";
    	echo "<br>";
    	echo "<a href='process_order.php'>Click here to see order information.</a>";
    }else{
    	echo "You have to pay first!";
    }
    
    
    ?>
    

    ###8.查看交易信息并导出报告
    1)process_order.php
    //将订单的信息填入到数据库表中

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Order information</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    		}
    	}
    
    	function infoSplit($p_info){
    		$result = array();
    		$single_info = explode("/", $p_info);
    		foreach($single_info as $val){
    			$single_result = array();
    			$details = explode(",",$val);
    			foreach ($details as $value){
    				array_push($single_result, $value);	
    			}
    			array_push($result, $single_result);
    		}
    		array_pop($result);
    		return $result;
    	}
    
    	$u_id = $_COOKIE['u_id'];
    	$d_id = $_COOKIE['d_id'];
    	$pay_id = $_COOKIE['pay_id'];
    	$p_info = $_COOKIE['p_info'];
    	echo $p_info;
    	$o_date = date("Y-m-d H:i:s");
    	$o_id = 0;
    	//echo gettype($o_date);
    
    	$sql = "INSERT INTO order_info (u_id,d_id,o_date,pay_id) VALUES(".$u_id.",".$d_id.",'".$o_date."',".$pay_id.");";
    	$insert_result = executeSql($sql);
    
    	if($insert_result[0]){
    		$select_sql = "SELECT o_id FROM order_info WHERE pay_id = ".$pay_id.";";
    		$select_result = executeSql($select_sql);
    		if($select_result[0]){
    			while($row = mysqli_fetch_assoc($select_result[1])){
    				$o_id=$row["o_id"];
    				setcookie('o_id',$o_id);
    			}
    		}
    	}
    
    	$split_result = infoSplit($p_info);
    	//var_dump($split_result);
    	for($i = 0; $i < count($split_result);$i++){
    		$p_id = $split_result[$i][0];
    		$p_num = $split_result[$i][1];
    		$p_inventory = 0;
    
    		$insert_order_sql = "INSERT INTO orderDetailRecord_info (o_id,p_id,p_num) VALUES(".$o_id.",".$p_id.",".$p_num.");";
    		$insert_order_result = executeSql($insert_order_sql);
    		if($insert_order_result[0]){
        		//select product num from stock_info and update
    			$select_stock_num_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    			$select_stock_num_result = executeSql($select_stock_num_sql);
    			if($select_stock_num_result[0]){
    				while($row = mysqli_fetch_assoc($select_stock_num_result[1])){
    					$p_inventory = $row['p_inventory'];
    				}
    			}
    			//update p_inventory
    			$p_inventory = $p_inventory - $p_num;
    			$update_sql = "UPDATE stock_info SET p_inventory = '".$p_inventory."' WHERE p_id = '".$p_id."';";
    			$update_result = executeSql($update_sql);
    			if($update_result[0]){
    				header('location:view_order.php');
    			}
    		}
    	}
    		?>
    	</body>
    	</html>
    

    2)view_order.php
    //查看订单信息,并给出生成报告的链接

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Order Information</title>
    </head>
    <body>
    	<?php
    	if($_COOKIE['pay_status']){
    		$o_id = $_COOKIE['o_id'];
    		$u_id = $_COOKIE['u_id'];
    		$tracking_num = $_COOKIE['d_id'];
    		$pay_id = $_COOKIE['pay_id'];
    		$total_item = $_COOKIE['total_item'];
    		$phones_price = $_COOKIE['phones_price'];
    		$shipment_price = $_COOKIE['shipment_price'];
    		$total_price = $phones_price + $shipment_price;
    		$pay_status = $_COOKIE['pay_status'];
    		?>
    		<table border="1">
    			<caption><h2>Order information</h2></caption>
    			<tr>
    				<th>Order id</th>
    				<th>User</th>
    				<th>Tracking Number</th>
    				<th>Product Price</th>
    				<th>Delivery Price</th>
    				<th>Total Items</th>
    				<th>Total Price</th>
    				<th>Payment ID</th>
    				<th>Pay Status</th>
    			</tr>
    	<?php
    			echo "<tr>";
    			echo "<td>".$o_id."</td>";
    			echo "<td>".$u_id."</td>";
    			echo "<td>".$tracking_num."</td>";
    			echo "<td>".$phones_price."HKD</td>";
    			echo "<td>".$shipment_price."HKD</td>";
    			echo "<td>".$total_item."</td>";
    			echo "<td>".$total_price."HKD</td>";
    			echo "<td>".$pay_id."</td>";
    			if($pay_status){
    				echo "<td>Paid</td>";
    			}else{
    				echo "<td>Not Paid</td>";
    			}
    			echo "</tr>";
    			echo "</table>";
    			echo "<br>";
    			echo "<a href='eStockReport.php'>Export Product Report</a>";
    			echo "<br>";
    			echo "<br>";
    			echo "<a href='eOrderReport.php'>Export Order Report</a>";
    			echo "<br>";
    			echo "<br>";
    			echo "<a href='eDeliveryReport.php'>Export Delivery Report</a>";
    
    		}else{
    			header('location:payInfo.php');
    		}
    	?>
    	</body>
    	</html>
    

    9.导出报告

    1)eOrderReport.php
    //导出订单报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("OrderReport.txt", "w")
    	or die("Unable to open file!");
    
    	$file_stream = null;
    
    	$sql = "SELECT * FROM order_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$o_id=$row["o_id"];
    			$u_id=$row["u_id"];
    			$d_id=$row["d_id"];
    			$o_date=$row["o_date"];
    			$pay_id=$row["pay_id"];
    
    			$file_stream = $file_stream."Order ID: ".$o_id."\n";
    			$file_stream = $file_stream."User ID: ".$u_id."\n";
    			$file_stream = $file_stream."Delivery ID: ".$d_id."\n";
    			$file_stream = $file_stream."Order Date: ".$o_date."\n";
    			$file_stream = $file_stream."Payment ID: ".$pay_id."\n";
    
    			$select_sql = "SELECT * FROM orderDetailRecord_info WHERE o_id = ".$o_id.";";
    
    			$select_result=executeSql($select_sql);
    			if($select_result[0]){
    				$j = 0;
    				while($select_rows = mysqli_fetch_assoc($select_result[1])){
    					$r_id=$select_rows["r_id"];
    					$p_id=$select_rows["p_id"];
    					$p_num=$select_rows["p_num"];
    
    					$file_stream = $file_stream."Product ID: ".$p_id."   \t";
    					$file_stream = $file_stream."Product Number: ".$p_num."\n";
    					$j++;
    				}
    			}else{
    				echo "not fetch";
    			}
    			$i++;
    			$file_stream = $file_stream."\n\n\n";
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	header('location:view_order.php');
    	?>
    </body>
    </html>
    

    2)eStockReport.php
    //导出库存报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	$file_stream = null;
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("StockReport.txt", "w")
    	or die("Unable to open file!");
    
    	
    
    	$sql = "SELECT * FROM product_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$p_id=$row["p_id"];
    			$p_name=$row["p_name"];
    			$p_brand=$row["p_brand"];
    			$p_type=$row["p_type"];
    			$p_price=$row["p_price"];
    
    			$p_inventory=0;
    			$select_sql = "SELECT p_inventory FROM stock_info WHERE p_id = ".$p_id.";";
    
    			$select_result=executeSql($select_sql);
    			if($select_result[0]){
    				while($select_rows = mysqli_fetch_assoc($select_result[1])){
    					$p_inventory=$select_rows["p_inventory"];
    				}
    			}else{
    				echo "not fetch";
    			}
    
    			$p_descr=$row["p_descr"];
    			$p_color=$row["p_color"];
    			$p_image_url = $row["p_image_url"];
    			//$imageData = base64_encode(file_get_contents($p_image_url));
    
    			$file_stream = $file_stream."Product ID: ".$p_id."\n";
    			$file_stream = $file_stream."Product Name: ".$p_name."\n";
    			$file_stream = $file_stream."Product Brand: ".$p_brand."\n";
    			$file_stream = $file_stream."Product Type: ".$p_type."\n";
    			$file_stream = $file_stream."Product Price: ".$p_price."\n";
    			$file_stream = $file_stream."Product Inventory: ".$p_inventory."\n";
    			$file_stream = $file_stream."Product Description: ".$p_descr."\n";
    			$file_stream = $file_stream."Product Color: ".$p_color."\n";
    			$file_stream = $file_stream."Product Image URL: ".$p_image_url."\n\n\n";
    			$i++;
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	function php_sendmail($stream){
    		require('class.phpmailer.php');  
    
    //$mail->Host = "ssl://smtp.gmail.com"; 
    $mail = new PHPMailer(); //实例化  
    
    $mail->IsSMTP(); // 启用SMTP  
    
    //$mail->Host = "smtp.163.com"; //SMTP服务器 163邮箱例子  
    $mail->Host = "smtp.126.com"; //SMTP服务器 126邮箱例子  
    //$mail->Host = "smtp.qq.com"; //SMTP服务器 qq邮箱例子  
    
    $mail->Port = 25;  //邮件发送端口  
    $mail->SMTPAuth   = true;  //启用SMTP认证  
    
    $mail->CharSet  = "UTF-8"; //字符集  
    $mail->Encoding = "base64"; //编码方式  
    
    $mail->Username = "";  //你的邮箱  
    $mail->Password = "";  //你的密码  
    $mail->Subject = "Product information updating"; //邮件标题  
    
    $mail->From = "";  //发件人地址(也就是你的邮箱)  
    $mail->FromName = "";   //发件人姓名  
    
    $address = "";//收件人email  
    $mail->AddAddress($address, "");    //添加收件人1(地址,昵称)    
    
    //$mail->AddAttachment('xx.xls','我的附件.xls'); // 添加附件,并指定名称  
    
    $mail->IsHTML(true); //支持html格式内容  
    //$mail->AddEmbeddedImage("logo.jpg", "my-attach", "logo.jpg"); //设置邮件中的图片  
    $mail->Body = $file_stream; //邮件主体内容  
    
    //发送
    if(!$mail->Send()){ 
    	echo "Fialed to send " . $mail->ErrorInfo;  
    } else {  
    	echo "Successfully send the email!";  
    }  
    }
    
    php_sendmail($file_stream);
    header('location:view_order.php');
    ?>
    </body>
    </html>
    

    3)eDeliveryReport.php
    //导出物流报告

    <!DOCTYPE html>
    <html>
    <head>
    	<title>Export Report</title>
    </head>
    <body>
    	<?php
    	function executeSql($sql){
    		$flag = false;
    		$feedback = array();
    		if($sql == ""){
    			echo "Error! Sql content is empty!";
    		}else{
    			$servername = "localhost";
    			$username = "root";
    			$password = "";
    			$dbname = "hw";
    
    			$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    			if (mysqli_connect_errno()){
    				echo "Failed to connect to MySQL: " . mysqli_connect_error();
    			}
    
    			$query_result=mysqli_query($conn,$sql);//query_result is a PHP array
    			if($query_result){
    				$flag = true;
    				$feedback = $query_result;
    				//$num_rows=mysqli_num_rows($query_result);
    			}
    			return array($flag,$feedback);
    			mysqli_close($conn);
    		}
    	}
    
    	$myfile = fopen("DeliveryReport.txt", "w")
    	or die("Unable to open file!");
    
    	$file_stream = null;
    
    	$sql = "SELECT * FROM delivery_info;";
    	$result = executeSql($sql);
    	if($result[0]){
    		$i=0;
    		while ($row = mysqli_fetch_assoc($result[1])){
    			$d_id=$row["d_id"];
    			$d_company=$row["d_company"];
    			$d_init_add=$row["d_init_add"];
    			$d_trgt_add=$row["d_trgt_add"];
    			$d_price=$row["d_price"];
    
    			$file_stream = $file_stream."Delivery ID: ".$d_id."\n";
    			$file_stream = $file_stream."Delivery Company: ".$d_company."\n";
    			$file_stream = $file_stream."Delivery Initial Address: ".$d_init_add."\n";
    			$file_stream = $file_stream."Delivery Target Address: ".$d_trgt_add."\n";
    			$file_stream = $file_stream."Delivery Price: ".$d_price."\n\n\n";
    			$i++;
    		}
    	}
    
    	//向文件中写入字符串
    	fwrite($myfile, $file_stream);
    
    	//关闭文件句柄
    	fclose($myfile);
    
    	header('location:view_order.php');
    	?>
    </body>
    </html>
    

    ###10.搜索功能
    做了一个分类搜索的功能,用的就是数据库的模糊查询,很简单
    1)search.html
    //页面

    <html>
    <head>
    <meta charset="utf-8">
    <title>Search phones</title>
    </head>	
    <h1>Search what you want</h1>
    	<form action="search.php" method="post">
    
    			<select name="select_condition">
    				<option value="">Choose a condition</option>
    				<option value="brand">Brand</option>
    				<option value="name">Product Name</option>
    				<option value="type">Type</option>
    				<option value="color">Color</option>
    				<option value="price">Price</option>
    			</select><br><br>
    
     			Enter your condition here:<br>
     			<input type="text" name="value"><br><br>
    			If you choose price, please enter the price range here:<br>
    			Low range:<input type="text" name="low_range"><br>
    			High range:<input type="text" name="high_range"><br>
    			<input type="submit" name="submit" value="Submit">
    
    		</form>
    </html>
    

    2)search.php
    //处理查询请求

    <!DOCTYPE html>
    <html>
    <body>
    <?php
    	if(isset($_POST["submit"])){
    		$selected_Condition = $_POST["select_condition"];
    	}else{
    		echo "No condition selected!";
    		echo "<br>";
    	}
    
    	if($selected_Condition == "brand"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_brand LIKE '%".$value."%';";
    			showResult($sql);
    			
    		}
    	}else if($selected_Condition == "name"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_name LIKE '%".$value."%';";
    			showResult($sql);
    		}
    			
    	}else if($selected_Condition == "type"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_type LIKE '%".$value."%';";
    			showResult($sql);
    		}
    
    	}else if($selected_Condition == "color"){
    		$value = $_POST["value"];
    		if($value ==""){
    			echo "The value can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_color LIKE '%".$value."%';";
    			showResult($sql);
    		}
    
    	}else if($selected_Condition == "price"){
    		$low_range = $_POST["low_range"];
    		$high_range = $_POST["high_range"];
    		if($low_range ==""||$high_range == ""){
    			echo "The range can't be empty!";
    			echo "<br>";
    		}else{
    			$sql = "SELECT * FROM product_info WHERE p_price BETWEEN ".$low_range." AND ".$high_range.";";
    			showResult($sql);
    		}
    
    	}
    	
    	function showResult($sql){
    		$servername = "localhost";
    		$username = "root";
    		$password = "";
    		$dbname = "hw";
    
    		$conn = mysqli_connect($servername, $username, $password, $dbname);
    
    		// Check connection
    		if (mysqli_connect_errno()){
      			echo "Failed to connect to MySQL: " . mysqli_connect_error();
      		}
    
    		$result=mysqli_query($conn,$sql);//result is a PHP array
    
    		$num_rows=mysqli_num_rows($result);
    
    		mysqli_close($conn);
    
    		if($num_rows == 0){
    			echo "There is no meeted results.";
    		}else{
    			echo '<table border="1">';
        		echo "<tr>";
        		echo "<th>Product Name</th>";
            	echo "<th>Product Brand</th>";
            	echo "<th>Product Type</th>";
            	echo "<th>Product Price</th>";
            	echo "<th>Product Description</th>";
            	echo "<th>Product Color</th>";
            	echo "<th>Product Image</th>";
        		echo "</tr>";
    
    			$i=0;
    			while ($row = mysqli_fetch_assoc($result)){
    				$p_name=$row["p_name"];
    				$p_brand=$row["p_brand"];
    				$p_type=$row["p_type"];
    				$p_price=$row["p_price"];
    				$p_descr=$row["p_descr"];
    				$p_color=$row["p_color"];
    				$p_image_url = $row["p_image_url"];
    			
    				echo "<tr>";
    				echo "<td>".$p_name."</td>";
    				echo "<td>".$p_brand."</td>";
    				echo "<td>".$p_type."</td>";
    				echo "<td>".$p_price."</td>";
    				echo "<td>".$p_descr."</td>";
    				echo "<td>".$p_color."</td>";
    				$imageData = base64_encode(file_get_contents($p_image_url));
    				echo '<td>[外链图片转存失败(img-CAzDYQv5-1562059529498)(data:image/jpeg;base64,'.$imageData.')]</td>';
    				echo "</tr>";
    				$i++;
    			}
    			echo "</table>";
    		}
    	}
    		
    ?>
    
    
    </body>
    </html>
    
    
    

    ####特别说明:
    1)购物车用session实现
    2)其他各种用户登录状态,产品id等信息,均存储在cookie数组中
    3)当某种产品卖出后,会从数据库中将该产品的库存减去订单中相应的数量。

    展开全文
  • 生物信息学数据库分类概览

    万次阅读 2018-11-24 18:55:07
    生物与计算机的结合让生物进入大数据时代,为方便管理各种生物数据,科学家们开发...元数据库,合并不同来源的相关数据以更新的或更加方便的形式提供新的数据,通俗的讲就是数据库数据库,代表性的数据库主要有以...

    生物与计算机的结合让生物进入大数据时代,为方便管理各种生物数据,科学家们开发了各式各样的生物数据库。了解与自己研究领域相关的数据库,并加以利用可能会使研究工作得到事半功倍的效果。在此将常用数据库按照以下分类方式大致整理了一下,也方便检索。


    1. Meta databases

    元数据库,合并不同来源的相关数据以更新的或更加方便的形式提供新的数据,通俗的讲就是数据库的数据库,代表性的数据库主要有以下几个:

    1. ConsensusPathDB 网址:http://consensuspathdb.org/ 描述:分子功能互作数据库,基于32个公共数据库,整合了人类蛋白质相互作用,遗传相互作用信号,代谢,基因调控和药物 - 靶标相互作用的信息。

    2. Entrez 网址:https://www.ncbi.nlm.nih.gov/Class/MLACourse/Modules/Entrez/complex_boolean.html 描述:Entrez跨数据库全局查询搜索系统是一个联合搜索引擎或门户网站,允许用户在NCBI网站上搜索许多离散的健康科学数据库。

    3. Neuroscience Information Framework 网址:https://neuinfo.org// 描述:整合了数百种神经科学相关资源,包括实验,临床和转化神经科学数据库,知识库,地图集和遗传/基因组资源等。

    4. GeneCard 网址:https://www.genecards.org/ 描述:自动整合125个数据库,包含基因组、转录组、蛋白组、遗传、临床和功能信息的庞大人基因组数据库。

    5. Ensembl Genomes 网址:http://ensemblgenomes.org/ 描述:该项目由EMBL运营,提供细菌、原生生物、真菌、植物和无脊椎动物后生动物的基因组数据。

    6. UCSC Genome 网址: http://genome.ucsc.edu 描述:主要是动物基因组信息,基因组注释,基因组保守性和基因组共线性数据。

    7. Human protein atlas 网址:http://www.proteinatlas.org/ 描述:人体蛋白在细胞、组织、病理条件下的表达

    2. Model organism databases

    模式生物数据库,为深入研究模式生物提供生物数据,如:

    1. Personal Genome Project 网址:https://www.personalgenomes.org/ 描述:来自世界各地的100,00名志愿者的人类基因组计划。

    2. Mouse Genome Database(MGD) 网址:http://www.informatics.jax.org/ 描述:MGD数据库是整合了国际上实验室小鼠生物数据的资源库,提供小鼠相关的基因组、综合遗传等信息。

    3. Rat Genome Database (RGD): 网址:https://rgd.mcw.edu/ 描述:大鼠基因组数据库。

    4. PomBase 网址:https://www.pombase.org/ 描述:裂殖酵母Schizosaccharomyces pombe的知识库。

    5. Saccharomyces Genome Database (SGD): 网址:https://www.yeastgenome.org/ 描述:酵母模型生物的基因组数据库

    6. TAIR 网址 https://www.arabidopsis.org/ 描述:最全的拟南芥资源数据库。政府为我们付费购买了使用权,以至于不少人没感觉到TAIR已经收费了。

    7. Legume Information System (LIS) 网址:https://legumeinfo.org/ 描述:豆科植物的基因组数据库。

    8. Wormbase: 网址:https://wormbase.org/#012-34-5 描述:关于线虫模式生物秀丽隐杆线虫的生物学和基因组在线生物数据库,还包含其他相关线虫的信息。

    9. Xenbase: 网址:http://www.xenbase.org/entry/ 描述:模式生物非洲爪蟾(Xenopus tropicalis)和非洲爪蟾(Xenopus laevis)的基因组数据库。

    10. Zebrafish Information Network: 网址:http://zfin.org/ 描述:斑马鱼的基因组数据库。

    11. FlyBase: 网址:http://flybase.org/ 描述:模式生物果蝇的基因组数据库。

    12. UCSC Malaria Genome Browser: 网址:http://enacademic.com/dic.nsf/enwiki/7907997 描述:UCSC疟疾基因组浏览器是研究疟疾(如恶性疟原虫等)基因组的生物信息学研究工具。

    3. Nucleic acid databases

    3.1 DNA databases

    核酸数据库分为一级数据库(Primary databases)和二级数据库(Secondary databases)

    3.1.1 一级核酸数据库

    下面三个数据库是核酸的主数据库,存储来自所有生物的核酸序列,接受用户提交核酸序列,每天交换更新数据以实现他们之间的最佳同步。

    1. DNA Data Bank of Japan 网址:https://www.ddbj.nig.ac.jp/index-e.html
    2. EMBL (European Bioinformatics Institute) 网址:https://www.embl.org/
    3. NCBI (National Center for Biotechnology Information) 网址:https://www.ncbi.nlm.nih.gov/

    3.1.2 二级核酸数据库

    数目很多,先列出一些,欢迎补充:

    1. 23andMe's database 网址:https://www.23andme.com/en-int/ 描述:23andMe是一家私营的个人基因组学生物技术公司 ,主要业务是基于唾液对消费者进行基因检测,并向客户提供基因检测报告。

    2. OMIM (Online Mendelian Inheritance in Man): 网址:https://omim.org/ 描述:一个管理人类基因和人类遗传疾病特征的数据库。

    3. RefSeq 网址:https://www.ncbi.nlm.nih.gov/refseq/ 描述:参考序列数据库收集了从病毒、细菌到真核生物等主要生物的核酸序列(DNA、RNA)及其蛋白质常产物。

    4. 1000 Genomes Project: 网址:http://www.internationalgenome.org/ 描述:2008年1月启动的项目,对来自不同种族群体的一千多名匿名参与者的基因组进行了分析,并将数据公布于众。

    5. SNP / Disease Databases 网址:https://www.snpedia.com/ 描述:人SNP位点对表型的影响和贡献度数据库

    3.2 Gene expression databases

    这些数据库收集基因组序列,注释并分析他们,以提供公共访问。主要包括:

    1. ArrayExpress 网址:https://www.ebi.ac.uk/arrayexpress/ 描述:功能基因组数据存档;存储来自EMBL的高通量功能基因组学实验的数据;展示方式很炫酷。

    2. Bioinformatic Harvester 网址:Ensembl: http://asia.ensembl.org/index.html 描述:为人类,小鼠,其他脊椎动物和真核生物基因组提供自动注释的数据库

    3. BioGPS 网址:http://biogps.org/#goto=welcome 描述:强大的基因和蛋白表达注释平台

    4. Gene Disease Database 基因疾病数据库,通过整理表型-基因型关系和基因-疾病机制,以及多种复合相互作用来理解复杂疾病的潜在机制。主要数据库如下:

      5.1 The Comparative Toxicogenomics Database (CTD) 网址:http://ctdbase.org/ 5.2 The Universal Protein Resource (UNIPROT) 网址:https://www.uniprot.org 5.3 The Online Mendelian Inheritance in Man 网址:https://www.ncbi.nlm.nih.gov/omim 5.5 The Ensembl genome database project 网址:http://www.ensembl.org/ 5.6 The Gene Disease Associations Database DisGeNET 网址:http://www.disgenet.org/

    5. Gene Expression Omnibus (GEO): 网址:https://www.ncbi.nlm.nih.gov/geo/ 描述:来自美国国家癌症研究所(NCI)的公共功能基因组数据库,它支持基于阵列和序列的数据,并提供了用于查询和下载基因表达谱的工具。

    3.3 Phenotype databases

    1. PHI-base: 网址:http://www.phi-base.org/ 描述:病原体 - 宿主相互作用数据库。

    2. 细胞表型数据库 网址:https://www.ebi.ac.uk/fg/sym 描述:基于RNAi的细胞表型收集

    3. dbGAP 网址:https://www.ncbi.nlm.nih.gov/gap 描述:基因型-表型数据库,来源于GWAS、医学测序、分子诊断等

    4. The Human Phenotype Ontology 网址:https://hpo.jax.org/app/ 描述:人类疾病表型描述的标准化术语,类比于Gene Ontology. 现有13000个条目和156,000关于遗传病的注释。

    5. GWAS central 网址: https://www.gwascentral.org 描述:包含2,974,967个SNP与829个MeSH疾病、表型之间的69,986,326个关联。

    6. European genome-phenome archive 网址:https://ega-archive.org 描述:生物医学研究中涉及的遗传和表型数据关联库

    7. Monarch 网址:https://monarchinitiative.org 描述:基因型-表型数据库,表型相似性度量

    8. Cellular Phenotype Database 网址:http://www.ebi.ac.uk/fg/sym 描述:存储来自高通量表型研究的数据,可以搜索感兴趣的表型并检索相关靶基因和RNAi

    9. GenomeRNAi 网址:http://www.genomernai.org/ 描述:包含来自果蝇和人RNA干扰筛选的表型数据库

    10. Genomics of Drug Sensitivity in Cancer 网址:http://www.cancerrxgene.org/ 描述:筛选了多种抗癌疗法人类癌细胞系,通过与基因组数据关联以识别药物靶标,同时为临床应用提供信息

    11. GenomeCRISPR 网址:http://genomecrispr.dkfz.de/ 描述:用于高通量CRISPR / Cas9筛选实验的数据库

    12. Cellular Microscopy Phenotype Ontology (CMPO) 网址:www.ebi.ac.uk/cmpo/ 描述:CMPO为描述与整个细胞、细胞成分、细胞过程和细胞群体有关的表型特性提供了一种物种中立的词汇。

    13. Human Phenotype Ontology (HPO) 网址:https://hpo.jax.org/app/ 描述:提供了人类疾病中表型异常的标准化词汇

    3.4 RNA databases

    1. miRBase 网址:http://www.mirbase.org/ 描述:存储microRNA序列和注释的数据库。

    2. Rfam: 网址:http://rfam.org/ 描述:一个包含非编码RNA(ncRNA)家族和其他类型RNA信息的数据库。

    3. RNAcentral 网址:https://rnacentral.org/ 描述:非编码RNA序列数据库。

    4. Amino acid / protein databases

    4.1 Protein sequence databases

    1. Swiss-Prot/Uniprot 网址:https://www.uniprot.org/ 描述:结合了从文献中提取的信息和生物鉴定者评估的计算分析,是一个手动注释的非冗余蛋白质序列数据库。

    2. Database of Interacting Proteins (Univ. of California) 网址:https://dip.doe-mbi.ucla.edu/dip/Main.cgi 描述:记录了实验确定的蛋白质之间的相互作用。

    3. DisProt:(打不开了) 网址:http://www.disprot.org/ 描述:用于注释文献中的蛋白固有无序区域(IDRs)

    4. InterPro: 网址:https://www.ebi.ac.uk/interpro/ 描述:通过整合多个蛋白相关数据库,提供了一个方便的对蛋白序列进行功能注释的平台,包括对蛋白质家族、结构域、功能位点的预测。

    5. MobiDB: 网址:http://mobidb.bio.unipd.it/ 描述:内在蛋白质紊乱注释数据库。

    6. neXtProt: 网址:https://www.nextprot.org/ 描述:人类蛋白质数据库。

    7. Pfam: 网址:http://pfam.xfam.org/ 描述:Pfam是蛋白质家族的数据库,包括使用隐马尔可夫模型生成的注释和多序列比对。

    8. PRINTS 网址:http://130.88.97.239/PRINTS/index.php 描述:蛋白质序列指纹图谱数据库,所谓蛋白质的指纹是指一组保守的序列基序,用于刻画蛋白质家族的特征。

    9. PROSITE: 网址:https://prosite.expasy.org/ 描述:收集了有显著生物学意义的蛋白质位点和序列模式,并能根据这些位点和模式快速并可靠地鉴别一个未知功能的蛋白质序列应该属于哪一个蛋白质家族。

    10. Protein Information Resource 网址:https://pir.georgetown.edu/ 描述:是一个全面的、经过注释的、非冗余的蛋白质序列数据库。可帮助研究者鉴别和解释蛋白质序列信息,研究分子进化、功能基因组,进行生物信息学分析。

    11. SUPERFAMILY: 网址:http://supfam.org/SUPERFAMILY/ 描述:一个包含所有蛋白质和基因组结构和功能注释的数据库。

    4.2 Protein structure databases

    1. Protein Data Bank (PDB) 网址:http://www.rcsb.org 描述:一个专门收录蛋白质及核酸的三维结构资料的数据库,以下为PDB成员网站 1.1 Protein DataBank in Europe (PDBe):https://www.ebi.ac.uk/pdbe/ 1.2 ProteinDatabank in Japan (PDBj):https://pdbj.org 1.3 Research Collaboratory for Structural Bioinformatics (RCSB):https://www.rcsb.org 1.4 Worldwide Protein Data Bank:http://www.wwpdb.org/

    2. The Protein Protein Interaction Inhibition Database (2PI2db): 网址:http://2p2idb.cnrs-mrs.fr 描述:收集了已通过X射线晶体学或核磁共振表征的蛋白质-蛋白质、蛋白质-调节剂复合物结构。

    4.3 Protein model databases

    1. ModBase: 网址:https://modbase.compbio.ucsf.edu/modbase-cgi/index.cgi 描述:一个注释比较饭白纸结构模型的数据库。

    2. Protein Model Portal (PMP): 网址:https://www.proteinmodelportal.org 描述:结合了数个蛋白质结构模型数据库的元数据库,提供模型构建和质量评估等多种交互式服务。

    3. Similarity Matrix of Proteins (SIMAP): 网址:http://cube.univie.ac.at/resources/simap 描述:基于FASTA序列计算的蛋白质相似性数据库。

    4. Swiss-model: 网址:https://swissmodel.expasy.org 描述:致力于同源蛋白质的3D结构建模。

    4.4 Protein-protein and other molecular interactions

    1. BioGRID 网址:https://thebiogrid.org 描述:蛋白质与遗传相互作用数据库。

    2. string 网址:http://string-db.org/cgi/help.pl?subpage=api 描述:用于检索相互作用基因/蛋白质的搜索工具

    3. IntAct 网址:https://www.ebi.ac.uk/intact/ 描述:为分子交互研究提供免费的开源数据库系统和分析工具。

    5. Signal transduction pathway databases

    1. NCI-Nature Pathway Interaction Database 网址:http://biogps.org/plugin/259/nci-nature-pathway-interaction-database/描述:http://www.ndexbio.org/#/ (原来的PID迁移到此新数据库)。 NDEx提供了一个开源框架,科学家和机构可以共享、存储、操作和发布生物网络知识。

    2. Netpath 网址:http://www.netpath.org/ 描述:人类信号转导通路数据库,拥有45个信号通路,包括在免疫系统调节和癌症调节中起主要作用的通路。

    3. Reactome 网址:https://reactome.org/ 描述:该库覆盖了19个物种的通路研究,包括经典的代谢通路、信号转导、基因转录调控、细胞凋亡与疾病。

      reactome相关推文:

    4. WikiPathways 网址:https://www.wikipathways.org/index.php/WikiPathways 描述:该数据库收录了超过20个物种的通路,其中人类的通路就包含了800多个通路,涵盖了约7500种基因。此外,它还包含了超过1000个代谢产物的通路。

    6. Metabolic pathway and protein function databases

    代谢途径和蛋白质功能数据库

    1. BiGG Models 网址:http://bigg.ucsd.edu 描述:该数据库将70多种已发表的基因组规模的代谢网络整合到了一起,并且有一组标准化的BiGG ID。

    2. BioCyc Database Collection: 网址:https://biocyc.org 描述:收集了14558个通路/基因组数据库,每一个数据库描述了单个有机体的基因组和代谢通路,同时提供多种用于组学数据导航和可视化的分析工具。

    3. BRENDA: 网址:http://www.brenda-enzymes.org 描述:酶数据库,提供酶的分类、命名法、生化反应、专一性、结构、细胞定位、提取方法、文献、应用与改造及相关疾病的数据。

    4. HMDB 网址:http://www.hmdb.ca 描述:人类代谢组数据库,包含有关人体中发现的小分子代谢物的详细信息。

    5. KEGG PATHWAY Database 网址:https://www.kegg.jp 描述:KEGG是一个整合了基因组、化学和系统功能信息的数据库。把从已经完整测序的基因组中得到的基因目录与更高级别的细胞、物种和生态系统水平的系统功能关联起来是KEGG数据库的特色之一。

    6. Reactome(同上)

    7. WikiPathways(同上)

    7. Additional databases

    7.1 Exosomal databases

    外泌体是一类可以由多种细胞类型分泌的胞外囊泡,与其他胞外囊泡如核外颗粒体和凋亡小体不同,外泌体是内吞起源的。外泌体在疫苗、药物递送、细胞间通信的作用以及其作为生物标志物的一种可能来源以及引起了研究人员的极大兴趣,导致外泌体相关研究呈现井喷趋势。相关数据库如下:

    1. ExoCarta 网址:http://www.exocarta.org 描述:是一个关于外泌体蛋白、RNA、脂质体的手工数据库。

    2. exoRBase 网址:http://www.exorbase.org 描述:将不同疾病血来源外泌体中的circRNA, lncRNA和mRNA进行整理的数据库。

    7.2 Mathematical model databases

    1. Biomodels Database 网址:http://biomodels.caltech.edu 描述:生物模型在线数据库,主要存储数量型生物化学模型。

    7.3 Taxonomic databases

    1. BacDive 网址:https://bacdive.dsmz.de 描述:提供有关细菌和古细菌生物多样性的菌株相关信息。

    2. EzTaxon-e 网址:https://www.ezbiocloud.net 描述:基于16S核糖体RNA基因序列鉴定原核生物的数据库。

    7.4 Radiologic databases

    1. The Cancer Imaging Archive (TCIA) 网址:http://www.cancerimagingarchive.net 描述:包含常见肿瘤(肺癌、前列腺癌等)医学图像(MRI、CT等)及相应临床信息(治疗方案细节、基因、病理等)的大规模公用数据库。

    2. Neuroimaging Informatics Tools and Resources Clearinghouse 网址:https://www.nitrc.org 描述:神经影像信息学工具和资源交换中心。

    8. Wiki-style databases

    1. Gene Wiki 网址:https://en.wikipedia.org/wiki/Wikipedia:Gene_Wiki 描述:一个基于wiki的基因信息数据库

    9. Specialized databases

    1. Barcode of Life Data Systems 网址:http://www.boldsystems.org 描述:DNA条形码数据库(即生物体内能够代表该物种的、标准的、有足够变异的、易扩增且相对较短的DNA片段),并提供一个分析DNA序列的在线平台。

    2. The Cancer Genome Atlas (TCGA) 网址:https://cancergenome.nih.gov 描述:提供使用高通量技术获得的癌症样本数据,包括基因表达谱、拷贝数变异、SNP基因分型、全基因组DNA甲基化等。

    3. Cellosaurus 网址:https://web.expasy.org/cellosaurus/ 描述:细胞系的在线资源库。

    4. Comparative Toxicogenomics Database (CTD) 网址:http://ctdbase.org 描述:CTD(比较毒物遗传数据库),为研究人员提供了集中、综合的各种不同类型分子以及来自各种生物体的毒理学数据。

    5. DiProDB 网址:http://diprodb.fli-leibniz.de 描述:收集和分析热力学,结构和其他二核苷酸特性的数据库。

    6. Dryad 网址:http://datadryad.org 描述:存放优质数据资源的场所,使科学出版物背后的数据可被发现、可重复使用、可引用。

    7. Edinburgh Mouse Atlas 网址:http://www.emouseatlas.org/emap/home.html 描述:小鼠胚胎原位基因表达数据库。

    8. EPD Eukaryotic Promoter Database 网址:https://epd.vital-it.ch/index.php 描述:真核基因启动子数据库,提供从EMBL中得到的真核基因的启动子序列,帮助实验研究人员、生物信息学研究人员分析真核基因的转录信号。

    9. FINDbase (the Frequency of INherited Disorders database) 网址:http://www.findbase.org 描述:是一个全球治病遗传变异频率的数据库。

    10. HGNC (HUGO Gene Nomenclature Committee): 网址:https://www.genenames.org 描述:负责对人类基因组包括蛋白编码基因, ncRNA基因,甲基因和其他基因在内的所有基因提供一个唯一的、标准的、可以广泛传播的symbol

    11. International Human Epigenome Consortium 网址:http://ihec-epigenomes.org 描述:国际人类表观基因组学会,致力于全球表观基因组学领域的发展。

    12. MethBase 网址:http://smithlabresearch.org/software/methbase/ 描述:在UCSC Genome Browser上可视化的DNA甲基化数据库。

    13. Minimotif Miner 网址:http://minimotifminer.org/ 描述:短连续功能性肽基序的数据库。

    14. NCI-dbGaP 网址:https://www.ncbi.nlm.nih.gov/gap 描述:人类基因型和表型相互作用的数据库。

    15. PubMed 网址: https://www.ncbi.nlm.nih.gov/pmc/ 描述:生命科学和生物医学领域的参考和摘要。

    16. Oncogenomic databases 网址:https://oglandscapes.irbbarcelona.org 描述:用于癌症研究的数据库汇编。

    17. RIKEN integrated database of mammals 网址:http://metadb.riken.jp/metadb/download/SciNetS_ria254i 描述:Riken研究所推广的多个大型项目的综合数据库。

    18. TDR Targets 网址:http://tdrtargets.org 描述:专注于热带疾病药物发现的化学基因组学数据库。

    19. LNCipedia 网址:http://www.lncipedia.org/ 描述:人类长链非编码RNA的整合库

    20. NONCODE 网址: http://www.noncode.org/ 描述:存储17类(人类,小鼠,牛,大鼠,鸡,果蝇,斑马鱼,小肠,酵母,拟南芥,黑猩猩,大猩猩,猩猩,恒河猴,负鼠和猪)物种非编码RNA(不包括tRNA和rRNA)的数据库

    21. Oncomine 网址:https://www.oncomine.org/resource/login.html 描述:肿瘤相关基因研究的数据库,整合了GEO、TCGA和已发表的文献等来源的RNA和DNA-seq数据

    22. GeneVestigator(GV) 网址:https://genevestigator.com/
      描述:一个基因表达的搜索引擎,集成了上万的人工精选、注释的公共芯片实验结果

    23. immuneXpresso 网址:http://immuneexpresso.org/immport-immunexpresso/public/immunexpresso/search
      描述:immuneXpresso搜索引擎可自动从PubMed摘要中提取高分辨率细胞 - 细胞因子相互作用网络。

     

     

    展开全文
  • 数据库语言分类DDL DCL DML 知多少?

    千次阅读 2015-09-12 13:04:41
    它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言 DDL(Data Definition Language): DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是...

    DML(Data Manipulation Language):
    它们是SELECT、UPDATE、INSERT、DELETE,就象它的名字一样,这4条命令是用来对数据库里的数据进行操作的语言
    DDL(Data Definition Language):
    DDL比DML要多,主要的命令有CREATE、ALTER、DROP等,DDL主要是用在定义或改变表(TABLE)的结构,数据类型,表之间的链接和约束等初始化工作上,他们大多在建立表时使用
    DCL(Data Control Language):
    是数据库控制功能。是用来设置或更改数据库用户或角色权限的语句,包括(grant,deny,revoke等)语句。在默认状态下,只有sysadmin,dbcreator,db_owner或db_securityadmin等人员才有权力执行DCL

    详细解释:

    一、DDL is Data Definition Language statements. Some examples:数据定义语言,用于定义和管理 SQL 数据库中的所有对象的语言

          1.CREATE - to create objects in the database     创建
          2.ALTER - alters the structure of the database   修改
          3.DROP - delete objects from the database        删除
          4.TRUNCATE - remove all records from a table, including all spaces allocated for the records are removed

    TRUNCATE TABLE [Table Name]。
    下面是对Truncate语句在MSSQLServer2000中用法和原理的说明:
    Truncate table 表名 速度快,而且效率高,因为:
    TRUNCATE TABLE 在功能上与不带 WHERE 子句的 DELETE 语句相同:二者均删除表中的全部行。但 TRUNCATE TABLE 比 DELETE 速度快,且使用的系统和事务日志资源少。
    DELETE 语句每次删除一行,并在事务日志中为所删除的每行记录一项。TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。
    TRUNCATE TABLE 删除表中的所有行,但表结构及其列、约束、索引等保持不变。新行标识所用的计数值重置为该列的种子。如果想保留标识计数值,请改用 DELETE。如果要删除表定义及其数据,请使用 DROP TABLE 语句。
    对于由 FOREIGN KEY 约束引用的表,不能使用 TRUNCATE TABLE,而应使用不带 WHERE 子句的 DELETE 语句。由于 TRUNCATE TABLE 不记录在日志中,所以它不能激活触发器。
    TRUNCATE TABLE 不能用于参与了索引视图的表。

         5.COMMENT - add comments to the data dictionary                      注释
          6.GRANT - gives user's access privileges to database                 授权
          7.REVOKE - withdraw access privileges given with the GRANT command   收回已经授予的权限

    二、DML is Data Manipulation Language statements. Some examples:数据操作语言,SQL中处理数据等操作统称为数据操纵语言

         1.SELECT - retrieve data from the a database                                    查询
          2.INSERT - insert data into a table                                             添加
          3.UPDATE - updates existing data within a table                                 更新
          4.DELETE - deletes all records from a table, the space for the records remain   删除
          5.CALL - call a PL/SQL or Java subprogram
          6.EXPLAIN PLAN - explain access path to data
          Oracle RDBMS执行每一条SQL语句,都必须经过Oracle优化器的评估。所以,了解优化器是如何选择(搜索)路径以及索引是如何被使用的,对优化SQL语句有很大的帮助。Explain可以用来迅速方便地查出对于给定SQL语句中的查询数据是如何得到的即搜索路径(我们通常称为Access Path)。从而使我们选择最优的查询方式达到最大的优化效果。
          7.LOCK TABLE - control concurrency 锁,用于控制并发

    三、DCL is Data Control Language statements. Some examples:数据控制语言,用来授予或回收访问数据库的某种特权,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等

        1.COMMIT - save work done 提交
          2.SAVEPOINT - identify a point in a transaction to which you can later roll back 保存点
          3.ROLLBACK - restore database to original since the last COMMIT   回滚
          4.SET TRANSACTION - Change transaction options like what rollback segment to use   设置当前事务的特性,它对后面的事务没有影响.

    转载自:http://www.afuhao.com/article_articleId-203.shtml

    展开全文
  • DBMS(数据库管理系统)的主要功能 数据定义 DBMS 提供数据定义语言(Data Definition Language, DDL),供用户定义、创建和修改数据库的结构。DDL 所描述的数据库结构仅仅给出了数据库的框架,数据库的框架信息被...
  • 数据库

    千次阅读 多人点赞 2020-03-05 16:39:37
    2.数据库分类 数据库根据句存储采用的数据结构的不同可以分为许多种,其中包含早期的*层次式数据库*,*网络式数据库*. 目前占市场主流的是*关系型数据库*,当然还有*非关系型数据库*(键值对数据库,例如:MongDB,Redi...
  • 分布式数据库系统及其应用(第二版)

    热门讨论 2009-04-16 17:44:43
    1·4·2 分布式数据库管理系统的组成成分及其功能 1·4·3 分布式数据库管理系统的一种参考模型 1·5 分布式数据库及其模式结构 1·5·1 分布式数据库的组成 1·5·2 分布式数据库中数据的分片与分布 1·5·3 分布式...
  • NoSQL数据库概览及其与SQL语法的比较

    千次阅读 2015-07-02 13:45:33
    HBase是一个高可靠性、高性能、面向列...本文对NoSQL数据库的定义、分类、特征、当前比较流行的NoSQL数据库系统等进行了简单的介绍,并对NoSQL和SQL语法进行了简单的比较,为大家对NoSQL数据库的学习提供了有益的参考。
  • Database:Database数据库的简介、类型及其区别(关系数据库VS非关系型数据库)、案例应用之详细攻略 目录 Database数据库的简介 1、数据库的发展历史:80年代以来的关系型数据库→基于分布式技术云计算和...
  • Nosql数据库分类及应用场景

    千次阅读 2017-07-05 16:17:32
    当前使用最多的是key-value模型,是一种非关系型数据库主要是解决是海量数据下的数据库性能和扩展能力。 它最大的特点在于要求的数据量大,对事物的要求低。   NoSQL 它打破了长久以来关系型数
  • NoSQL数据库的四大分类及分析

    万次阅读 2015-01-27 11:30:26
    NoSQL(NoSQL = Not Only SQL ),意即“不仅仅是SQL”,是一项全新的数据库革命性运动,早期就有人提出,发展至2009年趋势越发高涨。NoSQL的拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,...
  • CAZy数据库中包含了碳水化合物酶类的物种来源、酶功能EC分类、基因序列、蛋白质序列及其结构等信息。而随着宏基因组学技术的快速发展,CAZy数据库中家族内序列数据量剧增,这为家族内进一步进行亚家族分类奠定了基础...
  • 数据库常见笔试面试题及其解析

    万次阅读 2016-05-17 13:06:31
    数据库基础(面试常见题) 一、数据库基础 1. 数据抽象:物理抽象、概念抽象、视图级抽象,内模式、模式、外模式 2. SQL语言包括数据定义、数据操纵(Data Manipulation),数据控制(Data Control) 数据定义:...
  • 初识数据库

    2020-05-08 15:19:18
    数据库系统(Database System),是由数据库及其管理软件组成的系统。 数据库就是存储数据的地方,传统意义上不包括文件系统 数据库是由2部分组成: (1)db 数据库本身(看不见的) (2)数据库管理系统 数据库的...
  • 数据库数据库概论

    千次阅读 2015-05-03 12:40:31
    数据库地位数据库技术产生于六十年代末,是数据管理的最新技术,是计算机科学的重要分支。 数据库技术是信息系统的核心和基础,它的出现极大地促进了计算机应用向各行各业的渗透。 数据库的建设规模、数据库信息量...
  • 数据库初识

    2020-05-08 09:26:06
    数据库系统(Database System) 是由数据库及其管理软件组成的系统数据库就是存储数据的地方,传统意义上不包括文件系统 数据库是由两部分组成: 1)db数据库本身 ------ 我们看不见的 2)数据库管理系统 数据库分类...
  • TRANSFAC:转录因子及其靶基因数据库

    千次阅读 2018-10-31 19:45:00
    欢迎关注”生信修炼手册”!转录调控是一种重要的调控机制,转录因子对基因的表达调控是其中研究的最广泛的一个领域。研究转录因子,最经典的数据库就是TRANFAC数据库,网址如下http://...
  • 这个类型在mysql5.6开始支持InnoDB引擎的全文索引,功能没有专业搜索引擎比如solr、es丰富,如果需求简单,可以使用全文索引 适用场景:适用于海量数据的关键字模糊搜索,比如简易版的搜索引擎 索引的实现方式 B-...
  • 文章目录0.思维导图1.四大基本概念(1)数据--Data① 数据的定义② 数据的种类③ 数据的特点④ 数据举例(2)数据库...② DBMS的用途③ DBMS的主要功能(4)数据库系统--Database System① 什么是数据库系统(Databa...
  • 数据库复习笔记(全覆盖,包括往年部分真题)

    万次阅读 多人点赞 2020-11-26 18:08:35
    ## 1、数据库系统概述 **1.1 数据库的基本概念** 数据库: 长期储存在计算机内、有组织的、可共享的大量数据的集合。 *基本特征:* 数据按一定的数据模型组织、描述和储存 ... 数据库管理系统及其功能: 位于...
  • 关系型数据库与NoSQL数据库简述

    千次阅读 2017-09-21 16:10:44
    简单定义,关系模型指的就是二维表格模型,而一个关系型数据库就是由二维表及其之间的联系所组成的一个数据组织。关系模型中常用的概念: 关系:可以理解为一张二维表,每个关系都具有一个关系名,就是通常说的...
  • 数据库学习】数据库总结

    万次阅读 多人点赞 2018-07-26 13:26:41
    1,数据库 1)概念 数据库是长期存储在计算机内、有组织的、可共享的大量数据的集合。 常见数据库管理系统有:Access、mysql、sql server 2)特点 ①数据库数据特点 永久存储、有组织...
  • 2016数据库考试题

    千次阅读 多人点赞 2016-01-17 14:26:50
    数据库管理系统提供的主要功能有:数据定义功能(DDL)、数据操纵功能(DML)、数据控制功能(DCL)。 计算机数据管理技术主要经历了:人工管理阶段、文件管理阶段、数据库管理阶段。 1.3 数据模型三要素是:数据...
  • 上方文章标题要求:包括杂志名缩写(一个词的杂志名不缩写,两个及上用实词首字母)和吸引人且有重要信息的语句,中间用中文冒号(:)分隔 ...一级为文章标题,二级为摘要、背景、结果、方法和结论等,三级为主要结果...
  • c、数据库中存储的数据的三个基本特点d、数据库管理系统及其功能e、数据库系统的构成2、数据管理技术的发展a、人工管理阶段b、文件系统阶段c、数据库系统阶段3、数据库系统的结构a、数据库系统的结构分类数据库系统...
  • [数据库]树结构的数据库设计

    千次阅读 2014-06-02 23:37:21
    程序设计过程中,我们常常用树形结构来表征某些数据的关联关系,如企业上下级部门、栏目结构、商品分类等等,通常而言,这些树状结构需要借助于数据库完成持久化。然而目前的各种基于关系的数据库,都是以二维表的...
  • Oracle数据库

    千次阅读 2019-07-29 20:33:09
    学习主题:Oracle数据库的使用 学习目标: 1 掌握数据库相关概念 2 掌握oracle的安装,认识oracle的目录以及系统用户 3 掌握oracle常用命令 1.数据库相关概念 (1)请解释什么是DB, DBMS, DBAS, DBA, DBS? DB数据库,...
  • 数据库——数据库结构设计

    千次阅读 2020-03-08 22:21:25
    1 数据库概念设计 2 数据库逻辑设计 3 数据库物理设计 数据库概念设计 概念设计 是数据库设计的 核心环节,通过对用户需求进行综合;归纳;与抽象,形成一个独立于DBMS 的概念模型 数据库概念设计的目标 1 定义与...
  • 数据库面试

    千次阅读 多人点赞 2019-02-13 09:03:42
    一、数据库问答题 1. SQL语言包括哪些类型? 数据定义DDL:Create Table,Alter Table,Drop Table, Create/Drop Index等 数据操纵DML:Select ,insert,update,delete, 数据控制DCL:grant,revoke 2. 内联接,外联接...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 54,233
精华内容 21,693
关键字:

数据库的主要分类及其功能