PHP實用類

1.分頁類

<?php

/////////////////////////////分頁類/////////////////////////////
/*
* 程序原做:北極星
* e_mail:[email protected]
* QQ:327553822
* 時間:2009.2.2
*調用方式:
*   $p  = new page($rows,12,6);
*   $p->page_set($_GET['page']);
*   $limit = $p->limit();
*   $p->page_show();
*顯示:
*   << < 1 2 3 4 5 6 7 > >>
*
*$page_gap_length-->當前頁到左右兩邊頁碼之間的間距
*/
class page
{
 private $row_per_page;   //每頁取出的記錄條數
 private $current_page;  //當前頁
 private $page_gap_length; //當前頁到左右兩邊頁碼之間的間距
 private $total_pages;  //總頁數
 private $pre_page;   //上一頁
 private $next_page;   //下一頁
 private $link_head;   //得到"page="之前的字符串
 
 public function page($total,$row_per_page=5,$page_gap_length=2)
 {
  $this->row_per_page  = $row_per_page;
  $this->page_gap_length = $page_gap_length;
  $this->total_pages  = ceil($total/$row_per_page);
  $this->parse_query();
 }
 
 public function parse_query()
 {  
  $arr  = explode("page=",$_SERVER['QUERY_STRING']); //分割
  $arr_left = $arr[0];
  if(empty($arr_left)){
   $this->link_head = $_SERVER['PHP_SELF']."?";
  } else {
   $arr_left = (substr($arr_left,-1) == "&") ? $arr_left: $arr_left."&";
   $this->link_head = $_SERVER['PHP_SELF']."?".$arr_left;
  }
 }
 /////////////////下拉列表方式,分頁跳轉//////////////
 public function page_sel()
 {
  if($this->total_pages <= 1){
   $sel = "";
  } else {
   $sel = "<select οnchange='window.location=this.value'>";
   for($i=1; $i<=$this->total_pages; $i++){
    $sel .= ($i == $this->current_page) ? "<option value='".$this->link_head."page=".$i."' selected>".$i."</option>" : "<option value='".$this->link_head."page=".$i."'>".$i."</option>";
   }
   $sel .= "</select>";
  }
  return $sel;
 }
 ////////////////////////由GET傳值$_GET['page'],確定當前頁、上一頁、下一頁////////////////////////
 public function page_set($current_page)
 {
  if(!is_numeric($current_page) || empty($current_page) || $current_page == 0){
   $this->current_page = 1;
  } else {
   $this->current_page = $current_page;
  }
   $this->next_page = ($this->total_pages <= ($this->current_page+1)) ? $this->total_pages : ($this->current_page+1);
   $this->pre_page  = ($this->current_page-1) < 1 ? 1 : ($this->current_page-1);
 }
 
 public function limit()
 {
  return ($this->current_page-1)*$this->row_per_page.",".$this->row_per_page;
 }
 public function page_show()
 {
   if(!empty($this->total_pages)){
  $page_list = "<a href='".$this->link_head."page=1' title='首頁'><<</a>&nbsp;";
  $page_list .= "<a href='".$this->link_head."page=".$this->pre_page."' title='上一頁'><</a>&nbsp;";
  $m = $this->current_page-$this->page_gap_length;
  $n = $this->current_page+$this->page_gap_length;
  $p = ($m <= 0) ? 1 : $m;
  $q = ($n >= $this->total_pages) ? $this->total_pages : $n;
  for( $i = $p; $i<=$q; $i++){
   $page_list .= "<a href='".$this->link_head."page=".$i."' title='第".$i."頁'>".$i."</a>&nbsp;";
  }

  $page_list .= "<a href='".$this->link_head."page=".$this->next_page."' title='下一頁'>></a>&nbsp;";
  $page_list .= "<a href='".$this->link_head."page=".$this->total_pages."' title='尾頁'>>></a>";
  $page_list  .= "&nbsp;&nbsp;&nbsp;".$this->page_sel();
  echo $page_list;
   }
 }
}
?>

 

2.字符串截取類

 

<?php

   

   //字符串處理函數
 /*
 *$str:要截取的字符串
 *$start:從哪裏開始截取
 *$len:截取長度
 */
function msubstr($str,$start,$len)//字符位置從0開始
{
 $strlen=$start+$len;
 for($i=0;$i<$strlen;$i++)
 {
  //如果讀取的是雙字節字符,則一次要讀取兩個字節的長度,否則,會出現意外情況
  if(ord(substr($str,$i,1))>0xa0)
  {
   $tmpstr.=substr($str,$i,2);
   $i++;
  }
  else{
 
   $tmpstr.=substr($str,$i,1);
  }

 }
 $tmpstr = (strlen($str) <= $len) ? $tmpstr : $tmpstr."...";
 
 return $tmpstr;
 
}

 

?>

 

3.表單類

<?php

 

   //////////////////////////表單類///////////////////////
class form
{
 private $action;
 private $method;
 private $enctype;
 private $id;
 private $name;
 private $sty; //表單樣式
 
 public function form($action="",$id="",$name="",$method="POST",$enctype="multipart/form-data",$sty="")
 {
  $this->action = $action;
  $this->method = $method;
  $this->enctype = $enctype;
  $this->id  = $id;
  $this->name  = $name;
  $this->sty  = $sty;
 }
 public function form_start()
 {
  echo "<form action='".$this->action."' method='".$this->method."' enctype='".$this->enctype."' style='".$sty."' id='".$this->id."' name='".$this->name."'>";
 }
 public function create_text($type,$name,$value,$sty="",$id="",$οnclick="javascript:void(0);")
 {
  $text = "<input type='".$type."' name='".$name."' value='".$value."' id='".$id."' style='".$sty."' οnclick='".$onclick."'>";
  echo $text;
 }
 public function create_textarea($name,$value,$sty="")
 {
  $textarea = "<textarea name='".$name."' style='".$sty."'>".$value."</textarea>";
  echo $textarea;
 }
 public function create_file($name,$sty="")
 {
  $file = "<input type='file' name='".$name."' style='".$sty."'>";
  echo $file;
 }
 public function create_sub($name,$value="提交",$sty="")
 {
  $sub = "<input type='submit' name='".$name."' value='".$value."' style='".$sty."'>";
  echo $sub;
 }
 public function form_end()
 {
  echo "</form>";
 }

}

 

?>

 

 4.文件上傳類

<?PHP

/*********************文件上傳類**********************/
/**
 *調用方法:
 *  $upload = new uploadfile($_FILES['pic']);
 * $upload->upload("pic");
 *
 */
class uploadfile
{
 private $root; //文件存放根目錄
 
 //文件類型
 private $typearr = array('pic'=>array(".jpg",".gif",".bmp",".png"),
          'txt'=>array(".txt",".doc",".xls",".ppt"),
          'rar'=>array(".rar",".zip")); 
       
 private $posarr = array(); //存放對應文件類型格式的數組
       
 private $filearr = array(); //存放上傳文件各項參數的數組
 
 //php5構造函數
 public function __construct(&$arr,$root="./file/")
 {
  $this->root  = $root;
  $this->filearr = $arr;
  if(!file_exists($this->root)){
   $this->_mkdir($this->root);
  }
 }
 //php4構造函數
 public function uploadfile(&$arr,$root="./file/")
 {
 
  $this->__construct(&$arr,$root="./file/"); 
 
 }
 
 //目錄創建
 public function _mkdir($root)
 {
  chmod($root,0777); //分配給目錄最大可能的訪問權
  mkdir($root); //創建目錄
 }
 
 //上傳文件
 public function upload($ftype = "pic")
 {
  
  foreach($this->typearr as $key => $va){
   if($ftype == $key){
    $this->posarr = $va; //將對應文件格式存放到數組$posarr中
    break;
   }
  }
  
  foreach($this->filearr as $key => $va){
   if(is_array($va)){
    foreach($this->filearr['error'] as $p => $error){
     //沒有錯誤發生
     if($error == UPLOAD_ERR_OK){
      $tmp_name = $this->filearr["tmp_name"][$p];
      $name  = $this->filearr["name"][$p];
      $pos  = strrchr($name,".");
      
      if(!in_array($pos,$this->posarr)){
       echo "<script language='javascript'>alert('你上傳的文件格式不對吧?^-^');history.go(-1);</script>";
       exit();
      }
      $rename = date("YmdHis").$p.$pos;
      $path = $this->root.$rename;
      move_uploaded_file($tmp_name,$path);
     }

    }
   } else {
    $tmp_name = $this->filearr['tmp_name'];
    $name  = $this->filearr['name'];
    $pos  = strrchr($name,".");
    if(!in_array($pos,$this->posarr)){
     echo "<script language='javascript'>alert('你上傳的文件格式不對吧?^-^');history.go(-1);</script>";
     exit();
    }
    $rename = date("YmdHis").$pos;
    $path = $this->root.$rename;
    move_uploaded_file($tmp_name,$path);
   }
   
  }
 }
 
}

?>

未完待續。。。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章