生成下拉框、複選、單選框的幾個類,支援資料庫結果集生成 (轉)

worldblog發表於2007-08-17
生成下拉框、複選、單選框的幾個類,支援資料庫結果集生成 (轉)[@more@]


ob_start();
/* 
* Copyright (c) NightKids  weidewang@magus-soft.com> 
* All rights reserved. 
*
* Redistribution and use in and binary forms, with or without 
* modification, are petted provided that the following conditions 
* are met: 
* 1. Redistributions of source code must retain the above copyright 
*  notice, this list of conditions and the following disclaimer. 
 * 2. Redistributions in binary fomust reproduce the above copyright 
 *  notice, this list of conditions and the following disclaimer in the 
 *  documentation and/or other materials provided with the distribution. 
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND 
 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE 
 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 
 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 
 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 
 * SUCH DAMAGE.
  */ 
#生成下拉框、複選、單選框的幾個類,支援結果集生成
/*************************************************************************************************************
*  The PHP File Create By NightKids
*  :weidewang@magus-soft.com
*  主頁:
*  作者:NightKids
*


*  最後修改時間:2003-07-27  10:45:05
*
*  宣告:任何個人或團體可以任意修改、傳播程式碼、可以用於任何場所(造成的任何損失或糾紛與本人無關)。
*  如果有什麼好的建議和意見請與我聯絡。
*  請你在使用或傳播是請保留這段註釋,尊重本人的勞動成果。謝謝!!
*
*  感謝:所有身邊的朋友、所有支援我的人們。
*  所有無私提供資料的網友和朋友們。所有 PHP 支持者 !

*
*  開發環境:Free5.1+/2.0.47+PHP 5.0.1B+ Engine v2.0.0+My 4.1.14+Zend Optimizer v2.1.0

*  要求:
*************************************************************************************************************/
//=========== html 下拉欄 類
//根據一個陣列生成一個下拉框
//功能:可以初始化為選中其中的一項,預設為第一項
/*
下拉框:
選項: option
選中的: selected
名字: name
ID: id
樣式: class
專案標籤:
標籤值:
*/
//----------------------------------------------------------------------------------------
/*
$c=_connect();
mysql_select_db("felonious",$dbc);//連線資料庫
$q=mysql_query("select * from felonious",$dbc);//進行資料庫操作
while($row=mysql_fetch_array($q))
{
 $rows[]=$row;
}

$Item=array("NULL"=>"沒有可選項","1"=>"ffff","2"=>"aaaaaaa");
$selected=array("10","15","20"); //單選時,第一個元素有效
$ds = new CxSelectDown();
$ds->dbitem=true;
$ds->itemvalue="auto_id"; //項的值,資料表裡的欄位名
$ds->itemlable="felonious";//項的標籤,資料表裡的欄位名
$ds->multiple=false;
$ds->SetName("Test");
$ds->SetStyle("ClassName");
$ds->SetID("test");
$ds->SetDir("right");
$ds->SetAccKey("b");
$ds->SetDisabled(false);
$ds->SetSize(0);
$ds->SetItem($rows,$selected);
echo $ds->show();
//---------------------------------------------------------------------------------------
最簡單用法
$ds = new CxSelectDown();
$ds->SetItem($Item);
echo $ds->show();
//----------------------------------------------------------------------------------------
根據從資料庫取得的 row 生成一個下拉框
方法:
 Setitem 設定專案資料 引數 $rows 專案陣列,$selected 當前選中的專案 該值為專案的 value 或陣列(在multiple時)
屬性:
dbitem [true/false] default false
itemvalue 專案的值,只有 dbitem 是 true 時有效
itemlable 專案的標籤,只有 dbitem 是 true 時有效
如果 dbitem 為 true 時 方法 Setitem 的資料必須為 用 mysql_fetch_array 取的資料
否則 陣列結構為 $Item=array("NULL"=>"沒有可選項","1"=>"ffff","2"=>"aaaaaaa","value"=>"lable");
*/
class CxSelectDown
{
//=========================
//  值  標籤
var $_NullItem=array("NULL"=>"沒有可選項");
var $_Item=array();
var $_Selected=NULL;
//=========================
var $name=NULL;
var $id=NULL;
var $dir=NULL;
var $accesskey=NULL;
var $disabled=NULL;
var $size=NULL;
var $action=NULL;//其他操作 onChange ....
//=========================
var $dbitem=false; //如果是從資料庫取得的陣列還要設定下面幾個引數
var $itemvalue; //項的值
var $itemlable;//項的標籤
var $multiple=false; //多選,列表框
//=========================
function CxSelectDown()
{
 
}
//=========================
function SetItem($item=NULL,$selected=NULL){
 if(!empty($item))
 $this->_Item=$item;
 else
 $this->_Item=$this->_NullItem; 

 $this->_Selected=$selected;

 if($this->dbitem==true) //是直接從資料庫 $item[]=$row 形式取得的陣列
 $this->_Item=$this->ConvItem($item); //轉換陣列

}
//=========================
function ConvItem($item){
 $value=$this->itemvalue;
 $lable=$this->itemlable;
 for ($i=0;$i $key=$item[$i][$value];
 $var=$item[$i][$lable];
 $ttrow[$key]=$var;
 }
 return $ttrow;
}
//=========================
function show(){
 
 $itemStart=$this->GetItemHead();
 $itemBody=$this->GetItemBody();
 $itemEnd=$this->GetItemFoot();
 $item=$itemStart.$itemBody.$itemEnd;
 return $item;
}
function GetItemBody(){
 $item=$this->_Item;
 $selected=$this->_Selected;
 );
 while(@list($value,$lable)=@each($item)){
 $isselected=NULL;
 if($this->multiple==true){
 //多選處理
 for ($i=0;$i<=$selectednum-1;$i++){
 if($value==$selected[$i]){
 $isselected="selected"; 
 }
 }
 }
 else{
 //單選處理
 if($value==$selected) $isselected="selected"; 
 } 
 $itemStr.="  "; 
 }
 return $itemStr;
}
function GetItemHead() {
 $name=$this->GetName();
 $id=$this->GetID();
 $dir=$this->GetDir();
 $accesskey=$this->GetAccKey();
 $disabled=$this->GetDisabled();
 $size=$this->GetSize();
 $action=$this->GetAction();
 if($this->multiple==true)
 { $multiple=" multiple "; }
 $itemStart=" ";
 return $itemEnd;
}
//=========================
function SetAction($action){
 $this->action=" $action ";
}
function GetAction(){
 return $this->action." ";
}
function SetName($Name){ 
 $this->name=' name="'.$Name.'"';
 if($this->multiple==true)
 $this->name=' name="'.$Name.'[]"';
}
function GetName(){ return $this->name." ";}
//=========================
function SetID($ID){ $this->id=' id="'.$ID.'"';}
function GetID()
{ return $this->id." ";}
//=========================
function SetDir($Dir){ 
 );
 switch ($Dir){
  case "left":
 $this->dir=" dir="rtl"";
  break;
 case "right":
 $this->dir=" dir="ltr"";
  break;
 }
}
function GetDir(){ return $this->dir." ";}
//=========================
function SetAccKey($key)
{ $this->accesskey=' accesskey="'.$key.'"';}
function GetAcckey(){ return $this->accesskey." ";}
//=========================
function SetDisabled($disabled){ if($disabled==true) $this->disabled=" disabled"; }
function GetDisabled(){ return $this->disabled." ";}
//=========================
function SetSize($size){ $this->Size=' size="'.$size.'"';}
function GetSize(){ return $this->Size." ";}
//=========================
}
//=============================
//=============================
//=============================
/*
#ClassName z99radio
#@ Create By Night
#@ 2003-07-28
#生成一個單選組
方法:
- SetName 設定名字
- SetItem 設定資料 (二維陣列,選中的ID)
- ReturnString 直接返回字串
- ReturnArray 返回一個一維陣列
- Show ReturnString 的別名
*/
//=============================
/*
#例子:
$rs=new z99radio();
$item=array("-1"=>"保密","1"=>"男","2"=>"女");
$rs->SetName("sex");
$rs->SetItem($item,1);
echo $rs->ReturnString();
$rs->RetuanArray();
*/
//=============================
class z99radio{
 var $name=NULL;
 var $Item=array();
 var $Selected=NULL;
 var $RadioArray=array();
 var $RadioString=NULL;
 var $Action=NULL;
//=============================
function z99radio(){}
//=============================
function SetName($name){$this->name=$name;}
function GetName(){ return $this->name;}
function SetAction($action){$this->Action=$action;}
function GetAction(){return $this->Action;}
function SetItem($Item,$Selected=NULL){
 $this->Item=$Item;
 $this->Selected=$Selected;
}
#名字只要一個
#值和標籤是一個二維陣列
#格式 array("value"=>"label");
function Radio(){
 $name=$this->GetName();
 $item=$this->Item;
 $selected=$this->Selected;
 $action=$this->Action;
 $i=0;
 while (list($value,$label)=each($item)){
 $isSelected=NULL;

 if($value==$selected) $isSelected="checked";
 $idName=$name."_".$i;
 $Radio[]=" "; 
 $i++;
 } 
 return $Radio;
}
//=============================
function RetuanArray(){
 return $this->Radio();
}
function ReturnString(){
 $Radios=$this->Radio();
 $Radiount=count($Radios);
 $TmpStr=NULL;
 for($i=0;$i<=$RadiosCount-1;$i++){
 $TmpStr.=$Radios[$i];
 } 
 return $TmpStr;
}
function Show(){
 return $this->ReturnString();
}
//=============================
}//z99Radio Class THE END
//=============================
//=============================
/*
#ClassName z99CheckBox
#@ Create By Night
#@ 2003-07-28
#生成一個複選組
方法:
- SetName 設定名字
- SetItem 設定資料 (二維陣列,選中的ID一維陣列)
- ReturnString 直接返回字串
- ReturnArray 返回一個一維陣列
- Show ReturnString 的別名
*/
//=============================
/*
#例子
$rs=new z99CheckBox();
$item=array("-1"=>"保密","1"=>"男","2"=>"女");
$selected=array("2","-1");
$rs->SetName("sex");
$rs->SetItem($item,$selected);
$rs->CheckBox();
echo $rs->Show();
*/
//=============================
class z99CheckBox{
 var $name=NULL;
 var $Item=array();
 var $Selected=array();
 var $CheckArray=array();
 var $CheckString=NULL;
 var $Action=NULL;
 var $dbitem=false;
 var $itemvalue;
 var $itemlable;
//=============================
function z99CheckBox(){}
//=============================
function SetName($name){$this->name=$name;}
function GetName(){ return $this->name;}
function SetAction($action){$this->Action=$action;}
function GetAction(){return $this->Action;}
function SetItem($Item,$Selected=NULL){
 $this->Item=$Item;
 $this->Selected=$Selected;
}
//=============================
function ConvItem($item){
 $value=$this->itemvalue;
 $lable=$this->itemlable;
 for ($i=0;$i $key=$item[$i][$value];
 $var=$item[$i][$lable];
 $ttrow[$key]=$var;
 }
 return $ttrow;
}
//=============================
function CheckBox(){
 $name=$this->GetName();
 $item=$this->Item;
 if($this->dbitem==true){
 $item=$this->ConvItem($this->Item);
 }
 $selected=$this->Selected;
 $action=$this->Action;
 
 $i=0;
 while (list($value,$label)=each($item)){
 $isCheck=NULL;
 if(is_array($selected)){ 
 reset($selected);
 $selectedCount=count($selected);
 for($j=0;$j<=$selectedCount-1;$j++){
 if($value==$selected[$j]){
 $isCheck="checked";
 break;
 }
 }
 }
 $idName=$name."_".$i;
 $CheckBox[]=" "; 
 $i++;
 }
 return $CheckBox;
}
//=============================
function RetuanArray(){
 return $this->CheckBox();
}
function ReturnString(){
 $Radios=$this->CheckBox();
 $RadiosCount=count($Radios);
 $TmpStr=NULL;
 for($i=0;$i<=$RadiosCount-1;$i++){
 $TmpStr.=$Radios[$i];
 } 
 return $TmpStr;
}
function Show(){
 return $this->ReturnString();
}
}
//=============================
/*
2003-08-13  10:18:03
NightKids
修改 idName 改 . 為 _
2003-10-17  13:45:11
NightKids
z99CheckBox
增加 dbitem
用法和下拉一樣
*/
//=============================
# E-Mail:weidewang@magus-soft.com
//=============================
ob_end_flush();
?>


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10752043/viewspace-963230/,如需轉載,請註明出處,否則將追究法律責任。

相關文章