Tuesday, December 09, 2008

wordpress自定义页面模板显示某分类日志

wordpress自定义页面模板显示某分类日志

06月 11, 2008
刚接触wordpress的时候我就萌生一个想法,就是利用导航来显示各个分类的日志,为此我去论坛提问,结果很少有人问津,有位老大解释半天我也没搞明白,所以这个想法就一直未能实现。
随着了解的深入,我发觉这个想法和现在流行的CMS有点关系,虽然自己不懂代码程序,但想象力还是蛮丰富的。今天再去google这个问题,突然就发现了解决办法,尝试,成功!万分喜悦之下,我把实现这一想法的具体操作方法转过来,和朋友们分享。
其实很简单。自定义一个页面模板,把相关代码放进去,到后台调用就可以了!
新建一个文件,在头部写上
php query_posts('cat=8&showposts=5'); /* 设置调用分类ID为8,显示5篇日志*/

( 表示这个是自定义模板,模板名字是“aliboke”)
然后把主题里自带的index.php文件内容全部复制到上段代码下边。
php if (have_posts()) : ?>
上边加上一段代码

php query_posts('cat=8&showposts=5'); /* 设置调用分类ID为8,显示5篇日志*/

代码两边加/?>

cat值可以到后台查看,如果不想自定义显示篇数就把&showposts=5删掉,这样显示篇数就和主页一样了。
保存为PHP文件,编码采用UTF-8。上传到主题目录,后台新建页面选泽aliboke模板,看看吧,是不是想要的效果?

Monday, December 08, 2008

按某一字段分组取最大(小)值所在行的数据

--按某一字段分组取最大()值所在行的数据


/*

数据如下:

name val memo

a 2
a2(a
的第二个值)

a 1
a1--a
的第一个值

a 3
a3:a
的第三个值

b 1
b1--b
的第一个值

b 3
b3:b
的第三个值

b 2
b2b2b2b2

b 4
b4b4

b 5
b5b5b5b5b5

*/


--创建表并插入数据:

create table tb(name
varchar(10),val int,memo varchar(20))

insert into tb
values('a', 2, 'a2(a的第二个值)')

insert into tb
values('a', 1, 'a1--a的第一个值')

insert into tb
values('a', 3, 'a3:a的第三个值')

insert into tb
values('b', 1, 'b1--b的第一个值')

insert into tb
values('b', 3, 'b3:b的第三个值')

insert into tb
values('b', 2, 'b2b2b2b2')

insert into tb
values('b', 4, 'b4b4')

insert into tb
values('b', 5, 'b5b5b5b5b5')

go



--一、按name分组取val最大的值所在行的数据。

--
方法1

select a.* from tb
a
where val = (select max(val) from tb
where name = a.name)
order by a.name

--方法2

select a.* from tb
a
where not exists(select 1 from tb
where name = a.name
and val > a.val)

--方法3

select a.* from tb
a,(
select name,max(val) val from tb
group by name) b where a.name
= b.name and a.val = b.val
order by a.name

--方法4

select a.* from tb
a
inner join (select name , max(val)
val
from tb group by name) b on a.name
= b.name and a.val = b.val
order by a.name

--方法5

select a.* from tb
a
where 1 > (select count(*) from tb
where name = a.name
and val > a.val ) order by a.name

/*

name val
memo


---------- ----------- --------------------

a
3 a3:a
的第三个值

b
5 b5b5b5b5b5

*/




--二、按name分组取val最小的值所在行的数据。

--
方法1

select a.* from tb
a
where val = (select min(val) from tb
where name = a.name)
order by a.name

--方法2

select a.* from tb
a
where not exists(select 1 from tb
where name = a.name
and val < a.val)

--方法3

select a.* from tb
a,(
select name,min(val) val from tb
group by name) b where a.name
= b.name and a.val = b.val
order by a.name

--方法4

select a.* from tb
a
inner join (select name , min(val)
val
from tb group by name) b on a.name
= b.name and a.val = b.val
order by a.name

--方法5

select a.* from tb
a
where 1 > (select count(*) from tb
where name = a.name
and val < a.val) order by a.name

/*

name val
memo


---------- ----------- --------------------

a
1 a1--a
的第一个值

b
1 b1--b
的第一个值

*/




--三、按name分组取第一次出现的行所在的数据。

select a.* from tb a where val
= (select top 1 val
from tb where name = a.name) order by a.name

/*

name val
memo


---------- ----------- --------------------

a
2 a2(a
的第二个值)

b
1 b1--b
的第一个值

*/




--四、按name分组随机取一条数据。

select a.* from tb
a
where val = (select top 1 val from tb
where name = a.name
order by newid()) order by a.name

/*

name val
memo


---------- ----------- --------------------

a
1 a1--a
的第一个值

b
5 b5b5b5b5b5

*/




--五、按name分组取最小的两个(N)val

select a.* from tb
a
where 2 > (select count(*) from tb
where name = a.name
and val < a.val ) order by a.name,a.val

select a.* from tb
a
where val in (select top 2 val from tb
where name=a.name order by val) order by a.name,a.val

select a.* from tb
a
where exists (select count(*) from tb
where name = a.name
and val < a.val having Count(*) < 2) order by a.name

/*

name val
memo


---------- ----------- --------------------

a 1
a1--a
的第一个值

a
2 a2(a
的第二个值)

b
1 b1--b
的第一个值

b
2 b2b2b2b2

*/




--六、按name分组取最大的两个(N)val

select a.* from tb
a
where 2 > (select count(*) from tb
where name = a.name
and val > a.val ) order by a.name,a.val

select a.* from tb
a
where val in (select top 2 val from tb
where name=a.name order by val desc) order by a.name,a.val

select a.* from tb
a
where exists (select count(*) from tb
where name = a.name
and val > a.val having Count(*) < 2) order by a.name

/*

name val
memo


---------- ----------- --------------------

a
2 a2(a
的第二个值)

a
3 a3:a
的第三个值

b
4 b4b4

b
5 b5b5b5b5b5

Friday, December 05, 2008

AUTOCHK.EXE的奇怪故障

AUTOCHK.EXE的奇怪故障
用正常模式启动Windows,在WindowsXPLogo之后,出现了一行提示,大意是“AUTOCHK.EXE NOT FOUND”,紧接着蓝屏了。哈哈,这次被我找到故障所在了。autochk.exe是Windows在非法关机后,进行硬盘分区检测的程序,属于关键性系统文件,没有了它自然就要蓝屏了。 接下来,使用手头上那张盗版的WinXP专业版系统光盘启动计算机,进入安装模式,在出现第一屏菜单时,选择“修复”,就会进入“故障恢复台”。因为是在检测硬盘时出现了错误,那么只要在“故障恢复台”里,将C盘的磁盘错误排除就可以了,于是执行命令chkdsk c: /r,这样就可以自动检测并修复c盘的错误了,此时系统提示在启动目录找不到autochk.exe文件,需要手工指定。根据经验判断,一般系统功能文件都放在c:\windows\system32文件夹下,所以从光盘的i386目录复制autochk.exe到c:\windows\system32,然后再次运行chkdsk,可仍然提示无法找到,难道是目录判断错误了?干脆就把这个文件又复制到c盘根目录以及c:\windows目录下,这下总该找到了吧,可结果大失所望。 不管三七二十一,先把c盘的错误排出了再说吧,于是手工指定了autochk.exe的位置,对c盘进行了检测修复,重新以正常模式启动Windows,虽然还是提示找不到autochk.exe,但终于进入到了熟悉的Windows界面。 剩下的工作,就是要解决系统找不到autochk.exe的问题了,一般来说,这种状况多半是由于注册表键值丢失引起的。于是在msdn查阅了相关的资料,按照如下步骤*作,在开始 - 运行键入regedit打开注册表编辑器,找到 HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager, 看看右窗口有没有BootExecute这一项,如果没有就新建此项。 在右窗口中点右键选择“新建 - 字串值”,数值名称为BootExecute,然后在该项上点右键,选择“修改”,在数值数据中填入“autocheck autochk *”*作完成后,右窗口中应该是这样的: BootExecute : REG_SZ : autocheck autochk * 然后关掉注册表编辑器,关机,重起,问题就解决了。 呵呵,今天的这个故障是第一次遇到,很是棘手,不过通过仔细的分析,还是给解决了~