2012-03-12

解決「重複簽到」問題

實驗室網站簽到時,最令我擔心的就是「選錯實驗項目而簽到」,因為辛日期、時間將會覆蓋舊日期、時間,雖可調舊資料查閱,實非上策也!
上學期發生了數次,不修補一下程式,每次簽到總是充滿無限緊張,而往往一忙,意外就發生了。

今天思索、實作才發現並沒有「想像的困難」,大約一個半小時測試完成!
主要檢查該組任一組員資料庫中簽到欄位是否為空白,以一個 boolean 來代表。若空白則可簽到,非空白則提示「重複簽到」,且不寫入新時間。
若任一組員已簽到,則不可再使用全組簽到!

增補的部分如下。


--- omit ---
//確認是否重複簽到

String strsqlchk050="SELECT "+expnameup +" FROM "+ expclass+" WHERE name='"+teamname[0]+"'";
String strsqlchk051="SELECT "+expnameup +" FROM "+ expclass+" WHERE name='"+teamname[1]+"'";
String strsqlchk052="SELECT "+expnameup +" FROM "+ expclass+" WHERE name='"+teamname[2]+"'";
ResultSet rschk050=beanMysql.getResultSet(strsqlchk050);
ResultSet rschk051=beanMysql.getResultSet(strsqlchk051);
ResultSet rschk052=beanMysql.getResultSet(strsqlchk052);

boolean rschk=true;//尚未有資料
if(rschk050.next()){
    if(!rschk050.getString(1).equals(" ")){
        rschk=false;//該組第一人已經填有資料
    }
}
if(rschk051.next()){
    if(!rschk051.getString(1).equals(" ")){
        rschk=false;//該組第二人已經填有資料
    }
if(rschk052.next()){
    if(!rschk052.getString(1).equals(" ")){
        rschk=false;//該組第二人已經填有資料
    }
}


--- omit ---
if(asspw!=true || ipcheck!=true || rschk!=true){ //密碼、IP、重複簽到檢查
    --- omit ---
    }else if(rschk!=true){
        out.println("<br><center><h1>");    //第一位已簽到
        out.println("<font color=red> 重複簽到 </font></h1><hr>");
        out.println("<small> &lt; &lt; <a href='javascript:history.back()'>"+ "回到簽到頁 </a></small>");
        out.println("</center>");
    }
}
--- omit ---

沒有留言: