2012年9月10日 星期一

放手

送孩子去義大燕巢分部,是大一新生住宿報到,真見識到父母沒放手,大部分開車來,在報到處領推車推行李,幾乎父母在推,孩子則跟著走,感覺像幼稚園的小朋友,每看到一胎化的彼岸,我們也不相上下‧

義大醫院,地點較偏僻,不在人多的都會區,可能不賺錢,但造福了附近的居民,順道去看叔婆老人家,九年不見,75歲糖尿病,坐輪椅,由外傭照顧著,假日沒人回去陪伴,看到我們夫婦及老三,眼眶泛紅,眼裡訴說著孤單,他由義大照護,鄉下的確需要這類醫院,願衛生局能感受到城鄉的需要與差別‧

我感觸很深,雖主日天沒望彌撒,但也做了有意義的探望老人‧

2012年9月7日 星期五

專題整合製作注意事項

專題要繳的事項

專題名稱

 專題資料夾

database  例 x.sql   , y.sql

基本操作手冊 --   help.doc
                            1.安裝程序
                            2.專案放置位址和資料庫匯入
                            3.專案首頁啟動方法和基本流程操作
                           
安裝需要軟體和伺服器  wamp serve   Tomcat server  JRe1.6

系統架構圖   x.jpg


亂碼

這是雨宏的FB留言
今天遇到response.sendRedirect("goods.jsp?id="+strId+"&name="+strName); 其中strName為中文字串, 結果對方接到的是一串亂碼... 我參數接有用String(request.getParameter("name").getBytes("ISO-8859-1"), "utf-8"), 怎麼想都想不透...
回家前經阿志提醒, 要加urlencoder, 果然現在修改後就正常了~~ ^O^
response.sendRedirect("goods.jsp?id="+strId+"&name="+URLEncoder.encode(name,"UTF-8"));
解釋
使用两次编碼的過程相當

String name=java.net.URLEncoder.encode("测试", "UTF-8"); System.out.println(name); name=java.net.URLEncoder.encode(name,"UTF-8"); System.out.println(name); name=java.net.URLDecoder.decode(name, "UTF-8"); System.out.println(name); System.out.println(java.net.URLDecoder.decode(name, "UTF-8"));
复制代码

输出为:

            %E6%B5%8B%E8%AF%95
            %25E6%25B5%258B%25E8%25AF%2595
            %E6%B5%8B%E8%AF%95
            测试

第一次编码后将汉字编码为%和字母数字的格式,而第二次编码的时候是对%字母数字进行编码,虽然解码的时候使用的是ISO-8859-1,但是对于%和字母数字而言用ISO-8859-1和UTF-8解码出来的是一样的,此时就回到了汉字被编码过一次的字符串了,当再次进行解码的时候使用UTF-8就回将它转会汉字。

2012年9月6日 星期四

prev().attr('id') jquery example

為增加一列在sum row(#rs1) 之上 ,data row 之下,使用prev()找前一列的id 以便控制
。用id的編號做會員商品管理
var tr_id=$('#rs1').prev().attr('id');
        alert(tr_id);
        var i=0;
        if (tr_id=="rh") //記得need ""
        {
            i=1;
            alert("123");
        }
        else
        {
            i=tr_id.substring(2);
            i++;
        }

9/5進度記錄
$('#my_table > tbody > tr').eq(i-1).after(html);

以上為增加一列,eq()表示在第幾個tr







2012年9月4日 星期二

驗證

http://lzf0514.iteye.com/blog/724244
之前遍查不到validator的addMethod用法 官方的文件也不是說的很明白 由於我需要用正規化來做一些原本validator沒有的驗証規則

所以只能用addMethod的方法 大家可以參考下列的用法 用addMethod新增一個規則後 你可以自訂要針對這個規則所做出反應跟自訂錯誤訊息! 如果要套用這個規則,可以在html 元件中,加上class="自訂規則名" 即可套用了! 我研究的沒有很透徹啦..但可以用就好..
  1. < script type = " text/javascript " >
  2. $ ( document ) . ready ( function ( e )   {
  3. jQuery . validator . addMethod ( " test " , function (   value , element ) { //設增一個自訂規則test
  4. var   result = this . optional ( element ) || value . length >= 5 && / d / . test ( value ) && / [a-zA-Z] /i . test ( value ) ;
  5. //用正規化表示式去設定validator所沒有的驗証規則
  6. if ( ! result ){
  7.   element . value = "" ; //控制套用自訂規則的元件的程式碼可以在此設定
  8. }
  9. return   result ;
  10. } , " 自訂錯誤訊息.<br> " ) ;
  11. }) ;           
  12. < / script> <form> <input type="text" id="t1" class="test"> < / form >
  13. --------------------
  14. $(function ()
    {
        if (jQuery.validator)
        {
            //字母数字
            jQuery.validator.addMethod("alnum", function (value, element)
            {
                return this.optional(element) || /^[a-zA-Z0-9]+$/.test(value);
            }, "只能包括英文字母和数字");
            


            // 手机号码验证   
            jQuery.validator.addMethod("cellphone", function (value, element)
            {
                var length = value.length;
                return this.optional(element) || (length == 11 && /^(1\d{10})$/.test(value));
            }, "请正确填写手机号码");


            // 电话号码验证   
            jQuery.validator.addMethod("telephone", function (value, element)
            {
                var tel = /^(\d{3,4}-?)?\d{7,9}$/g;
                return this.optional(element) || (tel.test(value));
            }, "请正确填写电话号码");


            // 邮政编码验证
            jQuery.validator.addMethod("zipcode", function (value, element)
            {
                var tel = /^[0-9]{6}$/;
                return this.optional(element) || (tel.test(value));
            }, "请正确填写邮政编码");


            // 汉字
            jQuery.validator.addMethod("chcharacter", function (value, element)
            {
                var tel = /^[\u4e00-\u9fa5]+$/;
                return this.optional(element) || (tel.test(value));
            }, "请输入汉字");


            // 汉字
            jQuery.validator.addMethod("qq", function (value, element)
            {
                var tel = /^[1-9][0-9]{4,}$/;
                return this.optional(element) || (tel.test(value));
            }, "请输入正确的QQ");


            // 用户名
            jQuery.validator.addMethod("username", function (value, element)
            { 
                return this.optional(element) || /^[a-zA-Z][a-zA-Z0-9_]+$/.test(value);
            }, "用户名格式不正确");
        }
    });

jquery jsp y mysql 實作

相關設定
   mysql ---使用wamp
   tomcat---下載安裝
   java--j2se jdk
   jquery.js放網頁資料夾
  mysql-connector-java-3.0.17-ga-bin.jar
  mysql-connector-java-3.1.10-bin-g.jar
   以上兩jar檔放入C:\Program Files\Apache Software Foundation\Tomcat 5.5\common\lib

//C:\Program Files\Apache Software Foundation\Tomcat 5.5\webapps\ROOT\WEB-INF
用javabean smart--把WEB-INF copy到網頁資料夾,新增classes資料夾放入com-jspsmart-upload-File.class+Files.class+Request.class+SmartUpload.class+SmartUploadException.class
//

資料連結設定檔querydata.jsp code 如下

<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>
<%@page import="java.util.*"%>
<%!
 public String[][] querydatafun(String databasename,String strsql)
 {
  ResultSet rs=null;
  String[][] resultdata=null;

  try
  {
    Class.forName("org.gjt.mm.mysql.Driver");
  }
  catch(Exception e)
  {
   //out.print("資料庫驅動程式失敗");
  }

  try
  {
 Connection myconn=DriverManager.getConnection("jdbc:mysql://localhost/"+databasename+"?useUnicode=true&characterEncoding=utf-8","root","");
   
 Statement mysmt=myconn.createStatement();
 rs=mysmt.executeQuery(strsql);
 int fieldcount=rs.getMetaData().getColumnCount();
 //out.print("總欄位數:"+fieldcount+"<p>");
 for(int i=0;i<fieldcount;i++)
 {
   //out.print(rs.getMetaData().getColumnName(i+1)+"<p>");
 }
 rs.first();
 rs.last();
 int rowcount=rs.getRow();
 //out.print("總記錄數:"+rowcount+"<p>");

 if(rowcount==0)
 {
resultdata=new String[0][0];
 }
 else
 {
   resultdata=new String[rowcount][fieldcount];
   rs.beforeFirst();

   int j=0;
   while(rs.next())
   {
 for(int i=0;i<fieldcount;i++)
 {
resultdata[j][i]=rs.getString(i+1);
 }
 j++;
   }
   rs.close();
        myconn.close();
 }
  }
  catch(SQLException er)
  {
     //out.print("資料庫管理系統無法啟動");
  }

  return resultdata;
 }
%>
資料送入檔jtestdata.jsp code 如下


<%@ page contentType="text/html; charset=utf-8" language="java" import="java.sql.*" errorPage="" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<%@include file="jtestdata.jsp"%>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>
</head>
<script type="text/javascript"  src="./jquery.js"></script>
<script language="javascript" type="text/javascript" >
$(document).ready(function()
{
 var htmlstr2= 
 var table=document.getElementById("tb1");
 $("table img").mousedown(function()
 {
  
  var item_no=$(this).attr('id');//編號
  var altstr=$(this).attr('alt');
  var n=altstr.indexOf(",");
  var storena=altstr.substring(0,n);//商家名
  var itemstr=$(this).attr('title');
  n=itemstr.indexOf(":");
   var item_na=itemstr.substring(0,n);//商品名
  var price=itemstr.substring(n+1,n+3);//單價
  
  var htmlstr1='<table width="300" border="2"><tr><td width="180" >編號:'+item_no+'</td><td width="120" >商家:'+storena+'</td></tr><tr><td>商品:'+item_na+'</td><td>單價:'+price+'</td></tr><tr><td>數量:<input type="text" id="qty" size="8"/></td><td ><input type="button" id="bt1" value="確定" /></td></tr></table>';
    $('#div1').html(htmlstr1);
               

  
  
 });
 
});
</script>
<body>
 <table id="tb1" width="100%" height="100%" border="1" align="center" cellspacing="1" >
<% for(int i=0;i<4;i++){ %>
    <tr><% for(int j=1;j<6;j++){
  int s=j+i*5; String mtr=Menu_item[s];
  //out.print(mtr);
  //out.print(s);
  String k=store_no+"_"+s;%> 
    <td width="140" height="120" align="center" >
    <a href="javascript:;">
    <img id="<%=k%>" src="./pic/<%=k%>.jpg" width="100" height="60" title="<%=mtr%>元" border="1" alt="<%=store_na+","+k%>"/>
    </a></td> <% } %>
 </tr> <% } %> 
 </table> 
 <div id="div1">
 </div>
 <div id="div2">
 <table id=""
 </div>
</body>
</html>



以上只做到按產品圖跑出table以便輸入定購數量
//http://www.9lessons.info/2008/09/jsp-login-page-to-connect-mysql-atabase.html
//http://ithelp.ithome.com.tw/question/10033993

實作(1)

1.資料庫規化
databasename:lunch
table:
 基本資料表  
    class_n: 班級 名稱
                   field:no,班級編號,班級名稱
       store:商家名稱
                   field:no,商家名稱,商家編號,電話住址
      menu:菜單
                   field:id,store,item,menu_no,price
     menber:學員名冊
         id,seat_no,name,gender,job,tel,email,address,interest1,interest2,remark,create_date,password
     master:控管人員
        ID,username,password,班級編號
交易變動檔
    order:記錄檔
         lo_id,class_seat_no,lo_store_no,lo_item_no,price,lo_qnt,lo_date,like,paid
以上須定欄位長度,型别,主key,編碼
        like field to control menber's selected record 
        paid to contro paid or not

2.網頁架構
index----前台---瀏覽商品
                       定購商品 ---會員登入
           
                                       --- 非會員
            後台---會員管理
                       商家管理
                       商品管理
                       優會通告管理
                       客訴管理



規畫(1)


 Td:id編號方式:tb2t11-t15,t21-t25,t31-t35,t41-t45
.照片編號及品名編號:menu.(store_no+_+menu_no)
Title值:menu.(store_no+_+menu_no+”,”+menu.item+”,”menu.price+””)
Img.mousedown
1.下方跑出訂購單
2.填好數量,按確認後送到餐車
3.再送入交易檔

訂購單
編號:
品名編號
商家:
button.value
品名:
title
單價
title
數量:
由客戶填
總價:
單價*數量
確認
餐車
編號
商家
品名
單價
數量
總價
取消














送出訂單

data[i][j]
Td:id編號方式:tb2t11-t15,t21-t25,t31-t35,t41-t45
table id="tb2"
   <td id="t11" width="140" height="120" align="center" ><a href="javascript:;"><img id="1001_1" src="pic/1001_1.jpg" width="100" height="60" title="香雞排飯55" border="1" alt="品名編號1001_1"/></a></td>

2012年9月1日 星期六

挫折

讀書的時候要思考書籍內容的合理性與邏輯性.
透過「寫作」來整理觀念,目的就在於「強迫思考」,要能寫出有料的東西一定是經過深思熟慮的,自己思考、辯證過的東西一定比你光看書還能深刻記憶,過程即便辛苦,但內心感受踏實‧
這是我在尋找資料時,看到的一句話,曾幾何時,我讀書時已淪為流覽而不太思考‧被說程度不夠不要寫太大的程式‧心中很不服氣,難道因年紀大,記憶力減退,比別人花更多時間去探討,卻事半功倍,而無法實現想要完成的議題‧絕不放棄,即使成為結訓後的家庭作業,也要去克服‧