找回密码
 点一下
查看: 1217|回复: 5

偷偷投影仪

[复制链接]
发表于 2010-5-6 16:48:20 | 显示全部楼层 |阅读模式
此次phpwin内核改写所以更新麻烦了些,不过总的来说,比原来要简洁一点~~

还是更新(只是因为原来的代码太长,查询次数太多-.-||)



[codes=php]
                        $query = $db->query("SELECT * FROM pw_threads WHERE $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));
            while ($thread = $db->fetch_array($query)) {
                $tpcdb[] = $thread;
                $lastdate[]=$thread['lastpost'];
            }
            $db->free_result($query);
            $isdeled=$db->query("select tid from pw_recycle");
            while($thread=$db->fetch_array($isdeled)){
                $del[]=$thread['tid'];
            }
            $db->free_result($isdeled);
            if(count($del)>=1){
                $dellist="and tid NOT IN (".implode(',',$del).")";
            }
            if(isset($tpcdb[$limit2-1])){
                if($offset>0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadowsql="SELECT * FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd $dellist and lastpost>".$tpcdb[$limit2-1]['lastpost']." and lastpost<".$tpcdb[0]['lastpost']." ORDER BY $topadd $orderway $asc";
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadowsql="SELECT * FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd $dellist and lastpost>".$tpcdb[$limit2-1]['lastpost']." ORDER BY $topadd $orderway $asc";
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadowsql="SELECT * FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd $dellist ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2-count($tpcdb));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = $db->query($shadowsql);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while ($thread = $db->fetch_array($query)) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$tpcdb[] = $thread;
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$lastdate[]=$thread['lastpost'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$db->free_result($query);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array_multisort($lastdate,SORT_DESC,$tpcdb);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$R && $tpcdb = array_reverse($tpcdb);
[/codes]


原始代码是
22.jpg


替换就是了


另外更新
①现在投影后的帖子不会一堆出现在精华贴分类里面了,除非它本来就是精华
②分类贴按照分类ID出现在对应的分类栏里,这个应该影响不大,建议将某些共用分类设置同ID(如:求助,演示等)


恩,我原来的那个号登陆不了了,所以就拿这号发了~~


[codes=php]
&#160;&#160;&#160;&#160;&#160;&#160;$dellist='(';
&#160;&#160;&#160;&#160;&#160;&#160;$isdeled=$db->query("select tid from pw_recycle");
&#160;&#160;&#160;&#160;&#160;&#160;while($rt = $db->fetch_array($isdeled)){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($dellist=="("){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$dellist.=$rt['tid'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$dellist.=",".$rt['tid'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;$dellist.=')';
&#160;&#160;&#160;&#160;&#160;&#160;$db->free_result($isdeled);
&#160;&#160;&#160;&#160;&#160;&#160;if($offset>0){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = $db->get_one("SELECT * FROM pw_threads WHERE $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,1));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$stdt=$query['lastpost'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$db->free_result($query);
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;$query = $db->get_one("SELECT * FROM pw_threads WHERE $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset+$limit2,1));
&#160;&#160;&#160;&#160;&#160;&#160;$ltdt=$query['lastpost'];
&#160;&#160;&#160;&#160;&#160;&#160;$db->free_result($query);
&#160;&#160;&#160;&#160;&#160;&#160;if($stdt && $ltdt){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($dellist=="()"){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd and lastpost>=".min($stdt,$ltdt)." and lastpost<=".max($stdt,$ltdt));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd and tid NOT IN $dellist and lastpost>=".min($stdt,$ltdt)." and lastpost<=".max($stdt,$ltdt));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;}elseif($ltdt){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($dellist=="()"){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd and lastpost>$ltdt");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd and tid NOT IN $dellist and lastpost>$ltdt");
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($dellist=="()"){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$shadow=$db->query("SELECT tid,shadow FROM pw_threads WHERE shadow LIKE '%~".$fid."~%' $searchadd and tid NOT IN $dellist ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;$listofshadow='(';
&#160;&#160;&#160;&#160;&#160;&#160;while($rt = $db->fetch_array($shadow)){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if($listofshadow=="("){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$listofshadow.=$rt['tid'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$listofshadow.=",".$rt['tid'];
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$limit2=$limit2+1;
&#160;&#160;&#160;&#160;&#160;&#160;}
&#160;&#160;&#160;&#160;&#160;&#160;$listofshadow.=')';
&#160;&#160;&#160;&#160;&#160;&#160;$db->free_result($shadow);
&#160;&#160;&#160;&#160;&#160;&#160;if($listofshadow=="()"){
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = $db->query("SELECT * FROM pw_threads WHERE $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));
&#160;&#160;&#160;&#160;&#160;&#160;}else{
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$query = $db->query("SELECT * FROM pw_threads WHERE tid in ".$listofshadow." or $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));
&#160;&#160;&#160;&#160;&#160;&#160;}

[/codes]


以上代码取代&#160;


[codes=php]
$query = $db->query("SELECT * FROM pw_threads WHERE $sql $searchadd ORDER BY $topadd $orderway $asc ".pwLimit($offset,$limit2));

[/codes]


然后数据库里做相关配置就可以了~~

评分

参与人数 1威望 +3 收起 理由
Renee + 3 有功~~

查看全部评分

发表于 2010-5-6 17:14:32 | 显示全部楼层
偷走~
回复

使用道具 举报

发表于 2010-5-6 23:17:33 | 显示全部楼层
thanks~
回复

使用道具 举报

发表于 2010-5-6 23:33:20 | 显示全部楼层
告诉你们个秘密,东西不是LZ写的
回复

使用道具 举报

 楼主| 发表于 2010-8-5 16:51:15 | 显示全部楼层
[s:186]

更新
回复

使用道具 举报

发表于 2010-8-5 23:52:43 | 显示全部楼层
哈~好久没看见了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 点一下

本版积分规则

Archiver|移动端|小黑屋|地精研究院

GMT+8, 2024-12-28 21:59 , Processed in 0.080037 second(s), 25 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

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