恢复win7开始菜单旁的“显示桌面”图标

2013年3月27日 5,356 浏览数 1 条评论

  虽说win7任务栏右侧有“显示桌面”按钮,但违反了我的使用习惯,使用起来总感觉很别扭,所以动手恢复类似winxp中的“显示桌面”图标。

  步骤如下:

  1、右击任务栏,工具栏→新建工具栏。
  2、选中%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下的Quick Launch文件夹,单击“选择文件夹”。
  3、右击任务栏,将“锁定任务栏”的勾去除,再把Quick Launch工具栏拖到最左边。
  4、右击Quick Launch工具栏,将“显示文本”、“显示标题”两项前的勾去除。
  5、在%userprofile%\AppData\Roaming\Microsoft\Internet Explorer目录下新建文本文件,内容如下:

[Shell]
Command=2
IconFile=%SystemRoot%\system32\SHELL32.dll,34
[Taskbar]
Command=ToggleDesktop

  文件名称改为:显示桌面.scf

  6、此时任务栏上已经出现“显示桌面”图标了,接着锁定任务栏。

  “好记忆不如烂笔头”,以备后用!

分类: 经验技巧 标签: ,

妙用mysql中的instr函数

2013年3月18日 3,099 浏览数 没有评论

  记录中有一个字段名是:cfield,内容如这样:2,4,7,17 现在要通过一次SQL查询取出所有该字段中包含7的记录。这时候使用mysql自带的instr函数将非常方便。测试代码如下:

1
2
3
4
5
6
$aid=7;
$sql="SELECT * FROM news WHERE instr(','+cfield+',',','+$aid+',')>0";
$result = mysql_query($sql) or die(mysql_error());
while($row = mysql_fetch_array($result)){
	echo $row['title'].'<br>';
}

  需要注意的是:要在字段cfield和变量aid前后加逗号,这样可以解决7与17混淆的问题。

  (2016-2-3)注:上述语句中+号的用法会使MYSQL尝试将两端字符进行相加运算,出现了异想不到的结果。比较稳妥的是用CONCAT函数相接:

1
$sql="SELECT * FROM news WHERE instr(concat(',',cfield,','),',$aid,')>0";

  或

1
$sql="SELECT * FROM news WHERE concat(',',cfield,',') LIKE '%,$aid,%'";
分类: 伪编程 标签:

firefox中的document.all问题

2013年3月17日 4,423 浏览数 没有评论

最近做了个表单提交的页面,表单中有一组checkbox,提交后要获取已勾选的内容。该页面在IE和chrome(版本 25.0.1364.172 m)中运行正常,但在firefox中失败。

  相关代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function GetCheckBoxList(objName) {
    var result = "";
    var coll = document.all.item(objName)
    if (!coll) return result;
    if (coll.length) {
        for (var i = 0; i < coll.length; i++) {
            if (coll.item(i).checked) {
                result += (result == "") ? coll.item(i).value : ("," + coll.item(i).value);
            }
        }
    } else {
        if (document.all.item(objName).checked) {
            result = document.all.item(objName).value;
        }
    }
    return result;
}

  查资料得知firefox不支持document.all这种方法,看来也是个老问题了,网上的资料有很多,但大多都没有给出源码参考,仍然让新手摸不清头脑。我在这个问题上也浪费了一些时间。下面将重写上述代码,有此问题的朋友,可仔细比较一下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
function GetCheckBoxList(objName) {
    var result = "";
    var coll = document.getElementsByName(objName);
    if (!coll) return result;
    if (coll.length) {
        for (var i = 0; i < coll.length; i++) {
            if (coll[i].checked) {
                result += (result == "") ? coll[i].value : ("," + coll[i].value);
            }
        }
    } else {
        if (document.getElementsByName(objName).checked) {
            result = document.getElementsByName(objName).value;
        }
    }
   return result;
}

  在firefox中,获取表单元素属性要使用getElemntById或getElementsByName方法,前者是通过id号获取,后者是通过name名称获取。

  注:新版的firefox已经开始接受document.all方法了,经测试属实!测试的代码如下。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<html> 
<body> 
<input type="checkbox" id="txt" value="a" checked />
<input type="checkbox" id="txt" value="b" checked /> 
<input type="checkbox" id="txt" value="c" /> 
<input type="checkbox" id="txt" value="d" checked />  
<SCRIPT LANGUAGE="JavaScript"> 
var result="";
var coll = document.all.txt; 
for (var i = 0; i < coll.length; i++) {
            if (coll[i].checked) {
                result += (result == "") ? coll[i].value : ("," + coll[i].value);
            }
        }
alert(result); 
</SCRIPT> 
</body> 
</html>
分类: 伪编程 标签: ,

PHP中的“Rs.MoveNext”

2013年3月11日 4,543 浏览数 没有评论

  ASP中一次查询循环体使用“Rs.MoveNext”可以移动指针,获取两条或更多的记录。PHP中是否有这种功能?答案是肯定的!

  首先我们先看一下,PHP查询是如何工作的?常用的办法是通过mysql_fetch_array()函数,获取一条记录并把它赋值给$row数组变量,然后在循环体中就可以打印出记录内容了。如代码:

1
2
3
4
5
  $sql="SELECT * FROM `news` WHERE `class`='$id'";
  $result = mysql_query($sql) or die(mysql_error());
  while($row = mysql_fetch_array($result)){
	echo $row['title'].'<br>';
  }

  我们可以看到,下一次循环的时候是再一次通过mysql_fetch_array()获取新记录赋值给$row数组,所以我们可以尝试在循环体中使用它。如代码:

1
2
3
4
5
6
7
  $sql="SELECT * FROM `news` WHERE `class`='$id'";
  $result = mysql_query($sql) or die(mysql_error());
  while($row = mysql_fetch_array($result)){
	echo $row['title'].'<br>';
    $row = mysql_fetch_array($result); //获取下一条记录
	echo $row['title'].'<br>';
  }

  运行一下看看,达到和ASP中的“Rs.MoveNext”一样的效果了!

分类: 伪编程 标签: , ,

替代ISAPI_Rewrite的IIRF

2013年2月25日 2,971 浏览数 没有评论

  公司网站上使用的是ISAPI_Rewrite,不知是由于访问量太大或是别的什么原因,经常停止工作,需要重启IIS才能恢复。为解决这一问题,Google一番找到了IIRF(Ionic’s Isapi Rewrite Filter)这款软件,它开源、小巧、功能强大,完全可以替代ISAPI_Rewrite,我们可以通过它的官方网站http://iirf.codeplex.com/下载到它。

  以下是我折腾好几个小时的安装使用过程:

  服务器环境:win2003+IIS6

  首先下载“2.1 latest stable”这个版本,无论是zip包还是msi安装文件,都会导致网站无法打开,经查资料说2.1版本有BUG,会影响网站运行,故下载“2.0.1.15”版本。

  解开“2.0.1.15”压缩包,取出bin文件夹中的”IIRF.dll”,上传服务器c:\IIRF文件夹下 (IIRF为新建的文件夹,当然放在其它文件夹下也成)

  对IIRF文件夹添加“IIS_WPG”(读取/运行,读取,写)权限,官网上说还要添加“NETWORK SERVICE”的相关权限,我测试没加,依然工作正常。

  在IIS6中无论是全局还是在单个网站中,右键->属性->“ISAPI筛选器”中加载”IIRF.dll”,都可正常工作。具体加载方法和ISAPI_Rewrite一样,完后重启IIS,再点开看看,显示绿箭头即可。

  在网站根目录下创建”IIRF.ini”文件,并对该文件添加“IIS_WPG”(读取/运行,读取)权限(否则不能工作,切记!)。具体该文件中的规则如果改写,原压缩包中给出非常详细的例子,参照一下。值得称赞的事,每次修改该ini文件都无需重启IIS。

  此时不出意外,IIRF已经可以工作了。全局配置文件“IirfGlobal.ini”需和“IIRF.dll”放在一起,该文件中有三项设置,保证RewriteEngine为ON即可,其它无需更改。注:即使IirfGlobal.ini不存在,IIRF依然正常工作。

  官方教程非常详细,源码中的实例也很多,而我这只是简单记录一下折腾过程,没有太多的价值。

  欢迎交流!
 

分类: 网站相关 标签: ,