星期四, 7月 31, 2008

常見問題

*Access denied for user 'kevyu'@'' (using password: YES)
ans: mysql 未設定此帳號kevyu具有remote,從遠端登入的權限

取得last insert id

MySQL新增完後
會將資料留在DB Connection

PHP--
PHP有提供相關函數
執行mysql_insert_id(),即最後新增的id


.Net-- (http://forums.mysql.com/read.php?38,98672,98868#msg-98868)
string strSQLSelect = "SELECT @@IDENTITY AS 'LastID'";
MySqlCommand dbcSelect = new MySqlCommand(strSQLSelect, conDBConnection);
MySqlDataReader dbrSelect = dbcSelect.ExecuteReader();

dbrSelect.Read();
int intCounter = Int32.Parse(dbrSelect.GetValue(0).ToString());

dbrSelect.Dispose();
conDBConnection.Close();
MessageBox.Show("Test: " + intCounter.ToString());

星期三, 7月 30, 2008

2008 聚餐

12月份聚餐
訂位時間: 12/26 (星期五) 中午12點
餐廳: 謝阿姨美食坊
網址: http://blog.yam.com/elsachen/article/15342243
地址: 台北市博愛路122號B1(世運麵包店斜對面)
電話: 2388-1012


11月份聚餐
餐廳: 福臨門- 港式飲茶吃到飽
地址: 台北市北投區大業路700號(新北投捷運站)
網址: http://flm.wahot.com/ind/modules/news/article.php?storyid=135

10月份聚餐
羅斯福路上的....忘了

9月份聚餐
餐廳: 小春 (日式料理, 請大家吃飽飽!)
網址: http://www.kuharu.com.tw/inner1.php

地點: 您可以搭乘捷運板南線,到忠孝敦化下車,走安和路一段出口,也就是誠品敦南店的出口,右轉進安和路102巷走到底就看到小春。小春位於敦化南路與信義路交叉口,玉山銀行旁第二條巷子進去到底。


8月份聚餐
時間: 8/22 (五) 中午12:00
餐廳: 韓首爾
地址: 台北市敦化南路一段160巷23號 (請閱: 地圖在附件中)
電話: 2752-2653
相關介紹網址:
http://tw.myblog.yahoo.com/h02-27522653
http://tw.myblog.yahoo.com/jw!gY4ig0SfGQTuNBVaNTLyUacWJFI-/article?mid=2673

由於月底部份同事要到美國出差
所以就提早吃
牛、雞、豬、羊都有 還不錯
有提供明治冰淇琳也挺好吃的

7月份聚餐
KiKi restaurant
中式料理
藍心湄開的餐廳
唔...後來臨時改去另一家餐廳

「府岸海產城」....也是中式料理
地點: 台北市大安區永康街8巷7號1樓
http://tw.lifestyle.yahoo.com/biz.html?bizid=86a64a5f58132e35&sid=152959622&city=%E5%8F%B0%E5%8C%97%E5%B8%82&b=6&sort=-rating

6月份聚餐
神州客棧(神州時尚精緻料理)
地址: 忠孝東路五段508-8號
中式料理

5月份聚餐
小護士餐廳
地址:新生北路3段7號

4月份聚餐
泰式料理

3月份聚餐
忘了叫什麼 >"<

2月份聚餐
1月份聚餐+尾牙
陽明山的...一時想不起來

2007---

9月份聚餐
Mo-Mo-Paradise
忠孝店
9月份

星期三, 7月 23, 2008

jQuery語法

找未加入html裡的tag
利用jQuery找tag時,如 $("#test")
id為test的tag需已存在html

但當要找的tag還未加入html裡時,就會找不到test
可以利用此法
var panel=jQuery("<div id='test'>");
$('#test',panel)
});


一次設定多個屬性及事件
滿方便的...不錯
$('#test')
.text("this is div") //屬性
.click(function(){ //方法
alert($(this).text());
});
//一行來設定屬性就是
$('#test').text("this is div").html("").css("");
//看起來怪怪的,不過還挺簡潔的

星期一, 7月 21, 2008

利用JavaScript做print preview

source:http://www.programmer-club.com/pc2020v5/forum/showSameTitleN.asp?board_pc2020=javascript&id=4823&keyword=

var OLECMDID = 7;
/* OLECMDID values:
* 6 - print
* 7 - print preview
* 1 - open window
* 4 - Save As
*/
var PROMPT = 1; // 2 DONTPROMPTUSER
var WebBrowser = '';
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);
WebBrowser1.ExecWB(OLECMDID, PROMPT);
WebBrowser1.outerHTML = "";
}

其他的用法,列举如下:
WebBrowser.ExecWB(1,1) 打开
Web.ExecWB(2,1) 关闭现在所有的IE窗口,并打开一个新窗口
Web.ExecWB(4,1) 保存网页
Web.ExecWB(6,1) 打印
Web.ExecWB(7,1) 打印预览
Web.ExecWB(8,1) 打印页面设置
Web.ExecWB(10,1) 查看页面属性
Web.ExecWB(15,1) 好像是撤销,有待确认
Web.ExecWB(17,1) 全选
Web.ExecWB(22,1) 刷新
Web.ExecWB(45,1) 关闭窗体无提示

星期四, 7月 17, 2008

讀文字 JSON

直接宣告
//陣列物件
var json1 = {[
{"id":1,"name":"台灣"}
{"id":2,"name":"美國"}
]};

//物件(含陣列)
var json2 = {"bindings": [
{"ircEvent": "PRIVMSG", "method": "newURI", "regex": "^http://.*"},
{"ircEvent": "PRIVMSG", "method": "deleteURI", "regex": "^delete.*"},
{"ircEvent": "PRIVMSG", "method": "randomURI", "regex": "^random.*"}
]};


讀文字
var myJSONtext = "文字型態的 json 的格式... "; //同上例的格式,注意不用加分號
var myObject = eval('(' + myJSONtext + ')'); //再前後加上小刮號,利用eval即可得


JSON 的安全性

references:
JSON官網

jqGrid

jqGrid官方網址

install
1.download package
jQuery Grid Plugin 3.2 with docs
解壓後,放到自建的jqGrid資料夾

2.建立html page
放在jqGrid下,並include jqGrid的js及css
//1.jquery core
<script type="text/javascript" src="jquery.js"></script>
//2.jqGrid的js
<script type="text/javascript" src="jquery.jqGrid.js"></script>
//3.jqGrid的css
<link rel="stylesheet" type="text/css" media="screen" href="themes/basic/grid.css" /> </code>

3.environment配置
有3個地方需要調整

(1)js的路徑
在jquery.jqGrid.js裡,有個pathtojsfiles變數
var pathtojsfiles = "js/"; // need to be ajusted
此為設定要載入的js檔路徑

(2)CSS路徑

href就指到預設的位置
>link rel="stylesheet" type="text/css" media="screen" href="lib/jqGrid/themes/basic/grid.css" /<

(3)圖檔路徑
在實作時,要給圖片的位置

var gridimgpath = 'themes/basic/images'; //預設的圖片
jQuery("#tbRecordList").jqGrid({
colNames: ['日期', '分數',
...
imgpath: gridimgpath, //設定gridimgpath
});


**有的沒的
//清空grid內容
$("#_TableName").clearGridData();

**備註
1.每個欄位長度至少要60以上,不然排序的icon(遞增,遞減)會看不見 (新版的不會了)
2.當遇到p.mutliselect是null時,代表設定table id不一致或未啟動jqGrid()的設定
3.利用jquery.load進來的頁面,如果也有include jquery.js會導致無法使用jqgrid的method,

星期二, 7月 08, 2008

jQuery套件

A.選單

1.仿apple的滑動選單


2.Google jtab


B.Masked Input
1.Masked Input Plugin 輸入遮照

C.自動完成
http://www.pengoworks.com/workshop/jquery/autocomplete.htm
滿不錯的套件,搭配php讀資料庫
還利用cache,節省重覆的讀取字完

D.Validation
Validation

E.Table
jqGrid demo
滿不錯的table套件,Demo也很豐富


F.Sorting
jQuery plugin: tablesorter
可輕易的對table欄位做sorting的工作

G.loading block
jQuery BlockUI Plugin


H.提示

ToolTip_MooTools Demo
畫面風挺不錯的,滑動出現tooltip
jQuery plugin: Tooltip Demo
這個也挺酷的,效果多,可選擇

I.圖表類
1.JavaScript Diagram Builder
2.Google Flotchart Demo
3.Google Chart API

I.Treeview
jQuery Treeview Plugin




其他套件
1.45個新鮮出爐的jQuery插件
2.37個更加出色的jQuery插件
3.jQueryのプラグイン33+1選 -2007年9月 日本人寫的
4.Ajax Rain

5. 10 beautiful Sliding Panel with jQuery Tutorials

JavaScript的圖表工具 Diagram Builder

JavaScript Diagram Builder
下圖為pie chart的圖示
滿不錯的...選到右方的單位 還會有小動畫分離pie


畫面雖然沒有google的flot chart漂亮
不過圖可以自己換
主要有我想要的信賴區間圖 感謝同事的協助
ㄟ...你說沒有信賴區間的選項...傻孩子 是自己一個圖一個圖貼上的



**教學
1.背景
D.SetGridColor("#EBECE4"); //嗯...就格線的顏色囉
D.Draw("#FCF6CF","#0000FF",false,"點我呀","DiagramClick()");
D.Draw(底色,框色,false,說明文字,click後呼叫的function名稱);

2.line
new Line(D.ScreenX(10), D.ScreenY(5), D.ScreenX(10), D.ScreenY(45), "#cc9966", 4, "tip");

3.dot
new Dot(D.ScreenX(10), D.ScreenY(45), 8, 5, "#000000");
//也可自行套圖
new Dot(x, D.ScreenY(0), Size, 'smile.gif', "", "Type: smile.gif, Size:"+Size);
4.box
範例:new Box(j-12, y, j+12, y0, "#0000FF", "v_blue.gif", "#FFFFFF", 1, "#000000");
說明:new Box(x1座標, y1座標,x2座標, y2座標, 研究中, "檔名", 研究中, 框粗, 框線色);

備註:當此chart是包在一個iframe時,除了此頁的js去畫面,如果用到parent的js來畫chart,也就是有兩個不同的網頁(1個自己,1個是parent網頁)可以來畫chart,這個時候,圖片的路徑就會跟著改變

還是直接看官方的說明比較快

星期三, 6月 25, 2008

CSS Hover在ie下無法顯示

在css裡設定hover在ie下總是無法正常顯示

  • 外掛做法
    這裡提供了csshover.htc可以解決
    主要的做法是在css裡,遇到hover改成用mouseover等改寫
    1. 下載csshover.htc
      Version 1.42.060206 (:hover and :active) download
    2. 設定path
      path: 就先放在同一資料夾吧
    3. 程式碼
      (1)在CSS裡
      已產生的dom可直接在css裡下
      body{
        behavior:url(csshover.htc)
      }

      (2)在JS裡
      動態產生的dom,因為放在css裡的已執行過,所以之後才產生的html tag似乎不會被改變,因此要javascript再跑一次
      if (document.all && /MSIE (5\.5|6)/.test(navigator.userAgent) 
        &&  document.styleSheets 
        && document.styleSheets[0] 
        && document.styleSheets[0].addRule)
      {
        document.styleSheets[0].addRule('*', 'behavior:url(csshover.htc)');  //csshover.htc的路徑
      }

    備註:
    動態再呼叫javascript跑csshover.htc似乎會造成程式花了很多時間改寫hover
    有建議將hover指定詳細 減少搜尋改寫hover的時間
    #menu li:hover ul { //指定li hover 再指出ul下
    ...
    }
  • 指定html版本
    其他方法
    據說設為W3C 4.01, ie就會乖乖聽話了
    在html檔裡,最前面加上以下字串
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    
Reference

html table常見問題

jQuery無法改table caption
當dom裡的caption是空白時,browser似乎會省略
導致後制的jQuery找不到caption
$('table caption').text('test'); <=無法出現test
因此得避免caption為空


table裡每列加form導致該td多一空白列
查半天都看不出為什麼那一列多出一個行空白
本以為是css設定問題
後來才發現在每個td利用form包一個input
就會造成該td多一個空白 可能是擠不下的關係 所以多出一列
氣死...平麼padding, margin全設了 還是不行
把form刪了就ok了

仿apple的滑動選單

很漂亮的滑動選單
http://jqueryfordesigners.com/slide-out-and-drawer-effect/



*在ie下無法正常顯示
由於此選單透過png做透明
但ie5,6下對png支援不好 所會出搥
不過已經有解決方案了
檔案:http://www.twinhelix.com/
說明:只改动CSS让IE6支持透明PNG

主要讀圖時透過twinhelix上提供的iepngfix.htc讀取就可以完成了

星期三, 6月 11, 2008

jquery radiobox取值,checkbox取值,radio選中,checkbox選中,select選中,及其相關

  • textbox
    $("#text").val();     //get
    $("#text").val("hi"); //set
  • radiobox
    • 取得被選中的值
      var item = $('input[name=items][@checked]').val();
      //or
      $('input[name=items]:checked').val();
    • 使第二個radiobox被選中 (無法用在checkbox上)
      $('input[name=items]').eq(1).checked = true; //法1
      $("input[type=radio]").eq(1).attr("checked",true); //法2
    • 觸發click事件
      $("input[type=radio]").eq(1).trigger('click');  
      
      //由於利用程式選中,並不會觸發click,所以結合兩者
      $("input[type=radio]").eq(1).attr("checked",true).trigger('click'); 
      
    • 取得多組 (:enabled, :disabled,:selected都同方法)
      $('input:checked').each(funciton(){
          ...
      });
      
      //:select 方法差不多,不過多個option
      $("select option:selected").each(function () {
           ...
      });
  • checkbox
    checkbox取值,給值
    alert($("#checkbox").attr("checked")); //是否勾選 true or false
    $("#checkbox").attr("checked",false);  //不打勾
    $("#checkbox").attr("checked",true);  //打勾

  • select
    $("#sel").attr("value",'-sel3');  //設置value=-sel3的項目為當前選中項
    $("11112222").appendTo("#sel");  //添加下拉框的option

事件
用click 觸發改變事件(用change 還得再點旁邊才會觸發)
//html
<input name="RadioName" value="hi">
//js
$("input[name='RadioName']").click(function(){
   $(this).val(); //即hi
});

References:

星期二, 6月 10, 2008

jQuery each迴圈中的continue及break

continue :return true;
break :return false;
也可以利用return即可跳出jQuery

星期五, 6月 06, 2008

td裡文字無法置中前面的圖片

明明對td設定了style="vertical-align:middle"
但就是沒辦法置中


氣到...又請出源大師出馬
果然幫我解決了
不過也不知原因...總之在img tag裡也加入style="vertical-align:middle"
就ok啦,原td的style甚至不用設定了

星期四, 6月 05, 2008

jQuery 套件

1.jQuery Treeview Plugin

jQuery有個project提供了Treeview plugin,看起來還不錯的樣子
Demo網址


用法
1.先下載pack,目前v3
2.方便測試,在demo檔案夾裡,新增一個html當自己的測試檔
3.打開demo檔案夾裡的index.html,看html碼直接把下列這幾行貼到自己的html裡
< link rel="stylesheet" href="../jquery.treeview.css">
< script src="../lib/jquery.js" type="text/javascript">
< script src="../lib/jquery.cookie.js" type="text/javascript">
< script src="../jquery.treeview.js" type="text/javascript">


4.demo.js是原本的javascript檔,可直接改這裡來測試,如果自己寫新的js的話,記得加上$("#browser").treeview();才會完整啟動treeview,不然會像下圖一樣

星期四, 5月 29, 2008

用PHP和MySQL保存和輸出圖片

//存blob格式
用PHP和MySQL保存和輸出圖片


//存文字格式
$data = fread(fopen($up_file, "r"), filesize($up_file));

1 fopen($up_file, "rb") 二進位讀檔。

2.放進資料庫前先編一下碼再放進去。
  $data =base64_encode($data);
輸出的時候請先用base64_decode()恢復二進位編碼再輪出。


//讀出二進位
print $bytes["RawData"];


remark============
1.存文字格式會使圖檔變大2,3倍
2.php會將轉傳的stream的最前頭加上3個byte (dom) //說明用UTF-8格式 ,尚不知如何去掉
就自己濾掉前3碼吧
if (responseBytes[0] == 0xEF) && (responseBytes[1] == 0xBB) && (responseBytes[2] == 0xBF)
3.有時候stream前面還會多0x20,一般來說是php tag的最前面有空白...所以一併傳進去了,導至多了一個空白

星期五, 5月 23, 2008

複製xml node至另一個xml document

同文件可用 (XmlNode)xmlnode.Clone()
不同文件得用 ImportNode
格式:ImportNode(XmlNode node,bool deep) //deep 要不要複製該node的子node
範例:
XmlNode newNode = xmldocument.ImportNode(xmlNode,true)
xmldocument.SelectSingleNode("//xxx").appendchild(newNode );


***注意***
在importNode時,常會先把本身的child node刪掉
再將加入新的
//1.先清除舊的
XmlNodeList oldNodes = xmlNode.SelectNodes("//AA").ChildNodes;
foreach (XmlNode oldNode in oldNodes )
xmlNode["AA"].RemoveChild(oldNode );

直覺沒問題,執行也沒問題
但不過AA的child有幾個,迴圈也只會執行一次
因為刪了一個node,該list就會少了一個
所以當迴圈再跑下一個時,其實已重讀該list
而第一個又為null,所以就執行一次就跳出迴圈了
以上純屬虛構...如有巧合....

不過真的只會執行一次,程式又沒錯
所以都不會發現
總之改用while,每次刪第一個就好了
while (xmlNode["AA"].ChildNodes.Count > 0) xmlNode["AA"].RemoveChild(xmlNode["AA"].ChildNodes[0]);

*後記
不知在耍什麼白痴
要清掉childenodes 為什麼要用這麼麻煩的方法
直接node.innerxml=""; 不就好了................

星期一, 4月 28, 2008

JavaScript觸發 select 的option

直接設定都會說「無法設定selected的內容」
氣到....請出智源大師解決了
原本下面這樣就可以了...但卻發現要先加個alert才會成功
document.getElementById("cmbCountry").selectedIndex=1;
document.getElementById("cmbCountry").fireEvent("onchange");

完整版...
也不知真正原因為何,原正就先設0..再設1就ok了
document.getElementById("cmbCountry").selectedIndex=0;
document.getElementById("cmbCountry").fireEvent("onchange");
document.getElementById("cmbCountry").selectedIndex=1;
document.getElementById("cmbCountry").fireEvent("onchange");

星期五, 4月 25, 2008

MySQL中的DATETIME, DATE和TIMESTAMP類型

DATE跟DATETIME就如字意上 只差TIME
而DATETIME跟TIMESTAMP是存相同的內容
網路上看的差別在
一個UPDATE設置一個列為它已經有的值,這將不引起TIMESTAMP列被更新

reference
DATETIME, DATE和TIMESTAMP類型