PHP后台管理类(修改中)

原创 2004年07月20日 13:23:00

<?
class Admin{//begin class
 var $action="";
 var $table="";
 var $pk_val=0;
 var $pk_name="id";
 var $select_sql;
 
 var $array_add=array();
 var $array_update=array();
 var $array_query=array();
 var $array_oder_by=array();
 var $array_tpl=array();
 var $array_valid=array();
 
 var $caption="";
 var $html_header='';
 var $html_query='';
 var $html_cmd='';

 var $POST;
 var $ME;
 
function int_pk_val(){
 global $_GET,$_POST;
 if($this->pk_val)return;

 if(!empty($_GET['edit_id'])){
  $this->pk_val=$_GET['edit_id'];
  return;
 }

 if(!empty($_POST['id'])){
  $this->pk_val=$_POST['id'];
  return;
 }
}

function Admin($action,$table,$select_sql){
 global $_POST,$ME;
 /*foreach($_POST as $key=>$val){
  $_POST[$key]=trim(nvl($val));
 }*/
 $this->POST=$_POST;
 $this->ME=$ME;
 $this->action=$action;
 $this->table=$table;
 $this->select_sql=$select_sql;

 $this->int_pk_val();
}

function execute(){
 if(empty($this->action)) $this->display();
 else{
  $action=$this->action;
  $this->$action();
 }
}

function display(){
 /*显示数据*/
 global $CFG,$_POST,$ME;

 $where=$this->get_where($this->select_sql);
 $this->select_sql.=$where;

 $p=new SXPaging($this->select_sql,nvl($_POST['RequirePage']),nvl($_POST['PageSize']));
 if($this->html_cmd)
  $html_cmd="<INPUT TYPE=hidden NAME=CMD>".$this->html_cmd;
 else
  $html_cmd="|<INPUT TYPE=hidden NAME=CMD>
  <INPUT TYPE=button VALUE=添加 onclick=this.form.CMD.value='add';this.form.submit();>
  <INPUT TYPE=button VALUE=删除 onclick=this.form.CMD.value='del';this.form.submit();>";

 include("$CFG->dirtpl/admin/header.html");
 echo("<Form method=post action=$ME>");
 $str=$p->GetPrint('№',$this->caption,0);

 if($str)
  $str.=$html_cmd.$this->html_query;
 else{
  $str=$this->display_no_data($where);
 }
 echo("$str");
 echo $this->get_query_state();
 echo("</Form>");

 include("$CFG->dirtpl/admin/footer.html");
}


function add($errormsg=''){
 global $CFG,$_POST,$ME;
 $CMD='insert';
 $form=(empty($this->array_tpl['form_add']))?$this->array_tpl['form']:$this->array_tpl['form_add'];
 include($this->array_tpl['header']);
 include($this->array_tpl['form_header']);
 include($form);
 include($this->array_tpl['footer']);
}

function insert(){
 /*插入数据*/
 global $CFG,$_POST,$ME,$DOC_TITLE;
 $sql_add=$this->get_add_sql();
 
 $errormsg=$this->valid();
 if(empty($errormsg)){
  $qid=db_query($sql_add);
  $pk_val=db_insert_id($pk_val);
  set_logs($this->caption,LOG_TYPE_INSERT,$this->table,$pk_val);
  $this->go_to_me();
  return;
 }

 $this->add($errormsg);
}

function check_operator($table,$pk_val){
 $operator=$_SESSION['SESSION']['user']['id'];
 $sql="select 1 from $table where $this->pk_name=$pk_val and operator=$operator";
 $qid=db_query($sql);
 return db_fetch_array($qid);
}

function edit($errormsg=''){
 global $CFG,$_POST,$ME,$_GET,$DOC_TITLE;
 
 if(empty($this->pk_val))die("编辑ID没有,是程序错了");

 $CMD="update";

 $sql="select * from $this->table where $this->pk_name=$this->pk_val";
 $qid=db_query($sql);
 $_POST=db_fetch_array($qid);
 
 if(empty($_POSt['id']))$_POSt['id']=$this->pk_val;
 
 $form=empty($this->array_tpl['form_update'])?$this->array_tpl['form']:$this->array_tpl['form_update'];
 include($this->array_tpl['header']);
 include($this->array_tpl['form_header']);
 include($form);
 include($this->array_tpl['footer']);
}

function update(){
 /*修改*/
 global $CFG,$_POST,$ME;
 $sql=$this->get_update_sql();
 
 $errormsg=$this->valid();
 if(empty($errormsg)){
  if(!$this->check_operator($this->table,$this->pk_val)){
   $errormsg.="<li>不是你添加的数据,你没权修改!";
  }
 }
 if(!empty($errormsg)){
  $this->edit($errormsg);die();
 }
 db_query($sql);

 set_logs($this->caption,LOG_TYPE_UPDATE,$this->table,$this->pk_val);
 $this->go_to_me();
}

function del($ctl_name='',$table='',$real_do=0){
 /*删除*/
 global $_POST,$_SESSION;
 $operator=$_SESSION['SESSION']['user']['id'];
 if(!$ctl_name)$ctl_name='del_id';
 if($table)$this->table=$table;
 if(!empty($_POST[$ctl_name])){
  //$in=implode(',',$_POST[$ctl_name]);
  /*$sql='';
  if($real_do){
   $sql="delete from $this->table where $this->pk_name in ($in)";
  }else{
   $sql="update $this->table set isdeleted=$operator where  $this->pk_name in ($in)";
  }
  
  db_query($sql);*/
  $can_delete_rows="";
  foreach($_POST[$ctl_name] as $pk_val){
   if($this->check_operator($this->table,$pk_val)){
    $sql="delete from $this->table where $this->pk_name = $pk_val";
    db_query($sql);
    set_logs($this->caption,LOG_TYPE_DELETE,$this->table,$pk_val);
   }else{
    $can_delete_rows.="$pk_val,";
   }
  }
 }
 if($can_delete_rows)$can_delete_rows="主键为 $can_delete_rows 的数据非您添加,您不能删除!";
 $this->go_to_me($can_delete_rows);
}

function _print(){}
function valid(){
 $error_msg="";
 $error_msg.=$this->valid_array_valid();
 return $error_msg;
}

function valid_array_valid(){
  /*验证数据有效性*/
 global $_POST;
 $error_msg="";
 $str='';
 $count=count($this->array_valid);
 for($i=0;$i<$count;$i++){

  $item=$this->array_valid[$i];

  switch($item['valid']){
   case 'numeric':
    if(!is_numeric($this->POST[$item['field']]))$error_msg.="<li>$item[chinese]不是数字";
    break;
   default:
    if(empty($this->POST[$item['field']]))$error_msg.="<li>$item[chinese]不可为空";
    break;
  }

 }
 if(!empty($error_msg))$error_msg."<br>请您仔细检查.";
 return $error_msg;
}

function get_where($sql=''){
 global $_POST;
 $where='';
 foreach ($this->array_query as $val){
  if(!empty($_POST[$val])) $where.=" and ".substr($val,2) ." like '%$_POST[$val]%'";
 }
 
 $where.=" and $this->table.isdeleted!=1";

 if(eregi('where',$sql)) return $where;

 return " where ".substr($where,4);
}

function get_order_by(){return '';}


function get_add_sql(){
 global $_POST,$_SESSION;
 $fields=implode(",",$this->array_add);
 $values="";
 $operator=$_SESSION['SESSION']['user']['id'];
 foreach($this->array_add as $val){
  $val=trim($val);
  $values.="'$_POST[$val]',";
 }

 $values=substr($values,0,strlen($values)-1);

 $sql="insert into $this->table (operator,$fields) values($operator,$values)";
 return $sql;
}

function get_update_sql(){
 global $_POST;
 $this->array_update=empty($this->array_update)?$this->array_add:$this->array_update;
 $sql="update $this->table set ";

 foreach($this->array_update as $val){
  $val=trim($val);
  $sql.=" $val='$_POST[$val]',";
 }
 
 $sql=substr($sql,0,strlen($sql)-1);
 $pk=$this->pk_name;
 $sql.=" where $pk='$_POST[$pk]'";
 return $sql;
}


function set_select_sql($val){$this->select_sql=$val;}
function set_array_add($val){$this->array_add=$val;}
function set_array_update($val){$this->array_update=$val;}
function set_array_query($val){$this->array_query=$val;}
function set_array_valid($val){$this->array_valid=$val;}

function set_oder_by($val){$this->array_oder_by=$val;}
function set_caption($val){$this->caption=$val;}
function set_pk_val($val){if(!empty($val))$this->pk_val=$val;}
function set_pk_name($val){if(!empty($val))$this->pk_name=$val;}

function set_html_query($val){
 global $ME;
 $this->html_query=$val;
 $this->html_query.="<INPUT TYPE=button VALUE='查询' onclick=this.form.submit();>
 <INPUT TYPE=button VALUE='重置' onclick=/"location='$ME'/">";
}
function set_html_cmd($val){$this->html_cmd=$val;}
function set_array_tpl($val){$this->array_tpl=$val;}

function get_query_state(){
 global $_POST;
 $js_state="<script language=javascript>try{";

 foreach($this->array_query as $val){
  if(strlen(nvl($_POST[$val])))$js_state.="document.all.$val.value='$_POST[$val]';/n";
 }
 $js_state.="}catch(e){}</script>";
 return $js_state;
}


function display_no_data($where){
 global $ME;
 if(!empty($where)){
  return "<input type=button value='本查询没有数据,请重新查询' onclick=/"location='$ME'/">";
 }else return "<input type=button value='没有数据,请添加数据'  onclick=/"location='$ME?CMD=add'/">";
}

function go_to_me($msg=''){
 global $ME;
 if(!empty($msg))$msg="alert('$msg');";
 echo "<script language=javascript>$msg;location='$ME';</script>";
 die();
}

}//end class

?>

暑假学习PHP——后台数据的增改删以及置顶功能

首先要做一些准备工作: 创建一个数据库以及几个需要用到的表 (如下)   然后在已经写好的前端内容里面嵌入PHP,使其与数据库相连接,使前端内容与数据库中数据一一对应(代码如下) 然后是进入到后台...
  • qq_34858648
  • qq_34858648
  • 2016年06月30日 15:43
  • 1028

【即点即改】关于PHP即点即改的一些东西

该文章为本人在学习PHP时的一些小知识,如有不足之处请指正 首先呢 ,我们知道即点即改的思路大概就是给你要修改的文本绑定一个点击click事件, 当你点击该文本的时候先把这个文本取到,然后替换成文本...
  • modi_php
  • modi_php
  • 2016年12月30日 19:44
  • 315

菜鸟教你如何用php写后台API

1. 首先,要设置一个入口文件入口文件的话会引入到固定的api文件(如下):...
  • DavidFFFFFF
  • DavidFFFFFF
  • 2017年05月17日 17:54
  • 2089

php+android 搭建后台及显示

ps:最近需要做几个android展示界面,原来用过xampp做简单的回显页面,于是这次后台想用php搭建,于是开始挖坑学习环境xampp(集成版tomcat+mysql)+phpstrom(开发环境...
  • irony0egoist
  • irony0egoist
  • 2017年04月23日 17:46
  • 664

PHP后台数据处理及与web端进行数据交互

一 PHP是什么? PHP(外文名:PHP: Hypertext Preprocessor,中文名:“超文本预处理器”)是一种通用开源脚本语言。语法吸收了C语言、Java和Perl的特...
  • BaiHuaXiu123
  • BaiHuaXiu123
  • 2016年03月03日 20:55
  • 2430

php 登陆后台验证代码

前台表单: 帐号: 密码: 后台登陆验证代码:
  • u013372487
  • u013372487
  • 2015年06月23日 14:00
  • 3203

php用户登录以及后台处理

角色fen teacher:老师                     studentA:班级负责人              班级负责人+考评小组成员+普通学生 studentB:考评小组...
  • u013990248
  • u013990248
  • 2014年11月06日 23:05
  • 673

jQuery即点即改

1、给你需要修改的数据一个选择器(id或者class)都行 2、因为修改数据库时候需要ID,所以给它一个属性等于你的ID用来传值,我用的是b(这个你可以随意起名) ...
  • SunLiNanBK
  • SunLiNanBK
  • 2016年10月12日 20:41
  • 977

PHP+Mysql 实现后台管理

刚学了几天的PHP,然后刚好有个后台管理的项目要做,抱着学php的目的,便打算用php开始写。后台就是对几张表进行增删查改操作。 一开始先从简单的下手,有一张学生信息表,得到里面的各个信息,并显示在...
  • FoolishAndStupid
  • FoolishAndStupid
  • 2015年05月16日 22:03
  • 4275

管理后台-后端-PHP篇

演示之所以用codeigniter,只是因为它安装方便(独立压缩包解压即可)、自身集成了migration,query-builder(对数据库的封装,不用关心数据库选型)。 虽然CI官方说明PHP...
  • IamNieo
  • IamNieo
  • 2016年01月04日 18:17
  • 5948
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:PHP后台管理类(修改中)
举报原因:
原因补充:

(最多只允许输入30个字)