生成下拉框、复选、单选框的几个类,支持数据库结果集生成

类别:编程语言 点击:0 评论:0 推荐:

<?php
ob_start();
/*                                                                          
* Copyright (c) 2003 NightKids  <[email protected]>                     
* All rights reserved.                                                      
*
* Redistribution and use in source and binary forms, with or without        
* modification, are permitted 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 form must 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
*    E-Mail:[email protected]
*  主页:
*  作者:NightKids
*

*   
*    最后修改时间:2003-07-27  10:45:05
*
*    声明:任何个人或团体可以任意修改、传播代码、可以用于任何场所(造成的任何损失或纠纷与本人无关)。
*          如果有什么好的建议和意见请与我联系。
*          请你在使用或传播是请保留这段注释,尊重本人的劳动成果。谢谢!!
*
*    感谢:所有身边的朋友、所有支持我的人们。
*          所有无私提供资料的网友和朋友们。所有 PHP 支持者 !
*    
*
*    开发环境:FreeBSD5.1+Apache/2.0.47+PHP 5.0.1B+Zend Engine v2.0.0+MySQL 4.1.14+Zend Optimizer v2.1.0

*    要求:
*************************************************************************************************************/
//=========== html 下拉栏 类
//根据一个数组生成一个下拉框
//功能:可以初始化为选中其中的一项,默认为第一项
/*
下拉框: select
选项: option
选中的: selected
名字: name
ID: id
css 样式: class
项目标签:
标签值:
*/
//----------------------------------------------------------------------------------------
/*
$dbc=mysql_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<=@count($item)-1;$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;
 $selectednum=@count($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.=" <option value=\"$value\" $isselected>$lable</option>\n";  
 }
 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="<select".$name.$id.$dir.$accesskey.$disabled.$size.$action.$multiple.">\n";
 return $itemStart;
}
function GetItemFoot(){
 $itemEnd="</select>\n";
 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){ 
 $Dir=@strtolower($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[]="<input type=\"radio\" name=\"$name\" id=\"$idName\" value=\"$value\" $isSelected $action><label for=\"$idName\">$label</label>\n"; 
  $i++;
 } 
 return $Radio;
}
//=============================
function RetuanArray(){
 return $this->Radio();
}
function ReturnString(){
 $Radios=$this->Radio();
 $RadiosCount=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<=@count($item)-1;$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[]="<input type=\"checkbox\" name=\"$name\" id=\"$idName\" value=\"$value\" $isCheck $action><label for=\"$idName\">$label</label>\n"; 
  $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:[email protected]
//=============================
ob_end_flush();
?>

本文地址:http://com.8s8s.com/it/it29067.htm