$mail_title = 'TEST'; //mail的主旨
$mail_from = "test@gmail.com"; //mail 的 from
$mail_data = '這是測試'; //mail的內文
Bcc => 指密件副本
$customer_email='customer_mail'; //密件副本的mail
receive => 指收件者
mail('receive',$mail_title,$mail_data,"From:$mail_from\nBcc: $customer_email\nContent-Type: text/html; charset=big5" .phpversion(1.0));
2008年12月31日 星期三
2008年12月24日 星期三
連sybase db用ip和port
PHP
$con = sybase_connect("220.220.0.6:4000","account","pass","big5",'');
if(!$con) {
echo "無法連結資料庫";
exit;
}
$con = sybase_connect("220.220.0.6:4000","account","pass","big5",'');
if(!$con) {
echo "無法連結資料庫";
exit;
}
2008年12月21日 星期日
2008年12月16日 星期二
checkbox全選和取消
JAVASCRIPT:
$("input").filter("[@id=select_all]").click(function(){
if (this.checked){
//checked
$("input[@name='check_[]']").each(function(){
var d = $(this).attr("disabled");
if (d == false){
this.checked = true;
}
});
}else{
//unchecked
$("input[@name='check_[]']").each(function(){
this.checked = false;
});
}
})
HTML:
<input type="checkbox" id="select_all">
<input type="checkbox" name="check_[]" id="check1">
<input type="checkbox" name="check_[]" id="check2">
<input type="checkbox" name="check_[]" id="check3">
$("input").filter("[@id=select_all]").click(function(){
if (this.checked){
//checked
$("input[@name='check_[]']").each(function(){
var d = $(this).attr("disabled");
if (d == false){
this.checked = true;
}
});
}else{
//unchecked
$("input[@name='check_[]']").each(function(){
this.checked = false;
});
}
})
HTML:
<input type="checkbox" id="select_all">
<input type="checkbox" name="check_[]" id="check1">
<input type="checkbox" name="check_[]" id="check2">
<input type="checkbox" name="check_[]" id="check3">
讓欄位disabled
JAVASCRIPT:
//欄位名稱開頭為hdis_的所有hidden去跑迴圈
$(":hidden[@name^='hdis_']").each(function(){
var v = $(this).val();
var n = $(this).attr('name'); //找出name
if (v == "Y"){
var a = n.split("_"); //分割字串
var num = a[1];
var c = ["check_1_","check_2_","check_3_"];
$.each(c,function(){ //把c陣列的資料帶入
$("#"+this+num).attr("disabled",true);
});
}
});
HTML:
<input type="hidden" name="hdis_0" value="0">
<input type="hidden" name="hdis_1" value="1">
<input type="hidden" name="hdis_2" value="Y">
<input type="text" value="111" name="check_1_1" size="10">
<input type="text" value="111" name="check_2_1" size="10">
<input type="text" value="111" name="check_3_1" size="10">
//欄位名稱開頭為hdis_的所有hidden去跑迴圈
$(":hidden[@name^='hdis_']").each(function(){
var v = $(this).val();
var n = $(this).attr('name'); //找出name
if (v == "Y"){
var a = n.split("_"); //分割字串
var num = a[1];
var c = ["check_1_","check_2_","check_3_"];
$.each(c,function(){ //把c陣列的資料帶入
$("#"+this+num).attr("disabled",true);
});
}
});
HTML:
<input type="hidden" name="hdis_0" value="0">
<input type="hidden" name="hdis_1" value="1">
<input type="hidden" name="hdis_2" value="Y">
<input type="text" value="111" name="check_1_1" size="10">
<input type="text" value="111" name="check_2_1" size="10">
<input type="text" value="111" name="check_3_1" size="10">
分割字串(split)
string.split(分割的字串, 分割後各字串的字元數-可不寫)
var n = 'this_is_test';
var a = n.split("_");
alert(a[1]); ==>is
var n = 'this_is_test';
var a = n.split("_");
alert(a[1]); ==>is
找出名字開頭為hdis_的每個hidden的name
JAVASCRIPT:
$(":hidden[@name^='hdis_']").each(function(){
var a = $(this).attr('name');
alert(a);
})
HTML:
<input type="hidden" name="hdis_0" value="0">
<input type="hidden" name="hdis_1" value="1">
<input type="hidden" name="hdis_2" value="Y">
$(":hidden[@name^='hdis_']").each(function(){
var a = $(this).attr('name');
alert(a);
})
HTML:
<input type="hidden" name="hdis_0" value="0">
<input type="hidden" name="hdis_1" value="1">
<input type="hidden" name="hdis_2" value="Y">
2008年12月12日 星期五
2008年11月27日 星期四
判斷資料表是否存在
判斷 test123 這個資料表是否存在 test 這個資料庫裡
select count(*) as ctable from test..sysobjects where name = 'test123'
select count(*) as ctable from test..sysobjects where name = 'test123'
2008年11月24日 星期一
2008年11月21日 星期五
jquery取得span的值和把值填入span
//取得span的值
$("span").html()
//把值填入span
$("span").html("test")
//計算所有span的金額
JavaScript:
function count_data(){
var total
$('.class_s').each(function(index){
total = total+ parseFloat($(this).html()); //把所有class為class_s的內容相加
});
$("#sale").html(total); //把值填入span id = sale
}
HTML:
<span class="class_s" id="c1">100<span>
<span class="class_s" id="c2">200<span>
<span class="class_s" id="c3">300<span>
<span class="class_s" id="c4">400<span>
<span id="sale"><span>
$("span").html()
//把值填入span
$("span").html("test")
//計算所有span的金額
JavaScript:
function count_data(){
var total
$('.class_s').each(function(index){
total = total+ parseFloat($(this).html()); //把所有class為class_s的內容相加
});
$("#sale").html(total); //把值填入span id = sale
}
HTML:
<span class="class_s" id="c1">100<span>
<span class="class_s" id="c2">200<span>
<span class="class_s" id="c3">300<span>
<span class="class_s" id="c4">400<span>
<span id="sale"><span>
2008年11月20日 星期四
2008年11月13日 星期四
重設identity
流水號會從1開始,需在table內無資料時使用。
sp_chgattribute '[ TABLE NAME ]', 'identity_burn_max', 0, '0'
example:
EXEC sp_chgattribute testtable, 'identity_burn_max', 0, '0';
sp_chgattribute '[ TABLE NAME ]', 'identity_burn_max', 0, '0'
example:
EXEC sp_chgattribute testtable, 'identity_burn_max', 0, '0';
2008年11月7日 星期五
jQuery table 排序的套件範例
參考網址:http://tablesorter.com/docs/
Include:
Html:
<thead>
<tr id="line">
<th class="{sorter: false}">欄位1</th>
<th>欄位2</th>
<th>欄位3</th>
<th>欄位4</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>345</td>
<td>453</td>
<td>4532</td>
</tr>
<tr>
<td>1232</td>
<td>3454</td>
<td>4533</td>
<td>45</td>
</tr>
</tbody>
</table>
Javascript:
$(document).ready(function(){
//點欄位排序
$("table").tablesorter();
});
Include:
- jquery-1.2.6.min.js
- jquery-latest.js
- jquery.tablesorter.js
- jquery.metadata.js
- <link rel="stylesheet" href="blue/style.css" type="text/css" id="" media="print, projection, screen" />
Html:
- 把 table 的 class 設成 tablesorter
- {sorter: false}:不能排序
<thead>
<tr id="line">
<th class="{sorter: false}">欄位1</th>
<th>欄位2</th>
<th>欄位3</th>
<th>欄位4</th>
</tr>
</thead>
<tbody>
<tr>
<td>123</td>
<td>345</td>
<td>453</td>
<td>4532</td>
</tr>
<tr>
<td>1232</td>
<td>3454</td>
<td>4533</td>
<td>45</td>
</tr>
</tbody>
</table>
Javascript:
$(document).ready(function(){
//點欄位排序
$("table").tablesorter();
});
2008年11月4日 星期二
四捨五入
JavaScript:
MathValue = Math.round(3.14); => 3
MathValue = Math.round(5.15); => 5
//小數點兩位四捨五入:先變整數四捨五入後再除100
MathValue = Math.round(3.1412*100)/100; ==>3.14
MathValue = Math.round(3.14); => 3
MathValue = Math.round(5.15); => 5
//小數點兩位四捨五入:先變整數四捨五入後再除100
MathValue = Math.round(3.1412*100)/100; ==>3.14
2008年10月31日 星期五
用jQuery寫AJAX例子
javascript:
function insert_data(pno,id){
var answer = confirm(txt);
if (answer){
var b = "#button"+id; //button的id
$.ajax({
beforeSend: function(){ //ajax發送前做
$(b).attr('disabled',true);
},
type:"POST", //ajax用POST的方式
url:"test.php", //url
async: false,
data:"no="+pno, //傳到url的值
success: function(msg){ //ajax成功時做
if (msg == ""){
msg = "更新資料完成!";
}else{
msg = unescape(msg); //把utf-8轉成big5
}
alert(msg);
},
error: function(){ //ajax失敗時做
alert("修改資料發生錯誤,請再試一次!");
},
complete: function(){ //ajax完成時做
$(b).attr('disabled',false);
}
});
}
}
Html:
<input type="button" name="button1" id="button1>" value="更新" onclick="insert_data('123'1);">
PHP:
$no = $_POST["no"];
echo iconv("big5","utf-8","編號為:".$no); //big5轉utf-8
javascrip中文轉碼可參考:http://werdna1222coldcodes.blogspot.com/2008/12/javascriptescape-encodeuri.html
function insert_data(pno,id){
var answer = confirm(txt);
if (answer){
var b = "#button"+id; //button的id
$.ajax({
beforeSend: function(){ //ajax發送前做
$(b).attr('disabled',true);
},
type:"POST", //ajax用POST的方式
url:"test.php", //url
async: false,
data:"no="+pno, //傳到url的值
success: function(msg){ //ajax成功時做
if (msg == ""){
msg = "更新資料完成!";
}else{
msg = unescape(msg); //把utf-8轉成big5
}
alert(msg);
},
error: function(){ //ajax失敗時做
alert("修改資料發生錯誤,請再試一次!");
},
complete: function(){ //ajax完成時做
$(b).attr('disabled',false);
}
});
}
}
Html:
<input type="button" name="button1" id="button1>" value="更新" onclick="insert_data('123'1);">
PHP:
$no = $_POST["no"];
echo iconv("big5","utf-8","編號為:".$no); //big5轉utf-8
javascrip中文轉碼可參考:http://werdna1222coldcodes.blogspot.com/2008/12/javascriptescape-encodeuri.html
讓網頁的欄位也能使用上、下、左、右鍵來控制
javascript:
function change_field(evt, id, id_name){
var d = "#"+id_name+(id+1); //下一個欄位
var u = "#"+id_name+(id-1); //上一個欄位
var r = "#txt"+id; //右邊欄位
var l = "#txt_r"+id; //左邊欄位
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode == 40){ //向下鍵
$(d).focus();
}else if (charCode == 38){ //向上鍵
$(u).focus();
}else if (charCode == 37){ //向左鍵
$(l).focus();
}else if (charCode == 39){ //向右鍵
$(r).focus();
}
}
Html:
欄位的排列需有規則,欄位給id,用id來控制
<input type="text" name="txt1" id="txt1" onkeydown="change_field(event, 1,'txt')">
<input type="text" name="txt_r1" id="txt_r1" onkeydown="change_field(event, 2,'txt')">
<input type="text" name="txt2" id="txt2" onkeydown="change_field(event, 3,'txt')">
<input type="text" name="txt_r2" id="txt_r2" onkeydown="change_field(event, 1,'txt')">
<input type="text" name="txt3" id="txt3" onkeydown="change_field(event, 2,'txt')">
<input type="text" name="txt_r3" id="txt_r3" onkeydown="change_field(event, 3,'txt')">
function change_field(evt, id, id_name){
var d = "#"+id_name+(id+1); //下一個欄位
var u = "#"+id_name+(id-1); //上一個欄位
var r = "#txt"+id; //右邊欄位
var l = "#txt_r"+id; //左邊欄位
var charCode = (evt.which) ? evt.which : event.keyCode
if (charCode == 40){ //向下鍵
$(d).focus();
}else if (charCode == 38){ //向上鍵
$(u).focus();
}else if (charCode == 37){ //向左鍵
$(l).focus();
}else if (charCode == 39){ //向右鍵
$(r).focus();
}
}
Html:
欄位的排列需有規則,欄位給id,用id來控制
<input type="text" name="txt1" id="txt1" onkeydown="change_field(event, 1,'txt')">
<input type="text" name="txt_r1" id="txt_r1" onkeydown="change_field(event, 2,'txt')">
<input type="text" name="txt2" id="txt2" onkeydown="change_field(event, 3,'txt')">
<input type="text" name="txt_r2" id="txt_r2" onkeydown="change_field(event, 1,'txt')">
<input type="text" name="txt3" id="txt3" onkeydown="change_field(event, 2,'txt')">
<input type="text" name="txt_r3" id="txt_r3" onkeydown="change_field(event, 3,'txt')">
2008年10月30日 星期四
另開視窗為全螢幕
javascript:
function open_w(no){
window.open("test.php?flag=f&no="+no,"Wopen2","fullscreen=yes,location=no,toolbar=no,
memubar=no,status=no,directories=no,resizable=yes,scrollbars=yes");
}
HTML:
<input type="button" name="buttons" id="buttons}>" value="更新" onclick="open_w('123')">
function open_w(no){
window.open("test.php?flag=f&no="+no,"Wopen2","fullscreen=yes,location=no,toolbar=no,
memubar=no,status=no,directories=no,resizable=yes,scrollbars=yes");
}
HTML:
<input type="button" name="buttons" id="buttons}>" value="更新" onclick="open_w('123')">
2008年10月22日 星期三
讓某個欄位獲得焦點、反白
(1)javascript
焦點
document.getElementById('field1').focus();
反白
document.getElementById('field1').select();
(2)jQuery
//當class為link_column且此欄位focus時,把此欄位反白
$(document).ready(function(){
$(".link_column").focus(function() {
$(this).select();
});
});
//欄位內容反白
function click_data(txt_id){
$(txt_id).focus(); //焦點
}
<input class="link_column" type="text" name="txt1" id='txt1' onclick="click_data('txt1');>
焦點
document.getElementById('field1').focus();
反白
document.getElementById('field1').select();
(2)jQuery
//當class為link_column且此欄位focus時,把此欄位反白
$(document).ready(function(){
$(".link_column").focus(function() {
$(this).select();
});
});
//欄位內容反白
function click_data(txt_id){
$(txt_id).focus(); //焦點
}
<input class="link_column" type="text" name="txt1" id='txt1' onclick="click_data('txt1');>
防止Sql injection和XSS injection
傳入string,傳回string
function checksql($str) {
$str = @htmlspecialchars($str);
//過濾單引號成為全形單引號
$str = str_replace("'","’",$str);
//過濾雙引號成為全形雙引號
$str = str_replace('"',"”",$str);
return $str;
}
function checksql($str) {
$str = @htmlspecialchars($str);
//過濾單引號成為全形單引號
$str = str_replace("'","’",$str);
//過濾雙引號成為全形雙引號
$str = str_replace('"',"”",$str);
return $str;
}
字串轉成浮點數或整數
將字串轉成浮點數並傳回值:
parseFloat(字串)
將字串轉成基底的整數並傳回值:
parseInt(字串,基底)
基底是指幾進位:如十進位、十六進位…
parseInt('010',10)
parseFloat(字串)
將字串轉成基底的整數並傳回值:
parseInt(字串,基底)
基底是指幾進位:如十進位、十六進位…
parseInt('010',10)
Mouse Over 的效果
Script:
$(document).ready(function(){
//當id為tdata,tr的id開頭不等於line,當滑鼠移到時加入class,離開時移除class
$("#tdata tr:not([id^='line'])").hover(
function () {$(this).addClass("class_01");},
function () {$(this).removeClass("class_01");}
);
});
Html:
<table border="1" id="tdata">
<tr id="line" class="class_02">
<td>欄位</td>
</tr>
<tr>
<td>資料</td>
</tr>
</table>
$(document).ready(function(){
//當id為tdata,tr的id開頭不等於line,當滑鼠移到時加入class,離開時移除class
$("#tdata tr:not([id^='line'])").hover(
function () {$(this).addClass("class_01");},
function () {$(this).removeClass("class_01");}
);
});
Html:
<table border="1" id="tdata">
<tr id="line" class="class_02">
<td>欄位</td>
</tr>
<tr>
<td>資料</td>
</tr>
</table>
table 基偶列不同顏色
Script:
$(document).ready(function(){
//當id為tdata,tr的id開頭不等於line的加入class
$("#tdata tr:not([id^='line']):even").addClass('class_03');
$("#tdata tr:not([id^='line']):odd").addClass('class_04');
//或id的開頭為tdata,tr的id開頭不等於line的加入class
$("[id^='tdata'] tr:not([id^='line']):even").addClass('td_blue_03');
$("[id^='tdata'] tr:not([id^='line']):odd").addClass('td_green_04');
//或
$("#tdata tr:even").addClass('table_even');
$("#tdata tr:odd").addClass('table_odd');
});
Html:
<table border="1" id="tdata">
<tr id="line" class="class_02">
<td>欄位</td>
</tr>
<tr>
<td>資料</td>
</tr>
</table>
$(document).ready(function(){
//當id為tdata,tr的id開頭不等於line的加入class
$("#tdata tr:not([id^='line']):even").addClass('class_03');
$("#tdata tr:not([id^='line']):odd").addClass('class_04');
//或id的開頭為tdata,tr的id開頭不等於line的加入class
$("[id^='tdata'] tr:not([id^='line']):even").addClass('td_blue_03');
$("[id^='tdata'] tr:not([id^='line']):odd").addClass('td_green_04');
//或
$("#tdata tr:even").addClass('table_even');
$("#tdata tr:odd").addClass('table_odd');
});
Html:
<table border="1" id="tdata">
<tr id="line" class="class_02">
<td>欄位</td>
</tr>
<tr>
<td>資料</td>
</tr>
</table>
2008年10月20日 星期一
只能填數字和小數點
javascript:
function check_keyPress(e){
if ($.browser.msie){ //ie
keycode = event.keyCode;
}else{ //其它
keycode = e.which;
}
if ((keycode > 57 || keycode < 48) && (keycode != 46) && (keycode != 13)) {
return false;
}
}
html:
<input type="text" name="text1" value="" size="5" onkeypress="return check_keyPress(event)">
function check_keyPress(e){
if ($.browser.msie){ //ie
keycode = event.keyCode;
}else{ //其它
keycode = e.which;
}
if ((keycode > 57 || keycode < 48) && (keycode != 46) && (keycode != 13)) {
return false;
}
}
html:
<input type="text" name="text1" value="" size="5" onkeypress="return check_keyPress(event)">
判斷按下的是鍵盤的哪個鍵
javascript:
function check_keyPress(e){
(1)
if ($.browser.msie){ //ie
keycode = event.keyCode;
}else{ //其它
keycode = e.which;
}
alert(keycode);
PS.發現無法判斷上、下、左、右鍵
(2)
var keycode = (e.which) ? e.which : event.keyCode
}
html:
<input type="text" name="text1" value="" size="5" onkeypress="check_keyPress(event)">
function check_keyPress(e){
(1)
if ($.browser.msie){ //ie
keycode = event.keyCode;
}else{ //其它
keycode = e.which;
}
alert(keycode);
PS.發現無法判斷上、下、左、右鍵
(2)
var keycode = (e.which) ? e.which : event.keyCode
}
html:
<input type="text" name="text1" value="" size="5" onkeypress="check_keyPress(event)">
欄位只能填數字-for IE
<input type="text" name="numberin" size="5" value="" id="numberin" onKeyPress="with(window.event)return(keyCode>47&&keyCode<58)">
2008年10月2日 星期四
2008年10月1日 星期三
HTML的META
瀏覽器或是搜尋引勤擎經由 HTTP 協定,讀取 HTML 檔案時會先對其中有意義的 META 做判讀並執行。META 用於網頁的<head>與</head>中。
META 的內容有兩種:name和http-equiv。name內容主要用於描述網頁,以便於查詢引擎機器人尋找、分類。
META 的內容有兩種:name和http-equiv。name內容主要用於描述網頁,以便於查詢引擎機器人尋找、分類。
- <meta name="Generator" content="“>
用以說明生成工具(如Microsoft FrontPage 4.0)等 - <meta name=“keywords" content="“>
向查詢引擎說明網頁的關鍵詞 - <meta name=“description" content="“>
告訴查詢引擎你的網站台的主要內容 - <meta name=“Author” content=““>
告訴查詢引擎網站的作者 - <meta name="Robots" content="all|none|index|noindex|follow|nofollow“>
設定為all:檔案將被檢索,且頁面上的連結可以被查詢
設定為none:檔案將不被檢索,且頁面上的連結不可以被查詢
設定為index:檔案將被檢索
設定為follow:頁面上的連結可以被查詢
設定為noindex:檔案將不被檢索,但頁面上的連結可以被查詢
設定為nofollow:檔案將不被檢索,頁面上的連結可以被查詢
強迫不要使用cache
欲讓使用者每次都能得到最新的資料,強迫不要使用快取(cache)
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") ."GMT");
header("Cache-Control: no-cache, must-revalidate");
header("Pragma: no-cache");
php寫下載excel
可以用Pear套件,下面是比較簡單的方式...
<input type="button" name="B1" value="下載EXCEL" onclick="location.href=download.xls">
\t:指Tab鍵(換欄位)
\n:指換行
$txtFile = "欄位A\t欄位B\t欄位C\t欄位D\n";
while ($row = mssql_fetch_array($result)){
$txtFile .= "'$row['id']\n"; //在值的前面加上單引號變成字串
}
//開啟EXCEL檔
//若檔案存在,則刪除檔案
if (file_exists("/localhost/download.xls")){
unlink("/localhost/download.xls");
}
if (!$file = fopen("/localhost/download.xls","w+")){
echo 開啟文字檔失敗
exit;
}
fputs($file,$txtFile); //把資料寫入檔案
fclose($file);
PS.若內容四個空格,會被當成tab鍵,所以…需把它替換掉
str_replace(' ',"",$result[$tab])
<input type="button" name="B1" value="下載EXCEL" onclick="location.href=download.xls">
\t:指Tab鍵(換欄位)
\n:指換行
$txtFile = "欄位A\t欄位B\t欄位C\t欄位D\n";
while ($row = mssql_fetch_array($result)){
$txtFile .= "'$row['id']\n"; //在值的前面加上單引號變成字串
}
//開啟EXCEL檔
//若檔案存在,則刪除檔案
if (file_exists("/localhost/download.xls")){
unlink("/localhost/download.xls");
}
if (!$file = fopen("/localhost/download.xls","w+")){
echo 開啟文字檔失敗
exit;
}
fputs($file,$txtFile); //把資料寫入檔案
fclose($file);
PS.若內容四個空格,會被當成tab鍵,所以…需把它替換掉
str_replace(' ',"",$result[$tab])
javascript 截取字串
String.substr(s,e) :從指定的位置(s)取指定長度(e)的字串。
String.substring(s,e) :從指定的位置(s)到指定的位置(e)的字串。
起始位置從0開始
code = 'abcdefghi'
function checkData(){
//計算字串的長度
var i = document.getElementById('code').value.length;
alert(i); // 9
//從指定位置2,到指定位置4的字串
var j = document.getElementById('code').value.substring(2,4);
alert(j); // cd
//從指定位置2,截取長度4的字串
var k = document.getElementById('code').value.substr(2,4);
alert(k); // cdef
}
String.substring(s,e) :從指定的位置(s)到指定的位置(e)的字串。
起始位置從0開始
code = 'abcdefghi'
function checkData(){
//計算字串的長度
var i = document.getElementById('code').value.length;
alert(i); // 9
//從指定位置2,到指定位置4的字串
var j = document.getElementById('code').value.substring(2,4);
alert(j); // cd
//從指定位置2,截取長度4的字串
var k = document.getElementById('code').value.substr(2,4);
alert(k); // cdef
}
2008年9月25日 星期四
把「開啟這類檔案之前,一定要先問我」回覆
把開啟這類檔案之前,一定要先問我的checkbox取消,想要再叫回…
到檔案總管的「資料夾選項」設定,將該檔案類型設定中的「下載後開檔時確認」勾起即可。
看你當初是下載哪一類型的檔案,就去恢復那一類型檔案的訊息,依此類推。
以 zip 檔案為例(修改其他檔案類型請依此類推):
- 開啟檔案總管,到「工具」>>「資料夾選項」(某些作業系統,如 Windows 98 是「檢視」>>「資料夾選項」)。
- 到「檔案類型」頁。
- 在「註冊的檔案類型」清單中,找到「WinZip File」,按「進階」(註一),勾「下載後進行開啟確認」,按確定,結束資料夾選項視窗。
2008年9月22日 星期一
PHP呼叫MSSQL的SP
$sql="Declare @OrderCode varchar(9),
@RetStr varchar(1000)
EXEC InsertPresentOrder 'START', @OrderCode OUT, @RetStr OUT
Select @OrderCode,@RetStr";
@RetStr varchar(1000)
EXEC InsertPresentOrder 'START', @OrderCode OUT, @RetStr OUT
Select @OrderCode,@RetStr";
$query=mssql_query($sql);
$OrderCode=mssql_result($query,0,0);
$RetStr=mssql_result($query,0,1);
php 呼叫sybase 的sp
sp:
CREATE PROCEDURE dbo.sp_u_test_test
@mult1 int, @mult2 int, @result int output
AS
BEGIN
select @result = @mult1 * @mult2
END
php:
$sql="declare @guess int
select @guess = 0
execute databse..sp_u_test_test 5, 6,
@result = @guess output";
$query=sybase_query($sql);
echo sybase_result($query,0,0);
==>30
參考資料:http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/43833;pt=42621/*
CREATE PROCEDURE dbo.sp_u_test_test
@mult1 int, @mult2 int, @result int output
AS
BEGIN
select @result = @mult1 * @mult2
END
php:
$sql="declare @guess int
select @guess = 0
execute databse..sp_u_test_test 5, 6,
@result = @guess output";
$query=sybase_query($sql);
echo sybase_result($query,0,0);
==>30
參考資料:http://manuals.sybase.com/onlinebooks/group-as/asg1250e/sqlug/@Generic__BookTextView/43833;pt=42621/*
2008年4月2日 星期三
找出資料表的欄位型態、大小、描述…等
找出table_name這個table的欄位名稱、型態(大小)、預設值、描述、isNull
Select C.COLUMN_NAME,
CASE DATA_TYPE WHEN 'nvarchar' THEN DATA_TYPE+'('+CONVERT(NVARCHAR(1000),CHARACTER_MAXIMUM_LENGTH)+')' ELSE DATA_TYPE END,
ISNULL(C.COLUMN_DEFAULT, ''), ISNULL(D.value, ''), CASE C.IS_NULLABLE WHEN 'NO' THEN '' ELSE 'Y' END,
D.NAME, D.object_id, D.minor_id,
C.DATA_TYPE, C.CHARACTER_MAXIMUM_LENGTH
From (
Select A.name, A.object_id, B.minor_id, B.value
From sys.tables A LEFT JOIN sys.extended_properties B
on A.object_id = B.major_id
) D RIGHT JOIN Information_Schema.Columns C
ON D.name = C.TABLE_NAME AND D.minor_id = C.ORDINAL_POSITION
Where C.TABLE_NAME = 'table_name'
ORDER BY C.ORDINAL_POSITION
Select C.COLUMN_NAME,
CASE DATA_TYPE WHEN 'nvarchar' THEN DATA_TYPE+'('+CONVERT(NVARCHAR(1000),CHARACTER_MAXIMUM_LENGTH)+')' ELSE DATA_TYPE END,
ISNULL(C.COLUMN_DEFAULT, ''), ISNULL(D.value, ''), CASE C.IS_NULLABLE WHEN 'NO' THEN '' ELSE 'Y' END,
D.NAME, D.object_id, D.minor_id,
C.DATA_TYPE, C.CHARACTER_MAXIMUM_LENGTH
From (
Select A.name, A.object_id, B.minor_id, B.value
From sys.tables A LEFT JOIN sys.extended_properties B
on A.object_id = B.major_id
) D RIGHT JOIN Information_Schema.Columns C
ON D.name = C.TABLE_NAME AND D.minor_id = C.ORDINAL_POSITION
Where C.TABLE_NAME = 'table_name'
ORDER BY C.ORDINAL_POSITION
2008年2月23日 星期六
脫逸資料庫語法中的特殊字元
mysql_real_escape_string -- 脫逸資料庫語法中的特殊字元.
脫逸資料庫語法中的特殊字元. 所以他可以安全放進mysql_query()執行.
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
Escaped string: Zak\'s and Derick\'s Laptop
注: mysql_real_escape_string() 不脫逸 % 和 _.
See also: mysql_escape_string(), mysql_character_set_name().
資料來源:http://pda.php5.idv.tw/modules.php?mod=books&act=show&shid=477
脫逸資料庫語法中的特殊字元. 所以他可以安全放進mysql_query()執行.
<?php
$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$item = "Zak's and Derick's Laptop";
$escaped_item = mysql_real_escape_string($item);
printf ("Escaped string: %s\n", $escaped_item);
?>
Escaped string: Zak\'s and Derick\'s Laptop
注: mysql_real_escape_string() 不脫逸 % 和 _.
See also: mysql_escape_string(), mysql_character_set_name().
資料來源:http://pda.php5.idv.tw/modules.php?mod=books&act=show&shid=477
字串加入斜線
AddSlashes
本函式使需要讓資料庫處理的字串,引號的部份加上斜線,以供資料庫查詢 (query) 能順利運作。這些會被改的字元包括單引號 (')、雙引號 (")、反斜線 backslash (\) 以及空字元 NUL (the null byte)。
語法: string addslashes(string str);
資料來源:http://stock.ettoday.com/book/function.php-AddSlashes.htm
本函式使需要讓資料庫處理的字串,引號的部份加上斜線,以供資料庫查詢 (query) 能順利運作。這些會被改的字元包括單引號 (')、雙引號 (")、反斜線 backslash (\) 以及空字元 NUL (the null byte)。
語法: string addslashes(string str);
資料來源:http://stock.ettoday.com/book/function.php-AddSlashes.htm
2008年1月29日 星期二
16進制轉成2進制
ALTER FUNCTION [dbo].[16Transfer2] (@Code Nvarchar(20))
RETURNS Nvarchar(100)
AS
BEGIN
DECLARE @ResultVar Nvarchar(100)
DECLARE @iLen Int
DECLARE @I Int
DECLARE @SingleCode Nvarchar(2)
DECLARE @Ten INT
SELECT @iLen = LEN(@Code)
SET @I = 1
SET @ResultVar = ''
While @I <= @iLen
BEGIN
SET @SingleCode = SUBSTRING(@Code, @I, 1)
SET @Ten = CASE @SingleCode
WHEN 'A' THEN 10
WHEN 'B' THEN 11
WHEN 'C' THEN 12
WHEN 'D' THEN 13
WHEN 'E' THEN 14
WHEN 'F' THEN 15
ELSE CONVERT(INT, @SingleCode)
END
SET @ResultVar = @ResultVar + dbo.[10Transfer2_16](@Ten)
SET @I = @I + 1
END
RETURN RTRIM(LTRIM(@ResultVar))END
EX:Select dbo.[16Transfer2]('F')==>1111
把10進位的數字變成2進位--數字為0-15(16進制轉成2進制用)
ALTER FUNCTION [dbo].[10Transfer2_16] (@Code Int) RETURNS Nvarchar(4)
AS
BEGIN
DECLARE @Number Int
DECLARE @I INT
DECLARE @Two Nvarchar(4)
SET @Number = @Code
SET @I = 3 --只除3次
SET @Two = ''
WHILE @I <> 0
BEGIN
SET @Two = CONVERT(Nvarchar(1), @Number%2) + @Two
SET @Number = @Number / 2
SET @I = @I - 1
END
IF @I = 0
BEGIN
SET @Two = CONVERT(Nvarchar(1), @Number) + @Two
END
RETURN LTRIM(RTRIM(@Two))
END
EX:Select dbo.[10Transfer2_16](14)==> 1110
AS
BEGIN
DECLARE @Number Int
DECLARE @I INT
DECLARE @Two Nvarchar(4)
SET @Number = @Code
SET @I = 3 --只除3次
SET @Two = ''
WHILE @I <> 0
BEGIN
SET @Two = CONVERT(Nvarchar(1), @Number%2) + @Two
SET @Number = @Number / 2
SET @I = @I - 1
END
IF @I = 0
BEGIN
SET @Two = CONVERT(Nvarchar(1), @Number) + @Two
END
RETURN LTRIM(RTRIM(@Two))
END
EX:Select dbo.[10Transfer2_16](14)==> 1110
2進制轉成10進制(function)
CREATE FUNCTION [dbo].[2Transfer10] (@Code Nvarchar(100)) RETURNS Int
AS
BEGIN
DECLARE @ResultVar Int
DECLARE @iLen Int
DECLARE @I Int
DECLARE @J INT
DECLARE @Number Int
SET @iLen = LEN(@Code)
SET @I = @iLen-1
SET @J = 1
SET @ResultVar = 0
WHILE (@I >= 0) AND (@iLen >= @J)
BEGIN
SET @Number = SUBSTRING(@Code, @J, 1)
IF @Number = 1
Begin
SET @ResultVar = @ResultVar + POWER(2,@I)
END
SET @I = @I - 1
SET @J = @J + 1
END
RETURN @ResultVar
END
EX:
Select [dbo].[2Transfer10](1101) ==>13
AS
BEGIN
DECLARE @ResultVar Int
DECLARE @iLen Int
DECLARE @I Int
DECLARE @J INT
DECLARE @Number Int
SET @iLen = LEN(@Code)
SET @I = @iLen-1
SET @J = 1
SET @ResultVar = 0
WHILE (@I >= 0) AND (@iLen >= @J)
BEGIN
SET @Number = SUBSTRING(@Code, @J, 1)
IF @Number = 1
Begin
SET @ResultVar = @ResultVar + POWER(2,@I)
END
SET @I = @I - 1
SET @J = @J + 1
END
RETURN @ResultVar
END
EX:
Select [dbo].[2Transfer10](1101) ==>13
訂閱:
文章 (Atom)