Discuz教程网

【discuz 1.5】插件制作相关知识

[复制链接]
authicon dly 发表于 2011-3-12 09:45:13 | 显示全部楼层 |阅读模式
【1】怎么调出论坛的所有板块名称和FIDl
  1. loadcache('forums')
复制代码
loadcache后请到
$_G['cache']['forums']里取货

【2】关于嵌入点(_output)后不能使用showmessage;
【3】删除一个目录(包括下面的所以文件)
  1. function deltree($dirName){
  2.         /*本文字内容,不影响代码正常运行:星网科技[url]HTTP://5UU8.COM/blog/[/url]版权所有,本站首发,转载请注明*/
  3.     $result = false;
  4.     if(! is_dir($dirName))
  5.     {
  6.         trigger_error("目录名称错误", E_USER_ERROR);
  7.     }
  8.     $handle = opendir($dirName);
  9.     while(($file = readdir($handle)) !== false)
  10.     {
  11.         if($file != '.' && $file != '..')
  12.         {
  13.            $dir = $dirName . DIRECTORY_SEPARATOR . $file;
  14.            is_dir($dir) ? deltree($dir) : unlink($dir);
  15.        }
  16.    }
  17.    closedir($handle);
  18.     $result = rmdir($dirName) ? true : false;
  19.     return $result;
  20. }
复制代码

rowtypedata = [
[ [1, ''], [1, 'xxx', 'td25']........
]
---------------------------
[colspan, html, class]
一个[colspan, html, class]就是一列
[ [colspan(列跨度), html, class], [colspan, html, class] ... ]
多个组成,就是一行

[ [colspan, html, class], [colspan, html, class] ... ],  第一组
[ [colspan, html, class], [colspan, html, class] ... ],  第二组
-----------------------------
然后
onclick="addrow(this.0)"
就没事了

0代表第一组

1代表第二组






上一篇:【discuz all】ucenter忘记创始人密码简单解决
下一篇:【discuz 1.5】header.htm分析
authicon  楼主| dly 发表于 2011-3-12 09:45:25 | 显示全部楼层

【1】Dx中GPC的数据是经过addslashes的,如要直接显示需要对其stripslashes

【2】Dx中数据用于JS时也应该addslashes

【3】对于提取字符串中某一位置字符时,提倡使用$s{2}或者substr($s, 2, 1),而不是$s[2]。

【4】规范数据库语句的写法:

1.关键词大写;

2.入库变量一定要:单引号包围、addslashes处理(GPC数据除外),必要的时候还可以对其进行dhtmlspecialchars、serialize(serialize前无需addslashes,serialize后需要);

3.即算是从数据库中取出的数据,入库前也应该addslashes处理,因为从数据库中出来的数据是没有addslashes的;

4.整数必须intval处理;

5.所有字串类型,如果你不希望他们显示html,入库前一定要htmlspecialchars,或者strip_tags下后再入库;

【5】推荐单引号测试法和<hr>测试法对插件进行测试;

【6】数据库中推荐写法:update table1 set d=d+'-1',而不是update table1 set d=d-1。

authicon  楼主| dly 发表于 2011-3-12 09:48:16 | 显示全部楼层
/**
* 通知
* @param Integer $touid: 通知给谁
* @param String $type: 通知类型
* @param String $note: 语言key
* @param Array $notevars: 语言变量对应的值
* @param Integer $system: 是否为系统通知 0:非系统通知; 1:系统通知
*/
function notification_add($touid, $type, $note, $notevars = array(), $system = 0)


获取当前用户的积分值
  1. getuserprofile('extcredits'.$extcreditid);
复制代码
authicon  楼主| dly 发表于 2011-3-12 09:48:51 | 显示全部楼层
获取指定(访客)IP的所有信息,地址、邮政编码、国家、经纬度等的API
调用方法非常简单。以后人人都能山寨58了。哈哈。。这个也需要数据库来支持。数据库中中文和拼音共存才可以。
废话不多说,看代码:
  1.    1. <?php
  2.    2. function getIpInfo($ip,$timeout=15) {
  3.    3.     if(!function_exists('curl_init') or !function_exists('simplexml_load_string')) return false;
  4.    4.  
  5.    5.     $ch = curl_init("http://ipinfodb.com/ip_query2.php?ip={$ip}&timezone=true");
  6.    6.     $options = array(
  7.    7.             CURLOPT_RETURNTRANSFER => true,
  8.    8.         );
  9.    9.     curl_setopt_array($ch,$options);
  10.   10.     $res = curl_exec($ch);
  11.   11.     curl_close($ch);
  12.   12.  
  13.   13.     if($xml = simplexml_load_string($res)) {
  14.   14.         $return = array();
  15.   15.         foreach ($xml->Location->children() as $key=>$item)  {
  16.   16.             $return[$key] = strtolower($item);
  17.   17.         }
  18.   18.         return $return;
  19.   19.     } else {
  20.   20.         return false;
  21.   21.     }
  22.   22. }
  23.   23. $current_Ip_Info = getIpInfo('119.7.8.255');
  24.   24. var_dump($current_Ip_Info);
复制代码
本文地址:http://www.c1991.com/article/302.html
                您可以任意转载, 转载时请务必以超链接形式标明文章原始出处及此声明

authicon  楼主| dly 发表于 2011-3-12 09:49:06 | 显示全部楼层
当fun不支持插件语言时,可以:
  1. lang('plugin/pluginid','abc',array('abc'=>$abc));
复制代码
authicon  楼主| dly 发表于 2011-3-12 09:49:28 | 显示全部楼层
JavaScript就这么回事1:基础知识   
1 创建脚本块   
1: <script language=”JavaScript”>   
2: JavaScript code goes here   
3: </script>   
2 隐藏脚本代码   
1: <script language=”JavaScript”>   
2: <!--   
3: document.write(“Hello”);   
4: // -->   
5: </script>   
在不支持JavaScript的浏览器中将不执行相关代码   
3 浏览器不支持的时候显示   
1: <noscript>   
2: Hello to the non-JavaScript browser.   
3: </noscript>   
4 链接外部脚本文件   
1: <script language=”JavaScript” src="/”filename.js"”></script>   
5 注释脚本   
1: // This is a comment   
2: document.write(“Hello”); // This is a comment   
3: /*   
4: All of this   
5: is a comment   
6: */   
6 输出到浏览器   
1: document.write(“<strong>Hello</strong>”);   
7 定义变量   
1: var myVariable = “some value”;   
8 字符串相加   
1: var myString = “String1” + “String2”;   
9 字符串搜索   
1: <script language=”JavaScript”>   
2: <!--   
3: var myVariable = “Hello there”;   
4: var therePlace = myVariable.search(“there”);   
5: document.write(therePlace);   
6: // -->   
7: </script>   
10 字符串替换   
1: thisVar.replace(“Monday”,”Friday”);   
11 格式化字串   
1: <script language=”JavaScript”>   
2: <!--   
3: var myVariable = “Hello there”;   
4: document.write(myVariable.big() + “<br>”);   
5: document.write(myVariable.blink() + “<br>”);   
6: document.write(myVariable.bold() + “<br>”);   
7: document.write(myVariable.fixed() + “<br>”);   
8: document.write(myVariable.fontcolor(“red”) + “<br>”);   
9: document.write(myVariable.fontsize(“18pt”) + “<br>”);   
10: document.write(myVariable.italics() + “<br>”);   
11: document.write(myVariable.small() + “<br>”);   
12: document.write(myVariable.strike() + “<br>”);   
13: document.write(myVariable.sub() + “<br>”);   
14: document.write(myVariable.sup() + “<br>”);   
15: document.write(myVariable.toLowerCase() + “<br>”);   
16: document.write(myVariable.toUpperCase() + “<br>”);   
17:   
18: var firstString = “My String”;   
19: var finalString = firstString.bold().toLowerCase().fontcolor(“red”);   
20: // -->   
21: </script>   
12 创建数组   
1: <script language=”JavaScript”>   
2: <!--   
3: var myArray = new Array(5);   
4: myArray[0] = “First Entry”;   
5: myArray[1] = “Second Entry”;   
6: myArray[2] = “Third Entry”;   
7: myArray[3] = “Fourth Entry”;   
8: myArray[4] = “Fifth Entry”;   
9: var anotherArray = new Array(“First Entry”,”Second Entry”,”Third Entry”,”Fourth Entry”,”Fifth Entry”);   
10: // -->   
11: </script>   
13 数组排序   
1: <script language=”JavaScript”>   
2: <!--   
3: var myArray = new Array(5);   
4: myArray[0] = “z”;   
5: myArray[1] = “c”;   
6: myArray[2] = “d”;   
7: myArray[3] = “a”;   
8: myArray[4] = “q”;   
9: document.write(myArray.sort());   
10: // -->   
11: </script>   
14 分割字符串   
1: <script language=”JavaScript”>   
2: <!--   
3: var myVariable = “a,b,c,d”;   
4: var stringArray = myVariable.split(“,”);   
5: document.write(stringArray[0]);   
6: document.write(stringArray[1]);   
7: document.write(stringArray[2]);   
8: document.write(stringArray[3]);   
9: // -->   
10: </script>   
15 弹出警告信息   
1: <script language=”JavaScript”>   
2: <!--   
3: window.alert(“Hello”);   
4: // -->   
5: </script>   
16 弹出确认框   
1: <script language=”JavaScript”>   
2: <!--   
3: var result = window.confirm(“Click OK to continue”);   
4: // -->   
5: </script>   
17 定义函数   
1: <script language=”JavaScript”>   
2: <!--   
3: function multiple(number1,number2) {   
4: var result = number1 * number2;   
5: return result;   
6: }   
7: // -->   
8: </script>   
18 调用JS函数   
1: <a href=”#” onClick=”functionName()”>Link text</a>   
2: <a href="/”javascript:functionName"()”>Link text</a>   
19 在页面加载完成后执行函数   
1: <body onLoad=”functionName();”>   
2: Body of the page   
3: </body>   
20 条件判断   
1: <script>   
2: <!--   
3: var userChoice = window.confirm(“Choose OK or Cancel”);   
4: var result = (userChoice == true) ? “OK” : “Cancel”;   
5: document.write(result);   
6: // -->   
7: </script>   
21 指定次数循环   
1: <script>   
2: <!--   
3: var myArray = new Array(3);   
4: myArray[0] = “Item 0”;   
5: myArray[1] = “Item 1”;   
6: myArray[2] = “Item 2”;   
7: for (i = 0; i < myArray.length; i++) {   
8: document.write(myArray + “<br>”);   
9: }   
10: // -->   
11: </script>   
22 设定将来执行   
1: <script>   
2: <!--   
3: function hello() {   
4: window.alert(“Hello”);   
5: }   
6: window.setTimeout(“hello()”,5000);   
7: // -->   
8: </script>   
23 定时执行函数   
1: <script>   
2: <!--   
3: function hello() {   
4: window.alert(“Hello”);   
5: window.setTimeout(“hello()”,5000);   
6: }   
7: window.setTimeout(“hello()”,5000);   
8: // -->   
9: </script>   
24 取消定时执行   
1: <script>   
2: <!--   
3: function hello() {   
4: window.alert(“Hello”);   
5: }   
6: var myTimeout = window.setTimeout(“hello()”,5000);   
7: window.clearTimeout(myTimeout);   
8: // -->   
9: </script>   
25 在页面卸载时候执行函数   
1: <body onUnload=”functionName();”>   
2: Body of the page   
3: </body>   
JavaScript就这么回事2:浏览器输出   
26 访问document对象   
1: <script language=”JavaScript”>   
2: var myURL = document.URL;   
3: window.alert(myURL);   
4: </script>   
27 动态输出HTML   
1: <script language=”JavaScript”>   
2: document.write(“<p>Here's some information about this document:</p>”);   
3: document.write(“<ul>”);   
4: document.write(“<li>Referring Document: “ + document.referrer + “</li>”);   
5: document.write(“<li>Domain: “ + document.domain + “</li>”);   
6: document.write(“<li>URL: “ + document.URL + “</li>”);   
7: document.write(“</ul>”);   
8: </script>   
28 输出换行   
1: document.writeln(“<strong>a</strong>”);   
2: document.writeln(“b”);   
29 输出日期   
1: <script language=”JavaScript”>   
2: var thisDate = new Date();   
3: document.write(thisDate.toString());   
4: </script>   
30 指定日期的时区   
1: <script language=”JavaScript”>   
2: var myOffset = -2;   
3: var currentDate = new Date();   
4: var userOffset = currentDate.getTimezoneOffset()/60;   
5: var timeZoneDifference = userOffset - myOffset;   
6: currentDate.setHours(currentDate.getHours() + timeZoneDifference);   
7: document.write(“The time and date in Central Europe is: “ + currentDate.toLocaleString());   
8: </script>   
31 设置日期输出格式   
1: <script language=”JavaScript”>   
2: var thisDate = new Date();   
3: var thisTimeString = thisDate.getHours() + “:” + thisDate.getMinutes();   
4: var thisDateString = thisDate.getFullYear() + “/” + thisDate.getMonth() + “/” + thisDate.getDate();   
5: document.write(thisTimeString + “ on “ + thisDateString);   
6: </script>   
32 读取URL参数   
1: <script language=”JavaScript”>   
2: var urlParts = document.URL.split(“?”);   
3: var parameterParts = urlParts[1].split(“&”);   
4: for (i = 0; i < parameterParts.length; i++) {   
5: var pairParts = parameterParts.split(“=”);   
6: var pairName = pairParts[0];   
7: var pairValue = pairParts[1];   
8: document.write(pairName + “ :“ +pairValue );   
9: }   
10: </script>   
你还以为HTML是无状态的么?   
33 打开一个新的document对象   
1: <script language=”JavaScript”>   
2: function newDocument() {   
3: document.open();   
4: document.write(“<p>This is a New Document.</p>”);   
5: document.close();   
6: }   
7: </script>   
34 页面跳转   
1: <script language=”JavaScript”>   
2: window.location = “http://www.liu21st.com/”;   
3: </script>   
35 添加网页加载进度窗口   
1: <html>   
2: <head>   
3: <script language='javaScript'>   
4: var placeHolder = window.open('holder.html','placeholder','width=200,height=200');   
5: </script>   
6: <title>The Main Page</title>   
7: </head>   
8: <body onLoad='placeHolder.close()'>   
9: <p>This is the main page</p>   
10: </body>   
11: </html>   
JavaScript就这么回事3:图像   
36 读取图像属性   
1: <img src="/”image1.jpg"” name=”myImage”>   
2: <a href=”# ” onClick=”window.alert(document.myImage.width)”>Width</a>   
3:   
37 动态加载图像   
1: <script language=”JavaScript”>   
2: myImage = new Image;   
3: myImage.src = “Tellers1.jpg”;   
4: </script>   
38 简单的图像替换   
1: <script language=”JavaScript”>   
2: rollImage = new Image;   
3: rollImage.src = “rollImage1.jpg”;   
4: defaultImage = new Image;   
5: defaultImage.src = “image1.jpg”;   
6: </script>   
7: <a href="/”myUrl"” onMouseOver=”document.myImage.src = rollImage.src;”   
8: onMouseOut=”document.myImage.src = defaultImage.src;”>   
9: <img src="/”image1.jpg"” name=”myImage” width=100 height=100 border=0>   
39 随机显示图像   
1: <script language=”JavaScript”>   
2: var imageList = new Array;   
3: imageList[0] = “image1.jpg”;   
4: imageList[1] = “image2.jpg”;   
5: imageList[2] = “image3.jpg”;   
6: imageList[3] = “image4.jpg”;   
7: var imageChoice = Math.floor(Math.random() * imageList.length);   
8: document.write(‘<img src=”' + imageList[imageChoice] + ‘“>');   
9: </script>   
40 函数实现的图像替换   
1: <script language=”JavaScript”>   
2: var source = 0;   
3: var replacement = 1;   
4: function createRollOver(originalImage,replacementImage) {   
5: var imageArray = new Array;   
6: imageArray[source] = new Image;   
7: imageArray[source].src = originalImage;   
8: imageArray[replacement] = new Image;   
9: imageArray[replacement].src = replacementImage;   
10: return imageArray;   
11: }   
12: var rollImage1 = createRollOver(“image1.jpg”,”rollImage1.jpg”);   
13: </script>   
14: <a href=”#” onMouseOver=”document.myImage1.src = rollImage1[replacement].src;”   
15: onMouseOut=”document.myImage1.src = rollImage1[source].src;”>   
16: <img src="/”image1.jpg"” width=100 name=”myImage1” border=0>   
17: </a>   
41 创建幻灯片   
1: <script language=”JavaScript”>   
2: var imageList = new Array;   
3: imageList[0] = new Image;   
4: imageList[0].src = “image1.jpg”;   
5: imageList[1] = new Image;   
6: imageList[1].src = “image2.jpg”;   
7: imageList[2] = new Image;   
8: imageList[2].src = “image3.jpg”;   
9: imageList[3] = new Image;   
10: imageList[3].src = “image4.jpg”;   
11: function slideShow(imageNumber) {   
12: document.slideShow.src = imageList[imageNumber].src;   
13: imageNumber += 1;   
14: if (imageNumber < imageList.length) {   
15: window.setTimeout(“slideShow(“ + imageNumber + “)”,3000);   
16: }   
17: }   
18: </script>   
19: </head>   
20: <body onLoad=”slideShow(0)”>   
21: <img src="/”image1.jpg"” width=100 name=”slideShow”>   
42 随机广告图片   
1: <script language=”JavaScript”>   
2: var imageList = new Array;   
3: imageList[0] = “image1.jpg”;   
4: imageList[1] = “image2.jpg”;   
5: imageList[2] = “image3.jpg”;   
6: imageList[3] = “image4.jpg”;   
7: var urlList = new Array;   
8: urlList[0] = “http://some.host/”;   
9: urlList[1] = “http://another.host/”;   
10: urlList[2] = “http://somewhere.else/”;   
11: urlList[3] = “http://right.here/”;   
12: var imageChoice = Math.floor(Math.random() * imageList.length);   
13: document.write(‘<a href=”' + urlList[imageChoice] + ‘“><img src=”' + imageList[imageChoice] + ‘“></a>');   
14: </script>   
JavaScript就这么回事4:表单   
还是先继续写完JS就这么回事系列吧~   
43 表单构成   
1: <form method=”post” action=”target.html” name=”thisForm”>   
2: <input type=”text” name=”myText”>   
3: <select name=”mySelect”>   
4: <option value=”1”>First Choice</option>   
5: <option value=”2”>Second Choice</option>   
6: </select>   
7: <br>   
8: <input type=”submit” value=”Submit Me”>   
9: </form>   
44 访问表单中的文本框内容   
1: <form name=”myForm”>   
2: <input type=”text” name=”myText”>   
3: </form>   
4: <a href='#' onClick='window.alert(document.myForm.myText.value);'>Check Text Field</a>   
45 动态复制文本框内容   
1: <form name=”myForm”>   
2: Enter some Text: <input type=”text” name=”myText”><br>   
3: Copy Text: <input type=”text” name=”copyText”>   
4: </form>   
5: <a href=”#” onClick=”document.myForm.copyText.value =   
6: document.myForm.myText.value;”>Copy Text Field</a>   
46 侦测文本框的变化   
1: <form name=”myForm”>   
2: Enter some Text: <input type=”text” name=”myText” onChange=”alert(this.value);”>   
3: </form>   
47 访问选中的Select   
1: <form name=”myForm”>   
2: <select name=”mySelect”>   
3: <option value=”First Choice”>1</option>   
4: <option value=”Second Choice”>2</option>   
5: <option value=”Third Choice”>3</option>   
6: </select>   
7: </form>   
8: <a href='#' onClick='alert(document.myForm.mySelect.value);'>Check Selection List</a>   
48 动态增加Select项   
1: <form name=”myForm”>   
2: <select name=”mySelect”>   
3: <option value=”First Choice”>1</option>   
4: <option value=”Second Choice”>2</option>   
5: </select>   
6: </form>   
7: <script language=”JavaScript”>   
8: document.myForm.mySelect.length++;   
9: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].text = “3”;   
10: document.myForm.mySelect.options[document.myForm.mySelect.length - 1].value = “Third Choice”;   
11: </script>   
49 验证表单字段   
1: <script language=”JavaScript”>   
2: function checkField(field) {   
3: if (field.value == “”) {   
4: window.alert(“You must enter a value in the field”);   
5: field.focus();   
6: }   
7: }   
8: </script>   
9: <form name=”myForm” action=”target.html”>   
10: Text Field: <input type=”text” name=”myField”onBlur=”checkField(this)”>   
11: <br><input type=”submit”>   
12: </form>   
50 验证Select项   
1: function checkList(selection) {   
2: if (selection.length == 0) {   
3: window.alert(“You must make a selection from the list.”);   
4: return false;   
5: }   
6: return true;   
7: }   
51 动态改变表单的action   
1: <form name=”myForm” action=”login.html”>   
2: Username: <input type=”text” name=”username”><br>   
3: Password: <input type=”password” name=”password”><br>   
4: <input type=”button” value=”Login” onClick=”this.form.submit();”>   
5: <input type=”button” value=”Register” onClick=”this.form.action = ‘register.html'; this.form.submit();”>   
6: <input type=”button” value=”Retrieve Password” onClick=”this.form.action = ‘password.html'; this.form.submit();”>   
7: </form>   
52 使用图像按钮   
1: <form name=”myForm” action=”login.html”>   
2: Username: <input type=”text” name=”username”><br>   
3: Password: <input type=”password”name=”password”><br>   
4: <input type=”image” src="/”login.gif"” value=”Login”>   
5: </form>   
6:   
53 表单数据的加密   
1: <SCRIPT LANGUAGE='JavaScript'>   
2: <!--   
3: function encrypt(item) {   
4: var newItem = '';   
5: for (i=0; i < item.length; i++) {   
6: newItem += item.charCodeAt(i) + '.';   
7: }   
8: return newItem;   
9: }   
10: function encryptForm(myForm) {   
11: for (i=0; i < myForm.elements.length; i++) {   
12: myForm.elements.value = encrypt(myForm.elements.value);   
13: }   
14: }   
15:   
16: //-->   
17: </SCRIPT>   
18: <form name='myForm' onSubmit='encryptForm(this); window.alert(this.myField.value);'>   
19: Enter Some Text: <input type=text name=myField><input type=submit>   
20: </form>   

JavaScript就这么回事5:窗口和框架   
54 改变浏览器状态栏文字提示   
1: <script language=”JavaScript”>   
2: window.status = “A new status message”;   
3: </script>   
55 弹出确认提示框   
1: <script language=”JavaScript”>   
2: var userChoice = window.confirm(“Click OK or Cancel”);   
3: if (userChoice) {   
4: document.write(“You chose OK”);   
5: } else {   
6: document.write(“You chose Cancel”);   
7: }   
8: </script>   
56 提示输入   
1: <script language=”JavaScript”>   
2: var userName = window.prompt(“Please Enter Your Name”,”Enter Your Name Here”);   
3: document.write(“Your Name is “ + userName);   
4: </script>   
57 打开一个新窗口   
1: //打开一个名称为myNewWindow的浏览器新窗口   
2: <script language=”JavaScript”>   
3: window.open(“http://www.liu21st.com/”,”myNewWindow”);   
4: </script>   
58 设置新窗口的大小   
1: <script language=”JavaScript”>   
2: window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300');   
3: </script>   
59 设置新窗口的位置   
1: <script language=”JavaScript”>   
2: window.open(“http://www.liu21st.com/”,”myNewWindow”,'height=300,width=300,left=200,screenX=200,top=100,screenY=100');   
3: </script>   
60 是否显示工具栏和滚动栏   
1: <script language=”JavaScript”>   
2: window.open(“http:   
61 是否可以缩放新窗口的大小   
1: <script language=”JavaScript”>   
2: window.open('http://www.liu21st.com/' , 'myNewWindow', 'resizable=yes' );</script>   
62 加载一个新的文档到当前窗口   
1: <a href='#' onClick='document.location = '125a.html';' >Open New Document</a>   
63 设置页面的滚动位置   
1: <script language=”JavaScript”>   
2: if (document.all) { //如果是IE浏览器则使用scrollTop属性   
3: document.body.scrollTop = 200;   
4: } else { //如果是NetScape浏览器则使用pageYOffset属性   
5: window.pageYOffset = 200;   
6: }</script>   
64 在IE中打开全屏窗口   
1: <a href='#' onClick=”window.open('http://www.juxta.com/','newWindow','fullScreen=yes');”>Open a full-screen window</a>   
65 新窗口和父窗口的操作   
1: <script language=”JavaScript”>   
2: //定义新窗口   
3: var newWindow = window.open(“128a.html”,”newWindow”);   
4: newWindow.close(); //在父窗口中关闭打开的新窗口   
5: </script>   
6: 在新窗口中关闭父窗口   
7: window.opener.close()   
66 往新窗口中写内容   
1: <script language=”JavaScript”>   
2: var newWindow = window.open(“”,”newWindow”);   
3: newWindow.document.open();   
4: newWindow.document.write(“This is a new window”);   
5: newWIndow.document.close();   
6: </script>   
67 加载页面到框架页面   
1: <frameset cols=”50%,*”>   
2: <frame name=”frame1” src="/”135a.html"”>   
3: <frame name=”frame2” src="/”about:blank"”>   
4: </frameset>   
5: 在frame1中加载frame2中的页面   
6: parent.frame2.document.location = “135b.html”;   
68 在框架页面之间共享脚本   
如果在frame1中html文件中有个脚本   
1: function doAlert() {   
2: window.alert(“Frame 1 is loaded”);   
3: }   
那么在frame2中可以如此调用该方法   
1: <body onLoad=”parent.frame1.doAlert();”>   
2: This is frame 2.   
3: </body>   
69 数据公用   
可以在框架页面定义数据项,使得该数据可以被多个框架中的页面公用   
1: <script language=”JavaScript”>   
2: var persistentVariable = “This is a persistent value”;   
3: </script>   
4: <frameset cols=”50%,*”>   
5: <frame name=”frame1” src="/”138a.html"”>   
6: <frame name=”frame2” src="/”138b.html"”>   
7: </frameset>   
这样在frame1和frame2中都可以使用变量persistentVariable   
70 框架代码库   
根据以上的一些思路,我们可以使用一个隐藏的框架页面来作为整个框架集的代码库   
1: <frameset cols=”0,50%,*”>   
2: <frame name=”codeFrame” src="/”140code.html"”>   
3: <frame name=”frame1” src="/”140a.html"”>   
4: <frame name=”frame2” src="/”140b.html"”>   
5: </frameset>
authicon  楼主| dly 发表于 2011-3-12 09:50:04 | 显示全部楼层
position: fixed兼容IE6的悬浮层解决方法
<style type="text/css">
.none { display:none; }
#parentFrame {position: fixed; bottom:0px; right:0px; z-index:1000;width:100%; height:90px;}
* html #parentFrame {
z-index:1000;width:1000px; height:90px;
position:absolute;
bottom:auto;
top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));
}
</style>

众所周知IE6不支持positionixed,这个bug与IE6的双倍margin和不支持PNG透明等bug一样臭名昭著。前些天我做自己的博客模板的时候,遇到了这个问题。当时就简单的无视了IE6——尽管有几个使用IE6的朋友,一起BS我……但是对于大项目或商业网站,如果有用到这个属性的时候,是不可能直接无视的。

你是如何让positionixed在IE6中工作的?
本文所使用的技巧是用了一条Internet Explorer的CSS表达式(expression)。你不可以直接使用该表达式,因为它可能会因为缓存而不更新。解决这一点的最简单的方式是使用eval包裹你的语句。

如何解决“振动”的问题?
显然IE有一个多步的渲染进程。当你滚动或调整你的浏览器大小的时候,它将重置所有内容并重画页面,这个时候它就会重新处理css表达式。这会引起一个丑陋的“振动”bug,在此处固定位置的元素需要调整以跟上你的(页面的)滚动,于是就会“跳动”。

解决此问题的技巧就是使用background-attachmentixed为body或html元素添加一个background-image。这就会强制页面在重画之前先处理CSS。因为是在重画之前处理CSS,它也就会同样在重画之前首先处理你的CSS表达式。这将让你实现完美的平滑的固定位置元素!

这个方案并不是我提供的。我是在网上的某个地方读到这些的。如果你知道是谁原创了这个方法,请告诉前端观察。
我发现的另外一个小技巧是,你根本无需一个真实的图片!你可以使用一个about:blank替代一个spacer.gif图片,而且它工作的同样出色。

以下为引用的内容:
/*让positionixed在IE6下可用! */

.fixed-top /* 头部固定 */{positionixed;bottom:auto;top:0px;}
.fixed-bottom /* 底部固定 */{position:fixed;bottom:0px;top:auto;}
.fixed-left /* 左侧固定 */{position:fixed;right:auto;left:0px;}
.fixed-right /* 右侧固定 */{position:fixed;right:0px;left:auto;}
/* 上面的是除了IE6的主流浏览器通用的方法 */
* html,* html body /* 修正IE6振动bug */{background-image:url(about:blank);background-attachment:fixed;}
* html .fixed-top /* IE6 头部固定 */{position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop));}
* html .fixed-right /* IE6 右侧固定 */ {position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));}
* html .fixed-bottom /* IE6 底部固定  */{position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}
* html .fixed-left /* IE6 左侧固定 */{position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft));}

更新: 添加border、padding 和margin 支持!
Note: 如果你不需要支持margin,可以将所有的`parseInt`部分去掉。

Note: 我只在标准模式下进行了测试。

The WHERE clause is used to specify a selection criterion.
WHERE子句可以规定选择的依据(符合要求才会选中)

WHERE 子句
To conditionally select data from a table, a WHERE clause can be added to the SELECT statement.
为了可以有条件地选择数据,给SELECT声明加上WHERE子句就可以办到
语法
SELECT column FROM table
WHERE column operator value
With the WHERE clause, the following operators can be used:
使用WHERE子句,可以进行下面这些操作:
运算符
描述
=
Equal 等于
<>
Not equal 不等于
>
Greater than 大于
<
Less than 小于
>=
Greater than or equal 大于等于
<=
Less than or equal 小于等于
BETWEEN
Between an inclusive range 在多少范围内
LIKE
Search for a pattern 寻找匹配

Note: In some versions of SQL the <> operator may be written as !=
注意:在一些版本的SQL里<>操作符要变成这样的写法 !=

Using the WHERE Clause
使用 WHERE 子句
To select only the persons living in the city "Sandnes", we add a WHERE clause to the SELECT statement:
如果要只选出住在"Sandens"城市里的个人信息,这句SELECT与WHERE结合的语句就应该这么写:
SELECT * FROM Persons
WHERE City='Sandnes'
"Persons" 表
LastName
FirstName
Address
City
Year
Hansen
Ola
Timoteivn 10
Sandnes
1951
Svendson
Tove
Borgvn 23
Sandnes
1978
Svendson
Stale
Kaivn 18
Sandnes
1980
Pettersen
Kari
Storgt 20
Stavanger
1960
结果
LastName
FirstName
Address
City
Year
Hansen
Ola
Timoteivn 10
Sandnes
1951
Svendson
Tove
Borgvn 23
Sandnes
1978
Svendson
Stale
Kaivn 18
Sandnes
1980


Using Quotes
使用单引号
Note that we have used single quotes around the conditional values in the examples.
我们在上面那个举例中对条件值使用了单引号。
SQL uses single quotes around text values (most database systems will also accept double quotes). Numeric values should not be enclosed in quotes.
SQL语言中单引号用在文字值上(也有很多数据库系统支持双引号).而数字值就不能使用单引号了
For text values:
先看下文字值的例子:
这句对的:
SELECT * FROM Persons WHERE FirstName='Tove'这句错了:
SELECT * FROM Persons WHERE FirstName=Tove
再看下数字值的例子:
这句对的:
SELECT * FROM Persons WHERE Year>1965这句错了:
SELECT * FROM Persons WHERE Year>'1965'


The LIKE Condition
LIKE 条件
The LIKE condition is used to specify a search for a pattern in a column.
LIKE条件一般用在在指定搜索某字段的时候
语法
SELECT column FROM table
WHERE column LIKE pattern
A "%" sign can be used to define wildcards (missing letters in the pattern) both before and after the pattern.
"%"这个符号可以代表通配字符(就是可以代表任何字符),可以放在搜索内容的前面和后面

Using LIKE
使用LIKE
The following SQL statement will return persons with first names that start with an 'O':
下面的这条SQL语句会将所有名内有开头为'O'的个人信息返回出来:
SELECT * FROM Persons
WHERE FirstName LIKE 'O%'
The following SQL statement will return persons with first names that end with an 'a':
下面这句SQL会将名内有结尾是'a'的个人信息返回出来:
SELECT * FROM Persons
WHERE FirstName LIKE '%a'
The following SQL statement will return persons with first names that contain the pattern 'la':
接下来的SQL语句会将名内凡是含有'la'的个人信息返回出来:
SELECT * FROM Persons
WHERE FirstName LIKE '%la%'

authicon  楼主| dly 发表于 2011-3-12 09:55:32 | 显示全部楼层
【优化mysql中where or和where in语句的遵从 】

一、应用 union来代替 where in:
应用 where or语句操纵 :
select * from city where id = 1 or id = 3 or id = 4
输出:
1 广州
3 深圳
4 惠州
explain 结果:
id select_type table type possible_keys key key_len ref rows Extra
1   SIMPLE       city   ALL    PRIMARY       NULL NULL     NULL 5     Using where

标准 应用 where in操纵 :
select * from city where id in (1,3,4)
输出:
1 广州
3 深圳
4 惠州
explain 结果:
id select_type table type possible_keys key key_len ref rows Extra
1   SIMPLE       city   ALL    PRIMARY       NULL NULL     NULL 5     Using where
应用 union all操纵 :
SELECT * FROM city where id = 1 union all SELECT * FROM city where id = 3 union all SELECT * FROM city
where id = 4
输出:
1 广州
3 深圳
4 惠州
explain 结果:
id   select_type table        type possible_keys key      key_len ref   rows Extra
1    PRIMARY      city         const PRIMARY       PRIMARY 4       const 1   
2    UNION        city         const PRIMARY       PRIMARY 4       const 1   
3    UNION        city         const PRIMARY       PRIMARY 4       const 1   
NULL UNION RESULT <union1,2,3> ALL   NULL          NULL     NULL    NULL NULL  
应用 union all并且 支持 order by (由于 union不支持 order by,应用 以下行动 则支持 ):
select * from (SELECT * FROM city where id = 1 order by id asc) as t1 UNION ALL select * from (SELECT * FROM city where id = 3 order by id desc) as t2 UNION ALL select * from city where id = 4
1 广州
3 深圳
4 惠州
应用 union all并且 对末了 的结果集举办排序:(本SQL应用 了filesort,性能有低落 )
select * from (select * from (SELECT * FROM city where id = 1 order by id asc) as t1 UNION ALL select * from (SELECT * FROM city where id = 3 order by id desc) as t2 UNION ALL select * from city where id = 4) as s1 order by id desc
输出:
4 惠州
3 深圳
1 广州

二、Union 和 Union all 的区别:
UNION在举办表链接后会筛选掉频频的记实 ,以是 在表链接后会对所发生 的结果集举办排序运算,删除频频的记实 再返回
结果。实际 大部分 操纵中是不会发生 频频的记实 ,最常见的是过程表与汗青 表UNION。
union all 只是大略 的将两个结果归并 后就返回。如许 ,假如 返回的两个结果齐集有频频的数据,那么返回的结果集就会包孕 频频的数据了。
从遵从 上说,UNION ALL 要比UNION快很多 ,以是 ,假如 可以确认归并 的两个结果齐集不包孕 频频的数据的话,那么就应用 UNION ALL
查询比较 :
select rand(1) union select rand(2) union select rand(3);
输出:
0.405403537121977
0.655586646549019
0.90576975597606

select rand(1) union select rand(1) union select rand(1);
输出:0.405403537121977
select rand(1) union all select rand(1) union all select rand(1);
输出:
0.405403537121977
0.405403537121977
0.405403537121977
authicon  楼主| dly 发表于 2011-3-12 09:55:45 | 显示全部楼层
PHP中extract()函数的妙用

PHP extract() 函数从数组中把变量导入到当前的符号表中。

对于数组中的每个元素,键名用于变量名,键值用于变量值。

第二个参数 type 用于指定当某个变量已经存在,而数组中又有同名元素时,extract() 函数如何对待这样的冲突。

本函数返回成功设置的变量数目。
  1. <?php
  2. $a = 'Original';
  3. $my_array = array("a" => "Cat","b" => "Dog", "c" => "Horse");
  4. extract($my_array, EXTR_PREFIX_SAME, 'dup');
  5. echo "\$a = $a; \$b = $b; \$c = $c; \$dup_a = $dup_a;";
  6. ?>
  7. 输出:
  8. $a = Original; $b = Dog; $c = Horse; $dup_a = Cat;
复制代码
authicon  楼主| dly 发表于 2011-3-12 09:55:58 | 显示全部楼层
我们可以利用这个函数来去掉某个数组中我们不想要的元素。
例如我们在数组a中,想把1,2两个值去掉的话,该怎么办呢?有一个传统方法就是遍历数组,如果值等于1,或者等2我们就移除这个元素,显然比较麻烦,如今就不同了,我们可以这样来写

首先,把我们不需要的数值组成一个数组,
  1. $del=array(1,2);
复制代码
接下来我们就利用我们的主角array_diff函数了
  1. $d=array_diff($a,$del);
  2. var_dump($d);
复制代码
php的执行结果就会是我们梦寐以求的这样哦:
  1. array(1) {
  2.   [2]=>
  3.   int(3)
  4. }
复制代码
呵呵……怎么样,只要动脑筋废铁变成金吧!!!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1314学习网 ( 浙ICP备10214163号 )

GMT+8, 2025-5-2 07:03

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

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