博客列表 >0427课后作业

0427课后作业

张成钢的博客
张成钢的博客原创
2018年05月02日 17:04:52594浏览

job0427.png

实例

<?php 
	error_reporting(E_ALL || ~E_NOTICE);

	//连接函数
	if (!function_exists('myconnect')) {

		function myconnect($dbType,$host,$dbname,$user,$pw,$port=0,$charset='utf8') {
		if ($dbType == 'mysql') {
			//端口号设置						 
			$port = ($port == 0) ? 3306 : $port;
			//dsn 建立
 			$dsn = "{$dbType}:host={$host};dbname={$dbname};charset={$charset};port={$port}";
 			// echo $dsn;
		}

		if ($dbType == 'sqlsrv') {
			$port = ($port == 0) ? 1433 : $port;
			$dsn = "{$dbType}:server=tcp:{$host},{$port};database={$dbname};";
			// echo $dsn;
		}

		try{
			$pdo = new PDO($dsn,$user,$pw);
			// echo "<h3>数据库连接成功!</h3>";
		}catch (PDOException $e){
			die('连接失败。'.$e->getMessage());
		}		
		return $pdo;
		}
	}


	//新增函数
	if (!function_exists('myinsert')) {
		function myinsert($pdo,$table,$data=[]) {
			$sql = "INSERT INTO {$table} (";
			// Field 部分
			foreach (array_keys($data) as $field) {
				$sql .= $field.',';
			}
			//去掉尾部 , 并加上)
			$sql = rtrim(trim($sql),',').') ';

			//VALUE 部分
			$sql .= ' VALUES (';

			foreach (array_keys($data) as $value) {
				$sql .= ':'.$value.',';
			}
			$sql = rtrim(trim($sql),',').') ';

			//创建pdo预处理对象
			$stmt = $pdo->prepare($sql);

			foreach ($data as $field => $value) {
				$stmt->bindValue(":{$field}",$value);
			}

			if ($stmt->execute()) {
				if ($stmt->rowCount() > 0) {
					echo '新增记录成功!';
					return true;
				} else {
					return false;
				}
			} else {
					// echo '<h3>新增记录失败</h3>';
					// print_r($stmt->errorInfo());						
					return false;

 			}

		}
	}

	//更新函数
	if (!function_exists('myupdate')) {
		function myupdate($pdo,$table,$data=[],$where) {

			$sql = "UPDATE {$table} SET ";

			// Field 部分
			foreach (array_keys($data) as $field) {
				$sql .= $field.'=' .':'.$field.',';
			}
			//去掉尾部 , 
			$sql = rtrim(trim($sql),',');

			//where 部分
	        if(!empty($where)) {
	            $sql .= ' WHERE '. $where;
	        }else{
	            exit('条件不能为空');
	        }

	        echo($sql);
			//创建pdo预处理对象
			$stmt = $pdo->prepare($sql);
			foreach ($data as $field => $value) {
				$stmt->bindValue(":{$field}",$value);
			}

			if ($stmt->execute()) {
				if ($stmt->rowCount() > 0) {
					echo '修改记录成功!';
					return true;
				} else {
					return false;
				}
			} else {
					// echo '<h3>修改记录失败</h3>';
					// print_r($stmt->errorInfo());						
					return false;

 			}

		}
	}


	//删除函数
	if (!function_exists('mydelete')) {
		function mydelete($pdo,$table,$where) {

			$sql = "DELETE FROM {$table} ";

			//where 部分
	        if(!empty($where)) {
	            $sql .= ' WHERE '. $where;
	        }else{
	            exit('条件不能为空');
	        }

			//创建pdo预处理对象
			$stmt = $pdo->prepare($sql);
			foreach ($data as $field => $value) {
				$stmt->bindValue(":{$field}",$value);
			}

			if ($stmt->execute()) {
				if ($stmt->rowCount() > 0) {
					echo '删除记录成功!';
					return true;
				} else {
					return false;
				}
			} else {
					// echo '<h3>修改记录失败</h3>';
					// print_r($stmt->errorInfo());						
					return false;

 			}

		}
	}

	//查询单条函数
	if (!function_exists('myselect_one')) {
		function myselect_one($pdo,$table,$fields,$where,$order) {

			$sql = "SELECT TOP 1 ";

			if (is_array($fields)) {
				foreach ($fields as $field) {
					$sql .= $field.', ';
				}
			} else {
				$sql .= $fields;
			}

			//去掉尾部 ,
			$sql = rtrim(trim($sql),',');

			//FROM 部分
			$sql .= ' FROM '.$table ;

			//where 部分
	        if(!empty($where)) {
	            $sql .= ' WHERE '. $where;
	        }

        	//ORDER BY  部分
        	if (!empty($order)) {
        		$sql .= ' ORDER BY ' .$order;
        	}

        	// echo $sql;
			//创建pdo预处理对象 
			// mssql rowCount()无法返回行数
			// mysql rowCount()可返回受影响的行数
			// rowCount() 用 prepare()方法时,仅支持CURSOR_SCROLL			
			$stmt = $pdo->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));

			if ($stmt->execute()) {
				// var_dump($stmt->rowCount());
				if ($stmt->rowCount() > 0) {
					echo '查询记录成功!';
					// $stmt->setFetchMode(PDO::FETCH_ASSOC);
					return $stmt->fetch(PDO::FETCH_ASSOC);
				}  else {
					echo '没有匹配的记录!';
					return false;
				}

			} else {
					// print_r($stmt->errorInfo());						
					return false;
 			}

		}
	}

	//查询符合条件的全部记录函数
	if (!function_exists('myselect_all')) {
		function myselect_all($pdo,$table,$fields,$where,$order) {

			$sql = "SELECT ";

			if (is_array($fields)) {
				foreach ($fields as $field) {
					$sql .= $field.', ';
				}
			} else {
				$sql .= $fields;
			}

			//去掉尾部 ,
			$sql = rtrim(trim($sql),',');

			//FROM 部分
			$sql .= ' FROM '.$table ;

			//where 部分
	        if(!empty($where)) {
	            $sql .= ' WHERE '. $where;
	        }

        	//ORDER BY  部分
        	if (!empty($order)) {
        		$sql .= ' ORDER BY ' .$order;
        	}

			//创建pdo预处理对象
			$stmt = $pdo->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
			// var_dump($pdo->prepare($sql));

			if ($stmt->execute()) {
				if ($stmt->rowCount() > 0) {
					echo '查询记录成功!';
					// $stmt->setFetchMode(PDO::FETCH_ASSOC);
					return $stmt->fetchAll(PDO::FETCH_ASSOC);
				}  else {
					echo '没有匹配的记录!';
					return false;					
				}
			} else {
					// print_r($stmt->errorInfo());						
					return false;
 			}

		}
	}


	//调用存储过程函数
	if (!function_exists('myexecute')) {
		function myexecute($pdo,$proc,$params=[]) {

			$sql = "EXEC {$proc} ";

			// 参数 部分
			foreach (array_keys($params) as $param) {
				$sql .= ':'.$param.',';
			}
			//去掉尾部 , 
			$sql = rtrim(trim($sql),',');

	        // exit($sql);
			//创建pdo预处理对象
			$stmt = $pdo->prepare($sql);
			foreach ($params as $param => $value) {
				$stmt->bindValue(":{$param}",$value);
			}

			if ($stmt->execute()) {
				echo '调用存储过程成功!';
				// $stmt->setFetchMode(PDO::FETCH_ASSOC);
				return $stmt->fetchAll(PDO::FETCH_ASSOC);

			} else {
					echo '<h3>调用存储过程失败!</h3>';
					// print_r($stmt->errorInfo());						
					return false;
 			}

		}
	}


 ?>

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<?php
/**
 *
 */
if (!function_exists('my_mysql_page'))
{
    function my_mysql_page($db,$table,$page=1,$num=5){

        $offset = ($page-1)*$num;
        $sql = "SELECT * FROM {$table} LIMIT {$offset}, {$num};";
        $res = mysqli_query($db,$sql);
        $rows = mysqli_fetch_all($res,MYSQLI_ASSOC);

    //获取总页数分2步:1.获取总记录数,2.再除以每次的显示数量,结果向上取整
        $number = mysqli_query($db,"SELECT COUNT(*) FROM {$table}");
        list($total) = mysqli_fetch_row($number); //总记录数保存到变量$total中
        $pages = ceil($total / $num);  //获取到总页数 $pages

        //返回当前分页数据与总页数
        return ['rows'=>$rows, 'pages'=>$pages];
    }
}


if (!function_exists('my_mssql_page'))
{
    function my_mssql_page($pdo,$table,$orderfield,$page=1,$num=10){
        //mssql无limit语名, 采用排序字段 最大值的方式取数
        //sql语句
        $offset = $page*$num;
        $sql = "SELECT TOP $num * FROM {$table} ";
        $sql .= " WHERE ({$orderfield}> ";
        $sql .= "(SELECT MAX({$orderfield}) FROM (SELECT TOP $offset {$orderfield} FROM {$table} ORDER BY {$orderfield}) AS x )) ";
        $sql .= " ORDER BY {$orderfield}";

        // die($sql);
        //预处理对象,取数据集
        $stmt = $pdo->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        $rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
        // var_dump($rows);

        //返回总记录数
        $sql = "SELECT COUNT(*) AS total FROM {$table}";
        $stmt = $pdo->prepare($sql,array(PDO::ATTR_CURSOR => PDO::CURSOR_SCROLL));
        $stmt->execute();
        foreach ($stmt->fetch(PDO::FETCH_ASSOC) as $value) {
           $rowCount = $value;
        }
        // echo $rowCount;

        //求总页数
        $pages = ceil($rowCount / $num);

        //返回结果集 和 总页数 
        return ['rows'=>$rows,'pages'=>$pages];

    }
}

运行实例 »

点击 "运行实例" 按钮查看在线实例

实例

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>封装分页函数,进一步规范代码,实现代码复用</title>
    <style>
        table,th,td {
            border: 1px solid black;
        }
        table th {
            background-color: lightskyblue;
        }
        table {
            border-collapse: collapse;
            width: 80%;
            margin: 30px auto;
            text-align: center;
        }
        h3 {
        	font-size: 12pt;
            text-align: center;
        }
        h3 a {
            text-decoration: none;
            margin-left: 5px;
            /*display: inline-block;*/
        }
        h3 a:hover, .active {
            background-color: red;
            color: white;
        }
        form {
            display: inline;
        }
    </style>
</head>
<body>
<?php
//连接数据库
//导入分页函数库
require 'lib/myfun_pdo.php';
require 'lib/myfun_page.php';

$dbType = 'sqlsrv';
$host = '127.0.0.1';
$dbname = 'WsErp';
$user = 'sa';
$pw = 'iloveyou2008';

$pdo = myconnect($dbType,$host,$dbname,$user,$pw);


// $db = myconnect('localhost','root','root','php');

$page = isset($_GET['p']) ? $_GET['p'] : 1;
$num = 15;
$table = 'bs_supplier';
$orderfield = 'keyid';

//调用分页函数
$data = my_mssql_page($pdo,$table,$orderfield,$page,$num);
$rows = $data['rows'];  //当前分页数据
$pages = $data['pages'];  //总页数

//边界限定
$page = ($page == 0) ? 1 : $page;
$page = ($page > $pages) ? $pages : $page;
?>

<table>
    <caption><h2>厂商信息表</h2></caption>
    <tr>
        <th>厂商编号</th>
        <th>厂商名称</th>
        <th>简称</th>
        <th>联系人</th>
        <th>电话</th>
    </tr>
    <?php foreach ($rows as $row): ?>
        <tr>
            <td><?php echo $row['KeyId']; ?></td>
            <td><?php echo $row['Name']; ?></td>
            <td><?php echo $row['jName']; ?></td>
            <td><?php echo $row['LinkMan']; ?></td>
            <td><?php echo $row['Tel']; ?></td>
        </tr>
    <?php endforeach;?>
</table>



<h3>
    <!-- 第一页的时候不显示首页上一页 -->
    <?php if($page != 1): ?>
        <a href="http://127.0.0.1/server/0427/job0427.php?p=1">首页</a>
        <a href="http://127.0.0.1/server/0427/job0427.php?p=<?php echo $page-1; ?>">上一页</a>
    <?php endif; ?>


    <!--生成中间页-->
    <?php for($i=1; $i<=$pages; $i++): ?>
        <a class="<?php if($_GET['p']==$i){echo 'active';}?>" href="http://127.0.0.1/server/0427/job0427.php?p=<?php echo $i ?>"><?php echo $i ?></a>
    <?php endfor; ?>

    <!--最后一页时 下一页和最后一页不显示-->
    <?php if($page != $pages) :?>
        <a href="http://127.0.0.1/server/0427/job0427.php?p=<?php echo $page+1; ?>">下一页</a>
        <a href="http://127.0.0.1/server/0427/job0427.php?p=<?php echo $pages; ?>">尾页</a>
    <?php endif; ?>

    <!--页面快速跳转-->
    <form action="" method="get">
        第
        <select name="p" id="">
            <?php for($i=1; $i<=$pages; $i++): ?>
                <option value="<?php echo $i; ?>" <?php if($_GET['p']==$i){echo 'selected';} ?>><?php echo $i; ?></option>
            <?php endfor; ?>
        </select>
        页

        <button>跳转</button>
    </form>

</h3>


</body>
</html>

运行实例 »

点击 "运行实例" 按钮查看在线实例


声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议