2012年2月29日 星期三

Bundle類別

此類別可以保存Activity(活動)上一次關閉(Stop)時的狀態。
可以透過載「onStop」方法(與「onCreate」方法的作用類似)來保存關閉前的狀態。

當程式啟動(Activity重新初始化)時,會再次呼叫「onCreate」方法,我們就能從「SavedInstanceState」中得到次一次凍結的狀態。
我們也可以透過「Bundle」來將這個Activity的內容傳到下一個Activity中

2012年2月22日 星期三

2012年2月21日 星期二

JavaScript 讀取 Cookie 值

讀取cookie的value
Function GetCookie(name) {
var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
if(arr != null) return unescape(arr[2]); return null;
}

------------
&&判斷值是否為null

if(value!=null)
  alert('gg');

引用網址

HTML 跳轉頁面 轉頁

進入index.html,不需要點選任何連結就可以自動跳到t_login.php

語法如下
content是秒數(這邊是設定不需要等待就直接跳轉)
url後面是連結網址

index.html的內容:

位置放在 html的head




2012年2月20日 星期一

android 簡單介紹


Android作業系統最初由Andy Rubin創辦,之後被Google併購,目前由Google和硬體製造商及電信運營商組成開放手持設備聯盟開發。

Android以Linux為核心,系統程式包含了 C 語言的標準函式庫,但應用程式主要以Java語言(類似J2ME)在Dalvik VM虛擬機器執行,跨平台(Windows、Mac、Linux)的開發環境齊備,應用程式開發環境以Eclipse為主,加上 Android Development Tools (ADT) Plugin,模擬器(Emulator)、開發工具、SDK等皆可免費下載取得。

google為主要的發佈版本給予一個糕點名稱。
版本:

4.1.x Jelly Bean 雷根糖
16 2012年6月28日

4.0 冰淇淋三明治
14-15 2011年10月19日

3.x.x 蜂巢
11-13 2011年2月2日, 3.0

2.3.x 薑餅
9-10

2.2 凍酸奶
8


2.1 閃電泡芙
7 2009年10月26日,2.0

1.6 甜甜圈
4

1.5 紙杯蛋糕
3

2012年2月19日 星期日

phpExcel


include_once("XXX/phpexcel/PHPExcel/IOFactory.php");
 

 
 $colum=2;
 $num=count($sss);
 $objExcel=new PHPExcel();
 $objExcel->setActiveSheetIndex(0);
 $sheet=$objExcel->getActiveSheet();
  
 for($i=0;$i<$num;$i++){
  //if($data[$i]['enable']==0) continue; #因為sql裡面排除不了enable為0的,所以做此處理
  
  $sheet->setCellValueByColumnAndRow(0,$colum,$sss[$i]['Name']);
  $sheet->setCellValueByColumnAndRow(1,$colum,$sss[$i]['ID']);           
  $sheet->setCellValueByColumnAndRow(2,$colum,$sss[$i]['Time']);
  $sheet->setCellValueByColumnAndRow(3,$colum,$sss[$i]['eTime']); 
  $colum++;
 }

  $path=t_PATH."download/";
  $path="../download/";
//2003
  $objExcel=PHPExcel_IOFactory::createWriter($objExcel,'Excel5'); //針對2003的版本
  $filePath=$path."commodity.xls";     //注意副檔名
// Export to Excel2007 (.xlsx) 匯出成2007
  $objExcel=PHPExcel_IOFactory::createWriter($objExcel,'Excel2007'); //針對2003的版本
  $filePath=$path."commodity.xlsx";    //注意副檔名


  $objExcel->save($filePath);
  
  dl_file($filePath); //此功能應該要和save分開處理,避免產生錯誤

另一個主題:讓phpexcel只讀取column的文字,不會讀取其他的 字體設定,顏色設定。

錯誤碼:Cannot use object of type PHPExcel_RichText

原因:去抓 陣列裡的 PHPExcel_RichText ,要抓出我的的文字而不是字體之類的,就產生了錯誤。
$reader->setReadDataOnly(true);

在20120313時需要寫入大量的資料,遇到疑似記憶體不足,但沒顯示任何錯誤,抓bug抓了老半天,始終抓不到。
解法:放在程式最前面
ini_set( "memory_limit", "56M");


設定欄寬範例 : $sheet->getColumnDimension("A")->setWidth(50); //設定欄冠

2012年2月15日 星期三

javascript 抓取name的內容

情況:
有些許情況下使用document . getElementByname 會抓不到資料。
我在猜有可能是太多form之下,需要指定form才能正確使用。

副程式:


focus( ) method

把注目移到想要的地方。
 
checkbox

  function doOutput()
  {
        var obj=document.getElementsByName("checkbox");
        var len = obj.length;
        var checked = false;

        for (i = 0; i < len; i++)
        {
            if (obj[i].checked == true)
            {
                checked = true;
                break;
            }
        } 
        alert(checked);
  };
form 上傳檔案 加enctype
  

上傳圖片及PHP處理

處理端(接收來自form,並加以處理):
情境:多張圖片上傳


//解晰圖片
$image_type=getimagesize($_FILES['x'.$im]['tmp_name']);

switch ($image_type[2]){
    case "1"://gif
  $src = imagecreatefromgif($_FILES['x'.$im]['tmp_name']);
    break;
    case "2": //jpg
  $src = imagecreatefromjpeg($_FILES['x'.$im]['tmp_name']);
    break;
    case "3":
         $src=imagecreatefrompng($_FILES['x'.$im]['tmp_name']);
    break;
    default:
         echo '
ERROR!!請通知系統人員。
';       
  exit;
 }
壓縮圖檔1:
$file_name   = $_FILES['image'.$im]['name'];
  $src_w   = imagesx($src);
  $src_h   = imagesy($src);
     
  if($src_w > $src_h){
  $thumb_w = 150;
  $thumb_h = intval($src_h / $src_w * 150);
  }else{
  $thumb_h = 110;
  $thumb_w = intval($src_w / $src_h * 110);
  }
壓縮圖檔2:
// 建立縮圖
    $thumb = imagecreatetruecolor($thumb_w, $thumb_h);
    // 開始縮圖
    imagecopyresampled($thumb, $src, 0, 0, 0, 0, $thumb_w, $thumb_h, $src_w, $src_h);
    // 假設要長寬不超過90
    // 複製上傳圖片到指定 images 目錄
  
    $number   = strrpos($file_name,".");
    $orig_name  = substr($file_name,0,$number);
    $sub_file_name  = substr($file_name,$number+1);
    $new_file_name  = time()."_".$num.".".$sub_file_name;
    $dest_filename  = $upload_dir.$new_file_name;
       
    $sql="插入db所需要的資料";
       
    mysql_query($sql);
    $r=mysql_affected_rows();
圖檔儲存在伺服器

if($r>0) {
  switch ($image_type[2]){
     case "1"://gif
   imagegif($thumb, 'path'.$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
     case "2": //jpg
   imagejpeg($thumb, "path".$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
     case "3": //png
   imagepng($thumb, "path".$dest_filename);
   copy($_FILES['image'.$im]['tmp_name'], "../images/upload/" .$dest_filename);
     break;
   }
       
    }


form 的元素: enctype='multipart/form-data'
列出上傳的檔案資訊:
print_r($_FILES)
上傳多個標檔案--例子:
科目<input type='file' name='con_subject[]'><br>
                                    科目<input type='file' name='con_subject[]'><br>
                                    科目<input type='file' name='con_subject[]'><br>

接收端 第一個檔案: $_FILES['con_subject']['name'][0]
解釋:
getimagesize
imagecreatefromgif
imagepng

2012年2月8日 星期三

檔案下載

使用的下載方式是跳出下載的方塊而不是瀏覽。
副程式:
//First, see if the file exists
   if (!is_file($file)) { die("404 File not found!"); }

   //Gather relevent info about file
   $len = filesize($file);
   $filename = basename($file);
   $file_extension = strtolower(substr(strrchr($filename,"."),1));
 /*
找了一下檔案下載的程式,在 EcStart 看到這個 Function,用它下載檔案的話,都會以
「下載」的方式呈現,而不是直接在瀏覽器開啟檔案。
http://my-web-design.blogspot.com/2010/08/php.html#links
 */
 
   //This will set the Content-Type to the appropriate setting for the file
   
  switch( $file_extension ) {
     case "pdf": $ctype="application/pdf"; break;
     case "exe": $ctype="application/octet-stream"; break;
     case "zip": $ctype="application/zip"; break;
     case "doc": $ctype="application/msword"; break;
     case "xls": $ctype="application/vnd.ms-excel"; break;
     case "ppt": $ctype="application/vnd.ms-powerpoint"; break;
     case "gif": $ctype="image/gif"; break;
     case "png": $ctype="image/png"; break;
     case "jpeg":
     case "jpg": $ctype="image/jpg"; break;
     case "mp3": $ctype="audio/mpeg"; break;
     case "wav": $ctype="audio/x-wav"; break;
     case "mpeg":
     case "mpg":
     case "mpe": $ctype="video/mpeg"; break;
     case "mov": $ctype="video/quicktime"; break;
     case "avi": $ctype="video/x-msvideo"; break;
     case "txt": $ctype="text/plain"; break;

     //The following are for extensions that shouldn't be downloaded (sensitive stuff, like php files)
     case "php":
     case "htm":
     case "html":die("Cannot be used for ". $file_extension ." files!"); break;

     default: $ctype="application/force-download";
   }

   //Begin writing headers
   header("Pragma: public");
   header("Expires: 0");
   header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
   header("Cache-Control: public");
   header("Content-Description: File Transfer");
  
   //Use the switch-generated Content-Type
   header("Content-Type: $ctype");

   //Force the download
   $header="Content-Disposition: attachment; filename=".$filename.";";
   header($header );
   header("Content-Transfer-Encoding: binary");
   header("Content-Length: ".$len);
   @readfile($file);
   exit;


2012.10.
下載檔名中有中文 產生亂碼,解法:
mb_convert_encoding($chineseFile,"BIG-5","UTF-8"); 
您可能有興趣的書單:
  1. 培養與鍛鍊程式設計的邏輯腦:世界級程式設計大賽的知識、心得與解題分享
  2. Android 4.X手機/平板電腦程式設計入門、應用到精通(第二版--適用Android 1.X~4.X)(附光碟)

2012年2月7日 星期二

PHP陣列

語法:array array(mixed...])

參數mixed的語法為"key=>value",多個參數mixed用逗號分開

如果省略了索引,會自動產生從0開始的整數索引


範例:
$array=array("ASP","PHP","JSP");
$rray[]="ASP",$rray[]="PHP",$rray[]="JSP"
$array3=array("a"=>"books","b"=>"apple","c"=>"orig")


array_search :在陣列中尋找指定的值, 傳回值true/false
語法:mixed array_search(mixed needle,array haystack[,bool strict])

搜尋陣列中是否有8這個數字。
array_search('8',$array);


1.explode():此函式可以將字串分割為陣列儲存,類似切token的方式,若以下列程式碼為例:
$student="kevin susan james";
$stuednt_array=explode(" ",$student);
foreach($stuednt_array as $index => $value)
echo "student $index is: $value\n";

則結果為:
student 0 is: kevin
student 1 is: susan
student 2 is: james

2.implode():此函式可以將陣列合併為字串儲存,若以下列程式碼為例:
$stuednt_array = array(kevin, susan, james);
$student = implode(",", $stuednt_array);
echo $student

把$_POST 的資料用成$key=>$value 的方式,不用在自己轉換成變數,減少很多麻煩。

$_POST = array_map('trim', $_POST);


foreach($_POST as $key => $value) {
${'post_' . $key} = mysql_real_escape_string($value);
}

輸出就是 $post_key的方式丟出來

on duplicate key update (pk key 不存在,新增資料;有重覆值採用更新)

使用此指令需要 MYSQL版本5.0以上。
官網資料:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html
範例:INSERT INTO table (a,b,c) VALUES (1,2,3) ON DUPLICATE KEY UPDATE c=c+1;
假設unique 為a欄位:
資料 INSERT INTO table (a,b,c) VALUES values(1,2,3) ON DUPLICATE KEY UPDATE c=c+1; 會更新c=c+1
資料 INSERT INTO table (a,b,c) values(2,2,3) ON DUPLICATE KEY UPDATE c=c+1;會新增資料(2,2,3)



2012年2月3日 星期五

date 日期格式化

阿都仔的日期表示方式多以: 日/月/年
英文裡的數,可以分為「基數」(one、two、three)與「序數」(第一first、第二second、第三third)
日期表示:
  • 1號、11號、21號、31號  英文 => 1st, 11st, 21st, 31st (數字後面加 st)
  • 2號、12號、22號 英文 = 2nd, 12nd, 22nd (數字後面加 nd)
  • 3號、13號、23號 英文 = 3rd, 13rd, 23rd (數字後面加 rd )
  • 其他的後面(4~9)加 "th" 就符合規則了如=> 19th, 24th, 8th



MYSQL
取得現在時間---------------
select DATE_FORMAT(NOW(),'%H:%s, %D %b., %Y')==> 09:01, 2nd Feb., 2012

符合 rfc822
$date=gmdate("D, d M Y H:i:s", $this->unix);
DATE_FORMAT(time,'%a, %d %b %y %k:%i:%s +0000')

PHP
取得現在時間---------------
echo date("Y/m/d H:i",time()); //其結果為2010/03/24 14:32
echo date("H:i,jS D.,Y"); //結果:11:38,6th Mon.,2012

PHP:
d - 幾日,兩位數字,若不足二位則前面補零; 如: "01" 至 "31"
j - 幾日,兩位數字,若不足二位不補零; 如: "1" 至 "31"
D - 星期幾,三個英文字母; 如: "Fri"
l - 星期幾,英文全名; 如: "Friday"
F - 月份,英文全名; 如: "January"
Y - 年份,四位數字; 如: "1999"
y - 年份,二位數字; 如: "99"
h - 12 時制的小時; 如: "01" 至 "12"
H - 24 時制的小時; 如: "00" 至 "23"
g - 12 時制的小時,不足二位不補零; 如: "1" 至 12"
G - 24 時制的小時,不足二位不補零; 如: "0" 至 "23"
i - 分鐘; 如: "00" 至 "59"
m - 月份,兩位數字,若不足二位則在前面補零; 如: "01" 至 "12"
n - 月份,兩位數字,若不足二位則不補零; 如: "1" 至 "12"
M - 月份,三個英文字母; 如: "Jan"
s - 秒數; 如: "00" 至 "59"
S - 字尾加英文序數,二個英文字母; 如: "th","nd"
t - 指定月份的天數; 如: "28" 至 "31"
U - 總秒數
w - 數字型的星期幾,如: "0" (星期日) 至 "6" (星期六)
z - 一年中的第幾天; 如: "0" 至 "365"

date('U',time())


主要是將文字日期改為Unix時間戳記

$ThisDay = '2008-01-01';
$ThisDay = strtotime($ThisDay); // 將日期轉為Unix時間戳記
echo date("Y-m-d",strtotime("now",$ThisDay)). "\n";
//顯示2008-01-01
echo date("Y-m-d",strtotime("+1 day",$ThisDay)). "\n";
//顯示2008-01-02
echo date("Y-m-d",strtotime("+1 week",$ThisDay)). "\n";
//顯示2008-01-08
echo date("Y-m-d",strtotime("+1 week 2 days 4 hours 2 seconds",$ThisDay)). "\n";
//顯示2008-01-10
echo date("Y-m-d",strtotime("next Thursday",$ThisDay)). "\n";
//顯示2008-01-03
echo date("Y-m-d",strtotime("last Monday",$ThisDay)). "\n";
//顯示2007-12-31
以上範例會有1970的問題
使用 date_default_timezone_set('UTC'); 可以解決
日期:2012-01-13 00:56:35
date("Y-m-d 00:00:00",strtotime("-1 week"))  //往前推七天 2012-01-06 00:00:00 


date('U',time()); 獲得現在的秒數

mktime(hour,minute,second,month,day,year,is_dst)
範例:今天往後算一個月的日子
$years  = date("Y");     
$months = date("m");     
$days  = date("d");     
$day  = date("Y-m-d",mktime(0,0,0,$months+1,$days,$years));

只有 小時與分鐘,所以mysql 的 unix_timestamp 不能用。

找出 開始與結束時間是否是一樣的

$ss_start=($_sHour * 60 + $_sMinute)*60; //秒
$ss_end=($_eHour * 60 + $_eMinute)*60; //秒

$sql="select * from `XXX` where TIME_TO_SEC( `start`)='$ss_start' and TIME_TO_SEC(`end`)='$ss_end' and auto='{$auto_id}'";

2012年2月1日 星期三

change(下拉式選單)



圖示: