时间:2021-07-01 10:21:17 帮助过:11人阅读
项目github地址:https://github.com/66Web/php_book_store,欢迎Star。
一、知识点记录
1、数据库的表名和列名
2、后台用户模块
<input type="hidden" name="id" value=‘<?php echo $row[‘id‘] ?>‘ />
3、_top 是指向:上一级目录
<p><a href="logout.php" target=‘_top‘>|-退出系统</a></p>
4、disabled 禁用username提交,不能修改
<p>管理员名:</p> <p><input type="text" name=‘username‘ value=‘<?php echo $row[‘username‘]?>‘ disabled></p>
5、后台修改、删除
6、Select选项‘修改’时显示原选项
<p>类别:</p>
<p>
<select name="class_id">
<?php
$sqlClass="select * from class"; //创建sql语句
$rstClass=mysql_query($sqlClass); //发送sql语句
while($rowClass=mysql_fetch_assoc($rstClass)){ //读取并判断mysql服务器返回结果
if($rowClass[‘id‘] == $rowBook[‘class_id‘]){ //rowClass的id 与传过来的rowCook的class_id相同时,选中 加selected
echo "<option value=‘{$rowClass[‘id‘]}‘ selected>{$rowClass[‘name‘]}</option>";
}else{
echo "<option value=‘{$rowClass[‘id‘]}‘>{$rowClass[‘name‘]}</option>";
}
}
?>
</select>
</p>
7、后台书的模块,delete.php
$file="../../public/uploads/{$img}"; //定义图片文件路径
$file2="../../public/uploads/thumb_{$img}" //定义缩略图文件路径
//删除图片 删除文件用unlink()
unlink($file);
unlink($file2);
8、传文件函数
$ext = array_pop(explode(‘.‘,$name)); $dst = ‘../../public/uploads/‘.time().mt_rand().‘.‘.$ext;//指定地址,并随机生成新文件名 // array_pop() 函数删除数组中的最后一个元素 // explode(‘.‘,$name) 字符串分割函数获得文件扩展名.jpg等 $src = $_FILES[‘img‘][‘tmp_name‘]; //文件上传时在临时目录中被保存成一个临时文件的文件名 $name = $_FILES[‘img‘][‘name‘]; //上传文件的文件名
//判断 原图x/目标x > 原图y/目标y 以大的比例结果为准 1000/500 500/500 2 1
$img = basename($dst); //获得目录下的文件名a.jpg
9、PHP中exit; 可以阻止脚本,不用通篇注释。
10、图书模块update.php
$imgerror=$_FILES[‘img‘][‘error‘]; //文件上传错误信息
//图片上传--先上传新图,后删除原图,上传失败不删原图
if($imgerror === 0){
11、多表查询
$sql="select comment.*,user.username,book.name
from comment,user,book
where comment.user_id=user.id and comment.book_id=book.id";
$rst=mysql_query($sql);
$sql="select book.*,class.name cname from book,class where book.class_id=class.id"; $rst=mysql_query($sql);
12、后台评论模块index.php
echo "<td>".date(‘Y-m-d‘,$row[‘time‘])."</td>";
13、在页面里面流通的get post中的数据都变成字符串了
if($row[‘id‘]==1){
//编号为1 的删除按钮的a链接,禁用--<a href=‘javascript:‘></a>,改背景色为灰色
echo "<td><a href=‘javascript:‘ style=‘background:#888‘>删除</a></td>";
}else{
echo "<td><a href=‘delete.php?id={$row["id"]}‘>删除</a></td>";
}
14、后台广告模块
15、订单模块
$sql="select indent.price,indent.num,book.name,book.img
from indent,book
where indent.book_id=book.id and indent.code=‘{$code}‘";
$rst=mysql_query($sql);
订单编号code是varchar类型,要加单引号:失误率极高!
indent.code=‘{$code}‘
echo $sql; exit;
加载出缩略图 thumb_{}
echo "<td><img src=‘../../public/uploads/thumb_{$row[‘img‘]}‘ width=‘50px‘></td>";
输出合计
echo "<td>".$row[‘price‘]*$row[‘num‘]."</td>";
16、后台权限把控:后台每一个页面都要写(或模块化引入)
<?php
session_start();
if(!$_SESSION[‘userid‘]){
echo "<script>location=‘login.php‘</script>";
exit; //防止程序在跳转之前,突然的,执行下去下面的代码了
}
?>
17、session数组:将数据存放在服务器中
session_start();
$_SESSION[‘username‘]=‘user1‘; $_SESSION[‘user_id‘]=‘15‘;
session_start();
$_SESSION=array();
setcookie(‘PHPSESSID‘,‘‘,time()-1,‘/‘);
session_destroy();
18、退出后台登录
<?php session_start(); $_SESSION = array(); //清空session数组 session_destroy(); //删除服务器上PHPSESSID所对应的session文件 setcookie(‘PHPSESSID‘,‘‘,time()-3600,‘/‘); //删除客户端的cookie文件 echo ‘<script>location="login.php"</script>‘; ?>
19、前台广告 动态放置
<?php
include ‘../public/common/conn.php‘;
$sqlAdvert = "select * from advert";
$rstAdvert = mysql_query($sqlAdvert);
while($rowAdvert=mysql_fetch_assoc($rstAdvert){
$rowAds[$rowAdvert[‘pos‘]]=$rowAdvert;
}
?>
<div class="ads">
<img src="../public/upadverts/<?php echo $rowAds[0][‘img‘]?>" >
</div>
20、网站下不要用绝对路径,这样文件名改动会出问题
<?php
$path = $_SERVER[‘PHP_SELF‘];
$arr = explode(‘/‘,$path);
$root = ‘/‘.$arr[1]; //获取根目录
?>
<a href="">
<img src="<?php echo $root?>/home/public/img/logo.png" >
</a>
21、首页 重复加载的相似度很高的【楼层、数据块】都要通过 php循环加载
<?php
$sqlClass = "select * from class order by id limit 2";
$rstClass = mysql_query($sqlClass);
$f = 1;
while($rowClass=mysql_fetch_assoc($rstClass)){
?>
<!--楼层开始-->
…… …… ……
<?php
$sqlBook = "select book.* from book,class where book.class_id = class.id and class.id =
{$rowClass[‘id‘]} and book.shelf=1 order by book.id limit 4";
$rstBook = mysql_query($sqlBook);
while($rowBook = mysql_fetch_assoc($rstBook)){
?>
<!--楼层数据块开始-->
…… …… ……
<!--楼层数据块结束-->
<?php
}
}
?>
<!--楼层结束-->
22、前台页面中 动态循环添加数据
$id=$_GET[‘class_id‘];
$sqlClass="select * from class where id = {$id} ";
$rstClass=mysql_query($sqlClass);
$rowClass=mysql_fetch_assoc($rstClass);
while($rowClass=mysql_fetch_assoc($rstClass)){
…… ……
}
<?php echo $rowClass[‘name‘]?>
23、打印 查看:查到的数据结果
<?php
…… ……
while($rowClass=mysql_fetch_assoc($rstClass)){
echo ‘<pre>‘;
print_r($rowClass);
echo ‘</pre>‘;
}
?>
24、前台不同页面之间 跳转 通过a链接传递参数,查表,得到想要的结果
<span><a href=‘class.php?class_id=<?php echo $class_id?>‘>分类</a> » <?php echo $rowClass[‘name‘]?></span>
if($page>=1 && $totalpage>1){
echo "<a href=?page=1&class_id={$rowClass[‘id‘]}>第一页 </a>";
}
25、header.php 中控制登录、注册、切换用户名
<?php
if(!$_SESSION[‘home_username‘]){
echo "<a href=‘{$root}/home/login.php‘>登录</a>";
}else{
echo " <a href=‘{$root}/home/person/index.php‘>欢迎
{$_SESSION[‘home_username‘]}登录</a> <a href=‘{$root}/home/logout.php‘>退出</a>";
}
?>
@$_SESSION[‘home_username‘];
26、个人中心 左右结构页面
27、通过session方法开发购物车,用户关闭浏览器后,自动清空购物车
session_start();
$id = $_GET[‘id‘];
$sql = "select * from book where id = {$id}";
$rst = mysql_query($sql);
$row = mysql_fetch_assoc($rst);
$_SESSION[‘books‘][$id]=$row; //用id限制同一图书只能加一个,然后在购物车页面中进行加减数量
//在图书信息的子数组中临时加一个num 默认1, 方便index.php中使用变量 <?php echo $book[‘num‘]?>
$_SESSION[‘books‘][$id][‘num‘]=1;
echo ‘<script>location="index.php"</script>‘;
有了数组,就不用while了,用foreach遍历数组 index.php
<?php
foreach($_SESSION[‘books‘] as $book){
?>
…… ……
<?php
}
?>
// 在session中找到 删除 unset($_SESSION[‘books‘][$id]);
$_SESSION[‘books‘]=array();
不可以unset,那样会把 $_SESSION[‘books‘]删掉
$tot = 0
遍历后(foreach 或 while循环)
$tot += $row[‘price‘]*$row[‘num‘];
$_SESSION[‘books‘][$id][‘num‘]++; $_SESSION[‘books‘][$id][‘num‘]--;
限制数量 加→不能多于库存 减→不能少于1个
if($_SESSION[‘books‘][$id][‘num‘]<1){
$_SESSION[‘books‘][$id][‘num‘] = 1;
}
if($_SESSION[‘books‘][$id][‘num‘] > $_SESSION[‘books‘][$id][‘stock‘]){
$_SESSION[‘books‘][$id][‘num‘] = $_SESSION[‘books‘][$id][‘stock‘];
}
28、购物车的 联系方式、提交订单
<!--判断用户是否登录 session-->
<?php
if($_SESSION[‘home_username‘]){
?>
……
<?php
}
?>
$arr=$_SESSION[‘books‘]; $_SESSION = array(); //清空session数组 $_SESSION[‘books‘]=$arr;
29、登录后不仅要在session中放入username ,一般还要放入userid
$_SESSION[‘home_userid‘] = $row[‘id‘];
$user_id = $_SESSION[‘home_userid‘];
$sql = "select * from touch where user_id = {$user_id}";
$rst = mysql_query($sql);
30、在各个 后台数据管理模块中 修改都要有一个隐藏域 传id
31、购物车生成订单
$code =time().mt_rand(); $code =microtime(true).time().mt_rand(); //microtime(true)微秒 $code =time().mt_rand().mt_rand(1,10); $code =time().mt_rand().range(‘a‘,‘z‘);
32、购物车 提交订单之后,要做两件事
33、提交订单的用户,只有在 ‘已确认’状态下,才可以评论
34、在CSS样式表里,用class类
二、运行效果图
1、注册功能
![]() |
| 注册界面 |
|
| 错误提示 |
![]() |
| 通过提示 |
2、二手书搜索功能
|
|
| 高级搜索成功界面 |
![]() |
| 搜索失败提示 |
3、二手书发布功能
![]() |
| 用户发布二手书界面 |
![]() |
| 用户发布二手书成功 |
4、二手书购买与评论功能
![]() |
| 加入购物车界面 |
![]() |
| 购物车界面 |
![]() |
| 提交订单成功 |
![]() |
| 未确认时查看订单界面 |
![]() |
| 未确认时查看订单详情界面 |
![]() |
| 确认时查看订单详情界面 |
![]() |
| 确认后撰写评论 |
![]() |
| 评论成功 |
注:转载请注明出处
【千纸诗书】—— PHP/MySQL二手书网站后台开发之知识点记录
标签:from store 通过 不同的 客户 php 安全 float 多表查询