参考B站视频:PHP MySQL 商品管理项目 增删改查 - 1904
商品管理项目-HTML和PHP混编
主要练习Mysql增删改查!
一、创建数据库
创建数据库,创建数据表
ALTER TABLE `product` ADD `id` INT NOT NULL AUTO_INCREMENT COMMENT '商品编号' AFTER `remark`, ADD PRIMARY KEY (`id`);
ALTER TABLE `product` ADD `id` INT NOT NULL AUTO_INCREMENT COMMENT '商品编号' AFTER `remark`, ADD `pname` VARCHAR (20 ) NOT NULL COMMENT '商品名称' AFTER `id`, ADD `price` INT NOT NULL COMMENT '商品价格' AFTER `pname`, ADD `pcount` INT NOT NULL COMMENT '商品数量' AFTER `price`, ADD `remark` VARCHAR (50 ) NOT NULL COMMENT '商品备注' AFTER `pcount`, ADD PRIMARY KEY (`id`);
数据库中添加商品数据
INSERT INTO `product` (`id`, `pname`, `price`, `pcount`, `remark`) VALUES (NULL , '乐事薯片' , '3' , '15' , '就是脆' );
INSERT INTO `product`( `id`, `pname`, `price`, `pcount`, `remark` ) VALUES (NULL , '冰红茶' , '3' , '20' , '冰力十足' );INSERT INTO `product`( `id`, `pname`, `price`, `pcount`, `remark` ) VALUES (NULL , '炫迈口香糖' , '5' , '10' , '根本停不下来' );INSERT INTO `product`( `id`, `pname`, `price`, `pcount`, `remark` ) VALUES (NULL , '乐事薯片' , '3' , '15' , '就是脆' );
二、编写首页 打开VScode,新建index.php
HTML结构
<!DOCTYPE html > <html lang ="zh-CN" > <head > <meta charset ="UTF-8" > <meta http-equiv ="X-UA-Compatible" content ="IE=edge" > <meta name ="viewport" content ="width=device-width, initial-scale=1.0" > <title > 商品管理</title > </head > <body > </body > </html >
添加商品列表结构
<table > <tr > <th > 商品名称</th > <th > 商品价格</th > <th > 商品数量</th > <th > 商品备注</th > <th > 操作</th > </tr > <tr > <td > 冰红茶</td > <td > 3</td > <td > 20</td > <td > 冰力十足</td > <td > <a href ="delete" > 删除</a > </td > </tr > </table >
引入列表结构的框架 官网链接:https://www.bootcdn.cn/twitter-bootstrap/
<link href ="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.css" rel ="stylesheet" >
添加样式的类名
官网链接:https://getbootstrap.com/docs/5.3/content/tables/
<table class ="table" > <thead > <tr > <th scope ="col" > #</th > <th scope ="col" > First</th > <th scope ="col" > Last</th > <th scope ="col" > Handle</th > </tr > </thead > <tbody > <tr > <th scope ="row" > 1</th > <td > Mark</td > <td > Otto</td > <td > @mdo</td > </tr > </tbody > </table >
<table class ="table-primary" > ...</table > <table class ="table-secondary" > ...</table > <table class ="table-success" > ...</table > <table class ="table-danger" > ...</table > <table class ="table-warning" > ...</table > <table class ="table-info" > ...</table > <table class ="table-light" > ...</table > <table class ="table-dark" > ...</table > <tr class ="table-primary" > ...</tr > <tr class ="table-secondary" > ...</tr > <tr class ="table-success" > ...</tr > <tr class ="table-danger" > ...</tr > <tr class ="table-warning" > ...</tr > <tr class ="table-info" > ...</tr > <tr class ="table-light" > ...</tr > <tr class ="table-dark" > ...</tr > <tr > <td class ="table-primary" > ...</td > <td class ="table-secondary" > ...</td > <td class ="table-success" > ...</td > <td class ="table-danger" > ...</td > <td class ="table-warning" > ...</td > <td class ="table-info" > ...</td > <td class ="table-light" > ...</td > <td class ="table-dark" > ...</td > </tr >
三、连接数据库
新建连接数据库文件database.php
<?php $host = 'localhost' ;$user = 'root' ;$password = '123456' ;$dbname = 'liuyanban' ;$conn = new mysqli ($host ,$user ,$password ,$dbname );if ($conn ->connect_error){ die ("连接失败:" .$conn ->connect_error); } ?>
四、查询商品——MySQL查 从数据库查询商品并打印出来
在首页引入database.php
<?php require_once 'database.php' ; ?>
从数据库调取商品打印出来——MySQL查
循环每一行,把查询的数据插入其中——查询后显示!
<tbody> <?php // 查询所有的sql语句 $sql = "SELECT * FROM `product`"; // 执行SQL语句并把返回值给变量 $productAll = $connectData->query($sql); ?> <?php while($row = $productAll->fetch_assoc()){ ?> <tr> <td><?php echo $row['pname']; ?></td> <td><?php echo $row['price']; ?></td> <td><?php echo $row['pcount']; ?></td> <td><?php echo $row['remark']; ?></td> <td> <a href="delete">删除</a> </td> </tr> <?php } ?> </tbody>
五、删除商品——Mysql删 根据id查询对应商品并删除数据
$_GET获取id,赋值给变量$id
删除的SQL语句
"DELETE FROM product WHERE `product`.`id` = $id"
执行删除语句,并返回首页
<?php $id = $_GET ['id' ]; require_once 'database.php' ; $sql = "DELETE FROM product WHERE `product`.`id` = $id " ; $connectData ->query ($sql ); header ("Location:index.php" ); ?>
在首页文件中,添加跳转和传值
<a href ="delete.php?id=<?php echo $row['id'] ?>" > 删除</a >
六、添加新商品——Mysql增 1. 跳转到addProduct.php页面 <a href ="addProduct.php" > 添加新商品</a >
2. 在页面中,创建提交表单,我把提交表单嵌入到表格中 <table class ="table" > <thead > <tr > <th scope ="col" > 商品名称</th > <th scope ="col" > 商品价格</th > <th scope ="col" > 商品数量</th > <th scope ="col" > 商品备注</th > <th scope ="col" > 操作</th > </tr > </thead > <tbody > <tr > <form action ="addProduct.php" > <td > <input name ="pname" type ="text" > </td > <td > <input name ="price" type ="number" > </td > <td > <input name ="pcount" type ="number" > </td > <td > <input name ="remark" type ="text" > </td > <td > <input type ="submit" value ="确认" > </td > </form > </tr > </tbody > </table >
3. 获取提交的表单数据,并插入到数据库——Mysql插 SQL插入语句!
INSERT INTO `product` (`id`, `pname`, `price`, `pcount`, `remark`) VALUES (NULL , $pname, $price, $pcount, $remark)
用GET获取传递的值,执行插入语句,返回首页!
<?php require 'database.php' ; if ($_GET ){ $pname = $_GET ['pname' ]; $price = $_GET ['price' ]; $pcount = $_GET ['pcount' ]; $remark = $_GET ['remark' ]; $sql = "INSERT INTO `product` (`id`, `pname`, `price`, `pcount`, `remark`) VALUES (NULL, $pname , $price , $pcount , $remark )" ; $connectData ->query ($sql ); header ("Location:index.php" ); } ?>
七、修改商品——Mysql改 根据id查询到商品,并以表单的形式显示出来,等更改后,再以id来更改对应商品,记得id是隐藏的!
SQL语句
UPDATE `product` SET `pname` = '660' , `price` = '669' , `pcount` = '667' , `remark` = '668' WHERE `product`.`id` = 36
使用函数,显示获取到的数据!
<?php $sql = "SELECT * FROM `product`" ; $productAll = $connectData ->query ($sql ); $row = $productAll ->fetch_assoc (); ?> 在用循环打印出这些数据 <?php while ($row = $productAll ->fetch_assoc ()){ ?>
输入表单,我是直接把表单显示在原表格中!
//如果接受到GET请求,并且GET请求的id和循环打印的id一致,那么直接变成表单,并显示内容! <?php if(isset($_GET['id']) and $_GET['id']==$row['id']){ ?> <tr> <form action="update.php" method="get"> <input hidden name="id" type="" value="<?php echo $row['id'] ?>"> // 让其中一个单元格的id为add,做好标记,方便跳转! <td align=center id="add"><input name="pname" type="text" value="<?php echo $row['pname'] ?>"></td> <td align=center><input name="price" type="number" value="<?php echo $row['price'] ?>"></td> <td align=center><input name="pcount" type="number" value="<?php echo $row['pcount'] ?>"></td> <td align=center><input name="remark" type="text" value="<?php echo $row['remark'] ?>"></td> <td align=center><input type="submit" value="确认"></td> </form> </tr>
注意:这里要附带id传给Mysql改的语句,并让其隐藏不显示,不让用户更改!
<input hidden name="id" type="" value="<?php echo $row['id'] ?>">
点击后,跳转到当前单元格,单元格显示内容变成显示表单,表单内容填充显示 根据id跳转到对应单元格
<?php $url = "#add" ; echo "<script>" ; echo "window.location.href = '$url '" ; echo "</script>" ; ?>
其它单元格的数据原封不动的显示
<tr> <td align=center><?php echo $row['pname']; ?></td> <td align=center><?php echo $row['price']; ?></td> <td align=center><?php echo $row['pcount']; ?></td> <td align=center><?php echo $row['remark']; ?></td> <td align=center> <a style="margin: 1em;" href="revise.php?id=<?php echo $row['id'] ?>">修改</a> <a style="margin: 1em;" href="delete.php?id=<?php echo $row['id'] ?>">删除</a> </td> </tr>
提交表单,执行更改的SQL语句,并跳转到首页,我这里直接跳转到更改的单元格!
<?php $id = $_GET ['id' ]; $pname = $_GET ['pname' ]; $price = $_GET ['price' ]; $pcount = $_GET ['pcount' ]; $remark = $_GET ['remark' ]; require_once 'database.php' ; $sql = "UPDATE `product` SET `pname` = '$pname ', `price` = $price , `pcount` = $pcount , `remark` = '$remark ' WHERE `product`.`id` = $id " ; $connectData ->query ($sql ); header ("Location:index.php#$id " ); ?>
完成!综合这个步骤代码如下:
<tbody> <?php // 查询所有的sql语句 $sql = "SELECT * FROM `product`"; // 执行SQL语句并把返回值给变量 $productAll = $connectData->query($sql); ?> <?php // 通过id查询到要修改的数据,用函数$productAll->fetch_assoc(),得到单条数据! while($row = $productAll->fetch_assoc()){ ?> <?php // 如果有GET传值,且传值ID等于循环待显示的ID一致,那么这个单元格显示成表单! if(isset($_GET['id']) and $_GET['id']==$row['id']){ ?> <tr> <form action="update.php" method="get"> <input hidden name="id" type="" value="<?php echo $row['id'] ?>"> <td align=center id="add"><input name="pname" type="text" value="<?php echo $row['pname'] ?>"></td> <td align=center><input name="price" type="number" value="<?php echo $row['price'] ?>"></td> <td align=center><input name="pcount" type="number" value="<?php echo $row['pcount'] ?>"></td> <td align=center><input name="remark" type="text" value="<?php echo $row['remark'] ?>"></td> <td align=center><input type="submit" value="确认"></td> </form> </tr> <?php // 滑动到点击修改的商品 $url = "#add"; echo "<script>"; echo "window.location.href = '$url'"; echo "</script>"; ?> <?php }else{ // 其它单元格原封不动显示 ?> <tr> <td align=center><?php echo $row['pname']; ?></td> <td align=center><?php echo $row['price']; ?></td> <td align=center><?php echo $row['pcount']; ?></td> <td align=center><?php echo $row['remark']; ?></td> <td align=center> <a style="margin: 1em;" href="revise.php?id=<?php echo $row['id'] ?>">修改</a> <a style="margin: 1em;" href="delete.php?id=<?php echo $row['id'] ?>">删除</a> </td> </tr> <?php } ?> <?php } ?> </tbody>