参考B站视频:PHP MySQL 商品管理项目 增删改查 - 1904

商品管理项目-HTML和PHP混编

主要练习Mysql增删改查!

一、创建数据库

  1. 创建数据库,创建数据表
  • 这是添加一条
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`);
  1. 数据库中添加商品数据
  • 插入一条数据
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

  1. 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>
  1. 添加商品列表结构
<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>
  1. 引入列表结构的框架
    官网链接:https://www.bootcdn.cn/twitter-bootstrap/
<link href="https://cdn.bootcdn.net/ajax/libs/twitter-bootstrap/5.2.3/css/bootstrap.css" rel="stylesheet">
  1. 添加样式的类名

​ 官网链接: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>
  • 更多样式
<!-- On tables -->
<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>

<!-- On rows -->
<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>

<!-- On cells (`td` or `th`) -->
<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>

三、连接数据库

  1. 新建连接数据库文件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查

从数据库查询商品并打印出来

  1. 在首页引入database.php
<?php
require_once 'database.php';
?>
  1. 从数据库调取商品打印出来——MySQL查
SELECT * FROM `product`
  1. 循环每一行,把查询的数据插入其中——查询后显示!
<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查询对应商品并删除数据

  1. $_GET获取id,赋值给变量$id
  2. 删除的SQL语句
"DELETE FROM product WHERE `product`.`id` = $id"
  1. 执行删除语句,并返回首页
<?php
$id = $_GET['id'];
require_once 'database.php';

// 删除的sql语句
$sql = "DELETE FROM product WHERE `product`.`id` = $id";
// 执行语句
$connectData->query($sql);

// 返回首页
header("Location:index.php");
?>
  1. 在首页文件中,添加跳转和传值
<!-- 注意,通过?接id=来传值,并用echo打印id -->
<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';
// 进入此页面没传入GET值,页面内也没有其它方式可以传入GET值,所以可用GET判断
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是隐藏的!

  1. SQL语句
UPDATE
`product`
SET
`pname` = '660',
`price` = '669',
`pcount` = '667',
`remark` = '668'
WHERE
`product`.`id` = 36
  1. 使用函数,显示获取到的数据!
<?php
// 查询所有的sql语句
$sql = "SELECT * FROM `product`";
// 执行SQL语句并把返回值给变量
$productAll = $connectData->query($sql);
// 使用fetch_assoc()函数,获取到单条数据
$row = $productAll->fetch_assoc();
?>

在用循环打印出这些数据
<?php
while($row = $productAll->fetch_assoc()){
?>
  1. 输入表单,我是直接把表单显示在原表格中!
//如果接受到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'] ?>">
  1. 点击后,跳转到当前单元格,单元格显示内容变成显示表单,表单内容填充显示
    根据id跳转到对应单元格
<?php   
// 滑动到点击修改的商品,跳转
$url = "#add";
echo "<script>";
echo "window.location.href = '$url'";
echo "</script>";
?>
  1. 其它单元格的数据原封不动的显示

    <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>
  2. 提交表单,执行更改的SQL语句,并跳转到首页,我这里直接跳转到更改的单元格!

<?php
$id = $_GET['id'];
$pname = $_GET['pname'];
$price = $_GET['price'];
$pcount = $_GET['pcount'];
$remark = $_GET['remark'];
require_once 'database.php';

// 更新的sql语句
$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>