Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[已答复] 用SQL语句实现SS只调用论坛主题一张图片

[复制链接]
独孤求婚 发表于 2008-5-20 13:34:07 | 显示全部楼层 |阅读模式
本帖最后由 独孤求婚 于 2008-12-20 01:22 编辑

偶只懂一点点基本的SQL语句,对于其它语言只能看不会写,相信很多人都实现了这个效果没有拿出来分享,鄙视一下。

SELECT t.*,a.* FROM discuz1.cdb_threads t INNER JOIN discuz1.cdb_attachments a ON t.tid=a.tid WHERE  a.isimage=1 and t.attachment=1 group by t.tid ORDER BY t.views DESC

就是上面的语句,
discuz1.cdb_threadsdiscuz1.cdb_attachments 这两个为主题表和附件表,discuz1为我的论坛数据库,cdb为数据表前缀,threads和attachments就不用我说了。
t.tid代表thread表里面的tid,同理为a.tid;a.isimage表示attachment表里面的isimage字段,用于判断附件是否为图像,1为true,0为false(这个很必要,不然有些附件不是图片调用出来会显示红X);t.attachment,估计是用于判断是否有附件的,和a.isimage一个理。
ORDER BY t.views DESC:按查看数递减排列,

以上我是对着数据库来写的,我自己都没想过会成功的,下面给出模块代码,按查看数排列图片主题附件
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
<!--{block name="bbsthread" parameter="sql/SELECT%20t.%2A%2Ca.%2A%20FROM%20discuz1.cdb_threads%20t%20INNER%20JOIN%20discuz1.cdb_attachments%20a%20ON%20t.tid%3Da.tid%20WHERE%20%20a.isimage%3D1%20and%20t.attachment%3D1%20group%20by%20t.tid%20ORDER%20BY%20t.views%20DESC/limit/0,5/cachetime/7200/subjectlen/30/bbsurltype/bbs/cachename/images/tpl/data"}--><!--热门主题(带图)-->
<!--{loop $_SBLOCK['images'] $value}-->
       <div class="con1_center_area">
                     
         <a href="$value[url]"><img src="/bbs/attachments/{$value[attachment]}"  width="94"
height="66" /></a>
    <h4><a href="$value[url]">$value[subject]</a></h4>
    <p><a>发布时间:#date("y年m月d日", $value["dateline"])# 共有$value[views]位坛友关注
最后回复value[lastposter]</a> [<a href="$value[url]">查看全文</a>]</p></div>
       <!--{/loop}-->
                     </div>
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
实现效果如附件,当然可能你放到网页时可能会变形,主要是因为里面的<div>问题,不是代码有问题,另外在SS后台创建模块的时候我选择的是“论坛主题”不是“论坛附件”,

希望大家都能做出漂亮的网页

补充重要一点:上面给出的<img src="/bbs/attachments/{$value[attachment]}"里面的图片路径要改为你论坛根目录下面的attachment,记住是论坛根目录,不是服务器根目录。不然图片路径不对还是显示XX。


有人说我上面的代码是乱码,靠我无语。直接给出SQL语句大家在SS后台创建模块时候选“高级模式”填入SQL语句出来的代码自己对比一下就知道是不是乱码了。

SQL语句:SELECT t.*,a.* FROM discuz1.cdb_threads t INNER JOIN discuz1.cdb_attachments a ON t.tid=a.tid WHERE  a.isimage=1 and t.attachment=1 group by t.tid ORDER BY t.views DESC

记得改“数据库名和前缀”不要到时又说我的SQL语句有错。

[ 本帖最后由 独孤求婚 于 2008-8-1 23:16 编辑 ]

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x

评分

1

查看全部评分

ted1006 发表于 2008-5-20 14:18:35 | 显示全部楼层
:)
回复

使用道具 举报

jikin 发表于 2008-5-21 19:25:26 | 显示全部楼层
楼主,你的代码有问题啊,能详细标明一下设置吗?
回复

使用道具 举报

jikin 发表于 2008-5-22 16:48:24 | 显示全部楼层
事实上是错了啊,你看你发的代码都变了
<!--{block name="bbsthread" parameter="sql/SELECT%20t.%2A%2Ca.%2A%20FROM%20discuz1.cdb_threads%20t%20INNER%20JOIN%20discuz1.cdb_attachments%20a%20ON%20t.tid%3Da.tid%20WHERE%20%20a.isimage%3D1%20and%20t.attachment%3D1%20group%20by%20t.tid%20ORDER%20BY%20t.views%20DESC/limit/0,5/cachetime/7200/subjectlen/30/bbsurltype/bbs/cachename/images/tpl/data"}--><!--热门主题(带图)-->
<!--{loop $_SBLOCK['images'] $value}-->
回复

使用道具 举报

kk99cn 发表于 2008-5-24 14:46:16 | 显示全部楼层
你真是一天才
回复

使用道具 举报

 楼主| 独孤求婚 发表于 2008-5-26 14:05:10 | 显示全部楼层
4楼的真的只能用白痴来形容了,我说过没有乱码就是没有 乱码,真他妈不知道脑袋长来干什么的。
如果你觉得乱码就把"%20”这些代码去掉吧,如果可以正常我只能说我的是乱码了。

[ 本帖最后由 独孤求婚 于 2008-5-26 14:09 编辑 ]
回复

使用道具 举报

闲散山人 发表于 2008-6-5 12:24:24 | 显示全部楼层
做个记号,有空也来研究一下,呵呵.
回复

使用道具 举报

1688999 发表于 2008-6-5 13:03:56 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

 楼主| 独孤求婚 发表于 2008-6-19 12:03:43 | 显示全部楼层
回复楼上的,这个只要加多个条件:t.tid=主题ID,这个是调用特定主题的;t.fid=版块ID,这个是指定版块。排序的时候按dateline排就可以调用最新的了。具体可以参考phpmyadmin里面的数据库字段写SQL语句。
回复

使用道具 举报

海瞳 发表于 2008-7-11 21:49:06 | 显示全部楼层
楼主解决我一年来存在的疑惑,好人啊!,顺便问一句怎么限制调用附件的数量。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-18 11:46 , Processed in 0.062228 second(s), 7 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表