给产品经理及UI的PHP教程丨文章管理系统

我是创始人李岩:很抱歉!给自己产品做个广告,点击进来看看。  

【文章摘要】相信大家都在等待功能就是搜索功能,本节课程就来讲讲如何实现多条件搜索,也叫复合查询。这节将学习通过符号“ =”来拼接字符串,通过“ =”我们可以把SQL语句拆分成多个字符串之后进行拼接,把多个查询条件根据不同的情况拼接到SQL语句中来实现我们的需求。

给产品经理及UI的PHP教程丨文章管理系统-复合查询

系列推荐

给产品经理及UI的PHP教程(一)

给产品经理及UI的PHP教程丨文章管理系统【1】-创建栏目(1)

给产品经理及UI的PHP教程丨文章管理系统【1】-创建栏目(2)

给产品经理及UI的PHP教程丨文章管理系统【2】-后台界面框架设计

给产品经理及UI的PHP教程丨文章管理系统【3】-栏目列表

给产品经理及UI的PHP教程丨文章管理系统【4】-修改&删除栏目

给产品经理及UI的PHP教程丨文章管理系统【5】-创建文章(关联数据)

给产品经理及UI的PHP教程丨文章管理系统【6】-文章列表(二维数组)

给 产品经理 及UI的PHP教程丨文章管理系统【7】-修改文章(遍历数组)

给产品经理及UI的PHP教程丨文章管理系统【8】-简易分页

给产品经理及UI的PHP教程丨文章管理系统【9】-你的需求说清楚了吗?

给产品经理及UI的PHP教程丨文章管理系统【10】-回收站

相信大家都在等待功能就是搜索功能,本节课程就来讲讲如何实现多条件搜索,也叫复合查询。这节将学习通过符号“ =”来拼接字符串,通过“ =”我们可以把SQL语句拆分成多个字符串之后进行拼接,把多个查询条件根据不同的情况拼接到SQL语句中来实现我们的需求。

首先我们先普及一下什么是字符串的拼接。

查看如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

运行以上代码的结果是输出了文字ab,不难理解就是把符号“.=”后面的字符串拼接到了原变量值的后面。

之前我们已经学会了如何通过表单提交参数,以及如何在SQL语句里加入条件。复合查询的原理也是离不开这两个知识点。相信这时候大家已经想到了如何实现了。

就是先建立一个form表单,把我们需要查询的参数值传递上去,在通过“.=”符号来拼接多个条件到SQL语句,在把查询结果返回到我们的列表页。是的,就这么简单!

好了我们第一步就先创建一个form表单吧。

打开article_list.php页面,在hr和table中间加入如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

这样就把一个根据栏目查询文章的表单创建好了,之前因为已经把栏目数据保存成了二维数组,所以在这里也很方便的就可以调出来了。这次我采用了get方法,没有采用post方法,目的是为了后面方便结合到分页功能中去。当然POST方法也可以实现。

接下来我们打开article.php页面找到如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

这是我们文章列表的查询代码,我们把括号内的SQL语句部分单独保存到一个变量里,再拆成两部分通过“.=”拼接起来。代码改成如下:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

注意:ORDER BY前面要有个空格。

去运行一下我们的文章列表看看,依然是可以正常运行的!

接下来我们就把通过表单传递上去的参数,拼接到SQL语句的条件里去吧。

在$sql=和$sql.=之间增加如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

保存好之后去试试我们的查询功能吧!这下就可以根据栏目查询文章了。先不要管分页哈~~

这时候我们会碰到一个问题,如果查询了指定栏目之后我想再查询所有栏目怎么办?

OK,回到article_list.php页面在下拉选项SELECT的OPTION项前面增加一个自定义的OPTION项:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

这里的value值我用了0,这是因为我们的cat_id是个自增字段且从1开始的,所以永远不会出现0的情况。

再到article.php页面把代码改成如下:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

可以看出在条件语句中增加了 && $_GET[cat_id]!=0,也就是说要同时满足cat_id存在且不等于0的两种情况才会执行。

这样就算是把根据栏目查询文章的功能做好了,接下来我们再把文章标题的查询结合进去。

打开article_list.php页面,在form表单中增加如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

代码中placeholder是文本框的提示文字,不过不支持低版本的浏览器,要慎用!

再到article.php中增加如下代码:

给产品经理及UI的PHP教程丨文章管理系统-复合查询

通过SQL语句中的LIKE操作符可以查询包含指定关键词的数据,%是个通配符,%a%代表着关键词a的前后可以有任意字符,或者没有字符也可以。如果是%a就必须得是以a结束,a%就代表着必须以a开头。

这样就完成了一个基本的复合查询功能。无论有多少个查询条件都可以通过以上形式来完成!

留个作业:

1. FIX分页的BUG。

提示:拆分SELECT COUNT(id) FROM article部分的SQL语句,加入我们的查询条件,获得正确的数量。再到article_list.php的分页代码部分在a标签链接里增加$_GET[参数]。

2. 尝试完成根据发布时间查询文章的功能。

提示:表单中插入两个文本框,一个是开始时间,一个是结束时间。在SQL条件中发布时间要大于等于开始时间,要小于等于结束时间。

 

 

随意打赏

提交建议
微信扫一扫,分享给好友吧。