当前位置:首页 > 问答 > 正文

用PHP做个简单的数据库查询计算器,边查边算挺方便的吧

“用PHP做个简单的数据库查询计算器,边查边算挺方便的吧”这个想法其实挺实用的,想象一下,你有一个小商店,商品和价格都存在数据库里,顾客选了几样东西,你不想每次都去翻价格表再按计算器,就想在网页上点一点,总价立马算出来,这就是我们要做的玩意儿。

你得有个能跑PHP的环境,比如XAMPP或者宝塔面板这种,把Apache和MySQL服务开起来,在数据库里,我们简单点,就建一张表,叫products吧,里面放几个字段:id(商品编号,自动增长)、name(商品名字)、price(商品价格),你先手动往里添加几条数据,牙刷”价格5块,“牙膏”价格8块,“毛巾”价格15块,这些准备工作做完了,我们的“弹药”就备齐了。

接下来就是写PHP代码了,我们搞一个简单的HTML表单,让用户能选择商品和输入数量,PHP脚本呢,就负责接过这个表单提交的数据,去数据库里把对应的价格查出来,然后乘上数量,最后把总价显示给用户,这个过程就是“边查边算”。

我们先写前端部分,就是一个表单(form),表单里放一个下拉选择框(select),让用户选商品,这个下拉框里的选项,不能是我们硬编码写死的“牙刷”、“牙膏”,那样以后加新商品还得改代码,多麻烦,我们要用PHP动态地从数据库里把商品名字读出来,填充到这个下拉框里,这就意味着,我们这个PHP文件,一打开页面的时候,就得先连接一次数据库,把商品列表查出来。

代码大概是这样开头的:我们先试着连接数据库,用mysqli_connect函数,把你的数据库地址(通常是localhost)、用户名(比如root)、密码、还有数据库名传给它,如果连接失败了,就用die函数报个错,数据库连接失败:”后面跟上错误信息,这样就知道哪儿出问题了。

连接成功之后,我们就写一条SQL查询语句,特别简单:SELECT id, name, price FROM products,这条命令就是告诉数据库:“把products表里所有商品的id、name和price字段都给我拿来。”然后用mysqli_query函数执行这个查询。

拿到结果集之后,我们就可以在一个<select>标签里,用while循环遍历每一行数据,每一行数据就是一个商品嘛,我们把商品的id放在选项(option)的value属性里,把商品的name显示在选项的文本上,这样,下拉框里显示的是商品名,但背后传递的值是对应的商品id,表单里还得有一个输入框(input type="number"),让用户输入购买数量,最后再加一个提交按钮。

前端表单准备好了,它会把商品id和数量提交给服务器,可能是提交给另一个PHP文件,也可以是提交给这个文件自身,我们图省事,就让表单的action属性指向这个PHP文件本身,这样,我们需要在代码开头判断一下,是不是表单提交过来的,可以通过判断$_POST数组里有没有我们期待的字段(比如提交按钮的name)来实现。

如果是提交过来的,好戏就开始了,这才是“计算”的核心部分,我们先从$_POST里安全地取出商品id和数量,为啥要“安全地取出”?因为要防止SQL注入攻击,虽然我们这个计算器很小,但好习惯要养成,我们可以用intval函数把商品id和数量都强制转换成整数,这样就算用户输入了乱七八糟的字符,我们也只取数字部分,安全多了。

再次连接数据库(或者复用之前的连接,但为了逻辑清晰,可以重新连),根据提交过来的商品id,我们写一条新的SQL查询:SELECT price FROM products WHERE id = 刚才提交的商品id,这条查询非常精准,只获取我们选中的那一个商品的价格。

执行查询,从结果集里把价格取出来,存到一个变量里,比如$price,总价计算就简单了:$total = $price * $quantity(数量),算完之后,就在页面上找个地方,用echo把结果输出出来,总价是:<?php echo $total; ?> 元”。

这样,一个最简单的“边查边算”的流程就走通了,你选择商品,它后台立马去数据库里查价格,然后拿着价格和前台的数量一乘,结果就出来了,你还可以加点花样,比如允许多选商品,那就用复选框(checkbox)代替下拉框,然后PHP这边用循环计算每个选中商品的总价再相加,或者再加个“清空”按钮,用一点点JavaScript把表单重置一下。

这个东西的核心思路就是:PHP在服务器端充当一个桥梁,它既能从数据库里取数(查),又能进行简单的数学运算(算),还能把结果动态地生成HTML页面返回给浏览器,对于小店记账、内部简单的成本核算之类的场景,这种随手就能用的计算工具,确实比来回切换软件要方便不少,代码虽然不复杂,但把Web开发里最基础的几个操作——数据库连接、查询、表单处理、动态内容展示——都串起来了,挺有成就感的。

用PHP做个简单的数据库查询计算器,边查边算挺方便的吧