实现功能:
左端datagrid显示简略信息,右侧显示选中行详细信息,数据库增删改
(1)点击选中行,右侧显示详细信息,其中【新增】、【修改】、【删除】按钮可用,【保存】按钮禁用
(2)点击【新增】按钮,【修改】,【删除】按钮禁用,【保存】按钮启用
(3)点击【修改】按钮,【新增】,【删除】按钮禁用
难点:通用数据库操作类中insert方法跟update方法
最终效果图:
aaarticlea/png;base64,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" alt="" />
前端功能不是很完善,按钮之间逻辑还是有点问题,最后补充前端代码
其中Formain.php对前端传值判断,并调用actSQL.class.php获得结果
代码比较简单
如下:
<?php
require('include/mysql_connect/actSQL.class.php');
$key=$_REQUEST['key'];
$a=new actSQL('localhost','root','1234','tpss');
//获取信息
if($key=='1')
{ $a->getAllData('t_prekeychart');
}
if($key=='2')
{
$objectstr=$_REQUEST['object'];
if($a->insertData($objectstr,'t_prekeychart'))
{
echo json_encode("true");
}else{
echo json_encode("false");
}
//test
//$test='{"keychartid":"2","keyid":"2","keychartname":"2","level":"2","showtype":"2","helptips":"2","keylevel":"2","ishmap":"2"}';
//$a->insertData($test,'t_prekeychart');
}
if($key=='3')
{
$prekey=$_REQUEST['keychartid'];
$prekeyname='keychartname';
if($a->delData($prekey,$prekeyname,'t_prekeychart'))
{
echo json_encode("true");
}else{
echo json_encode("false");
}
}
if($key=='4')
{
$objectstr=$_REQUEST['object'];
$prekeyname='keychartid';
if($a->updData($objectstr,$prekeyname,'t_prekeychart'))
{
echo json_encode("true");
}else{
echo json_encode("false");
}
}
?>
看Formain.php中出现的类的各个方法,简单思考一下
其中
getAllData($tablename)获取表格的所有信息,这个方法比较简单,一个简单的sql语句就可以搞定,最后将结果json格式返回即可
delData($prekey,$prekeyname,$tablename)删除指定信息,这个更简单,就不说了
insertData($objectstr,$tablename),其中$objectstr是json格式的字符串,$tablename表名,
难点是将拼凑成 insert into $tablename (......) values(.....)这种语句
解决办法:
(1)根据$tablename获取所有的列名,并将列名数组转换为字符串,为最后sql语句的拼凑做准备,除此获取列名还有个目的,往下看
(2)将json格式的字符串$objectstr转换为关联数组,调用json_decode()方法
补充json_decode()方法
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
接受一个 JSON 格式的字符串并且把它转换为 PHP 变量,其中assoc,当该参数为
TRUE
时,将返回 关联数组 。 (3)按照查询到的列名顺序查询数据,数据为空时,赋值为NULL,将结果存到数组,防止数据库插入数值错位(获取列名的另个原因)
(4)将(3)的结果转化为字符串,调用implode()方法
补充implode()方法:
string implode(string glue, array pieces);
本函数将数组的内容组合成一个字符串,参数 glue 是字之间的分隔符号
(5)拼凑sql语句字符串,然后向数据库插入
updData($objstr,$prekeyname,$tablename)方法难点也是在于sql语句的字符串拼凑,拼凑格式应该如下
update $tablename set ..... where $prekeyname=$data[$prekeyname]
前两步同insertData()
(3)遍历列名字符数组,获取非主键名的列名值,按照 “列名=列名值” 的字符串格式存入数组,这里就是set 后面部分的不完全字符串
(4)将(3)结果转换为字符串,将数组元素以 ',' 分隔开,这个就是set后面最后的字符串 格式为“xx=xx,xx=xx”
(5)拼凑sql字符串,然后更新数据库
insertData()以及updData()函数如下
/*
* 添加信息
* @param:$objstr:json风格的数据库插入信息字符串
* $tablename:表名
*/
function insertData($objstr,$tablename)
{
$dbc=$this->conData();
if($dbc)
{
$columnname=array();
$columnname=$this->getColumns($tablename);
//echo $columnname[0];
$clos=implode(',',$columnname); //将列名数组转换为字符串
//echo $clos;
$data=json_decode($objstr,true); //将json格式的字符串转换为关联数组
//echo $value['keychartname'];
$values=array();
foreach($columnname as $value)
{
//按照查询到的列名查询数据,数据为空的,赋值为NULL,防止数据库插入数值错位
//echo $data[$value]."<br>";
if(isset($data[$value]))
{
array_push($values,$data[$value]);
}else{
$data[$value]=NULL;
array_push($value,$data[$value]);
}
}
$strvalue=implode(',',$values);
//echo $strvalue;
/*
* SQL: insert into $tablename($clos) values(...)
*/
$sql=<<<SQL
insert into $tablename($clos) values($strvalue);
SQL;
//echo $sql;
$res=mysqli_query($dbc,$sql);
if($res)
{
return true;
}else{
return false;
}
}else{
echo "连接错误!";
}
}
/*
*更新信息
*@param: $objstr:json风格的数据库更新信息字符串
* $tablename:表名
* $prekeyname:主键名
* */
function updData($objstr,$prekeyname,$tablename)
{
$dbc=$this->conData();
if($dbc)
{
$columnname=array();
$columnname=$this->getColumns($tablename);
//$clos=implode(',',$columnname); //将列名数组转换为字符串
$data=json_decode($objstr,true); //将json格式的字符串转换为关联数组
$sets=array();
foreach($columnname as $value)
{
//列名不等于主键名获取值
if($prekeyname!=$value)
{
//set $value=$data[$value];
array_push($sets,"$value=$data[$value]");//接好的set语句部分
}
}
//$sets数组转化为字符串
$stringsets=implode(',',$sets);
//echo $stringsets;
/*
* SQL:update $tablename set ..... where $prekeyname=$data[$prekeyname];
* */
$sql=<<<SQL
update $tablename set $stringsets where $prekeyname=$data[$prekeyname];
SQL;
$res=mysqli_query($dbc,$sql);
if($res)
{
return true;
}else{
return false;
}
}else{
echo "连接错误";
}
}
/*
*获取表的所有列名
*@param:$tablename:表名
*/
function getColumns($tablename)
{
$dbc=@mysqli_connect('localhost','root','1234','information_schema');
if(!$dbc)
{
echo "Connect Error".mysqli_connect_error($dbc);
}else
{
//连接成功,从表COLUMNS获取表的所有列名 $sql="select COLUMN_NAME from columns where TABLE_NAME='$tablename'";
$res=@mysqli_query($dbc,$sql);
$items=array();
if($res)
{
while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))
{
$columnname=$row['COLUMN_NAME'];
array_push($items,$columnname);
} return $items;
mysqli_close($dbc);
}
else{
echo "查询失败,请检查SQL语句!";
} }
}
完整代码附件(其中easyui相关文件没有添加