我的文章系统,想按照多个件条下
,看看有什么可能性可做到
4张表 基础简介
content 文章主表
id
lid = 相关的文集id ,保存格式 (1,2,3)
tags = 相关的TAG 的ID ,保存格式 (1,2,3)
typeid = 分类ID 只为1个数字
文集
lid
name
Tags
id
name
分类
typeid
name
typeid = 分类ID, 不别多说
tag = 标签这不用多说,
lid = 一个文集, 但一篇文章可以放到多个文集, 比如: PHP+MYSQL+AJAX无刷新评论
用户可能放到 PHP文集,MYSQL文章,AJAX文集
TAG 是全站共用,重复就不新增,只会选择
所以不能做成一个自己文章的分类列表,所以会出现了文集功能
因为文章某个部分已经会显示当前文集其他的文章
所以在关相文章的部分,文集中的文件不比TAG文章更应该排在前面
所以准备的关系排名是
1. TAG相关
2. 文集
3. 最新的当前分类文章
为什么要分3次???
因为我就是怕太TAG,同时又没有用到文集功能....
所以最后一步才是当前分类文章
当前文章的
TAG 是3,14
lid = 7,12
typeid = 2
SELECT * FROM `content` WHERE `tags` IN (3,14) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `lid` IN (7,12) ORDER BY `time` DESC LIMIT 10
SELECT * FROM `content` WHERE `typeid` = '2' ORDER BY `time` DESC LIMIT 10
前台显示十条相关文章
本来是准备,分3次,然后每次拿10条是最安全的
后来想想...这样还有合并数组什么的也麻烦,重点是取太多资料,但前台只需要10条
所以换成一句
SELECT * FROM `video_content` WHERE `tags` IN (3,14) or `lid` IN (3) or `typeid` = 2 LIMIT 10
但这样好像又能以TAG>文集>分类...去排名
请求一下有何方法?
要求好像蛮麻烦的呵呵,因为页面下半部有50%的部分是显示相关文章,所以在营运上很重要
回复讨论(解决方案)
暂时用了这一段代码,感觉有点蠢
有什么更好的方法建议呢?
//相关文章if (!empty($data["tags"]) || !empty($data["lid"])) { $tags = $data["tags"]; $lid = $data["lid"]; $tag_sql = "SELECT * FROM `content` WHERE `tags` IN ($tags) OR `lid` IN ($lid) ORDER BY `time` DESC LIMIT 8"; $stmt = $pdo->prepare($tag_sql); $stmt->execute(); $tags_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_v",$tags_v);}$tags_num = count($tags_v);if ($tags_num < 8 ) { $now_v = ""; foreach ($tags_v as $key => $value) { $now_v .= $value['vid'].","; } $now_v=substr("$now_v",0,-1); $need = 8-$tags_num; $typeid = $data["typeid"]; $typeid_sql = "SELECT * FROM `content` WHERE `typeid` = '$typeid' AND `vid` NOT IN ($now_v) ORDER BY `time` DESC LIMIT $need"; $stmt = $pdo->prepare($typeid_sql); $stmt->execute(); $typeid_v = $stmt->fetchAll(PDO::FETCH_ASSOC); $smarty -> assign("r_tv",$typeid_v);}
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
sql用or、not in本来就不好;
如果数据不需要太及时的话
把你3条sql语句组合好的数据缓存一段时间(半小时、一小时、甚至再长一点也可以)
因为你的数据都是死数据,没有浏览量,评论量等等
这个我也了解
但更想知道的是,如果按照更有关的排得更前
就是先排TAG 再排LID 最后再排同类其他文章
莫非只能用二楼的方法?
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
你的 意思是不是如果要10条tag,就先取10条tag,不够再取有lib,接着不够再取有type的?
如果是这样的话, 你的sql是不是会有问题!
是的
2楼暂时做了个简单的
暂时先不分tag和lid
不够再取type
以及2楼用8条做测试
是否有更好的做法?
用全文检索来做

2024CSRankings全美计算机科学专业排名,刚刚发布了!今年,全美全美CS最佳大学排名中,卡耐基梅隆大学(CMU)在全美和CS领域均名列前茅,而伊利诺伊大学香槟分校(UIUC)连续六年稳定地位于第二。佐治亚理工学院则排名第三。然后,斯坦福大学、圣迭戈加利福尼亚大学、密歇根大学、华盛顿大学并列世界第四。值得注意的是,MIT排名下跌,跌出前五。CSRankings是由麻省州立大学阿姆赫斯特分校计算机与信息科学学院教授EmeryBerger发起的全球院校计算机科学领域排名项目。该排名基于客观的

一、今日头条发布文章怎么才能有收益?今日头条发布文章获得更多收益方法!1.开通基础权益:原创文章选择投放广告可获得收益,视频必须要原创横屏才会有收益。2.开通百粉权益:粉丝量达到百粉以上,微头条、原创问答创作及问答均可获得收益。3.坚持原创作品:原创作品包含文章、微头条及问题等,要求300字以上。注意违规抄袭作品作为原创发布,会被扣信用分,即使有收益也会被扣除。4.垂直度:做专业领域一类的文章,不能随意跨领域写文章,会得不到合适的推荐,达不到作品的专和精,难以吸引粉丝读者。5.活跃度:活跃度高,

PHP表单处理:表单数据排序与排名在Web开发中,表单是一种常见的用户输入方式。当我们收集到来自用户的表单数据后,通常需要对这些数据进行处理和分析。本文将介绍如何使用PHP对表单数据进行排序与排名,以便更好地展示和分析用户提交的数据。一、表单数据排序当我们收集到用户提交的表单数据后,可能会发现这些数据的顺序不一定符合我们的要求。而对于需要按照特定规则展示或分

Java回调函数的基本写法和使用方法引言:在Java编程中,回调函数是一种常见的编程模式,通过回调函数,可以将某个方法作为参数传递给另一个方法,从而实现方法的间接调用。回调函数的使用,在事件驱动、异步编程和接口实现等场景中非常常见。本文将介绍Java回调函数的基本写法和使用方法,并提供具体的代码示例。一、回调函数的定义回调函数是一种特殊的函数,它可以作为参数

MyBatis中小于号的写法详解MyBatis是一个优秀的持久层框架,广泛应用于Java开发中。在使用MyBatis进行数据库操作的过程中,我们经常会用到小于号(

USDT(Tether)是一种锚定法币的加密货币,与美元的比例为1:1。作为最受欢迎的稳定币之一,USDT广泛应用于全球的加密货币交易。对于有意购买或交易USDT的用户来说,选择一个可靠且安全的交易平台至关重要。以下是十大USDT交易平台软件app排名,帮助您选择最适合自己的平台。1.币安(Binance)币安是全球最大的加密货币交易平台之一,拥有广泛的用户群体和多样化的交易品种。作为热门的USDT交易平台,币安提供了多种交易工具和功能,旨在确保用户的交易安全和便利。2.火币全球站(HuobiG

独家揭秘!骁龙处理器最新排名随着智能手机等移动设备的飞速发展,处理器作为移动设备的核心芯片,也在不断演进和升级。作为市场上最受欢迎的处理器之一,高通(Qualcomm)的骁龙处理器备受瞩目。骁龙处理器凭借其优秀的性能、功耗控制和高度集成等优点,一直占据着移动设备处理器市场的一席之地。那么,在众多骁龙处理器中,到底哪款才是最为出色的呢?本文将为您揭秘骁龙处理器

Vue统计图表的排名和比较功能实现在数据可视化领域中,统计图表是一种直观清晰地展示数据的方式。Vue作为一种流行的前端框架,提供了丰富的工具和组件来实现各种图表。本文将介绍如何使用Vue实现统计图表的排名和比较功能。在开始之前,我们需要先安装Vue和相关的图表库。我们将使用Chart.js作为图表库,该库提供了丰富的图表类型和交互功能。可以通过以下命令安装C


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Dreamweaver CS6
Visual web development tools

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

mPDF
mPDF is a PHP library that can generate PDF files from UTF-8 encoded HTML. The original author, Ian Back, wrote mPDF to output PDF files "on the fly" from his website and handle different languages. It is slower than original scripts like HTML2FPDF and produces larger files when using Unicode fonts, but supports CSS styles etc. and has a lot of enhancements. Supports almost all languages, including RTL (Arabic and Hebrew) and CJK (Chinese, Japanese and Korean). Supports nested block-level elements (such as P, DIV),

ZendStudio 13.5.1 Mac
Powerful PHP integrated development environment
