jQuery EasyUI和PHP实现数据的CURD操作
2015-08-28 10:26
531 查看
还是继续看使用EasyUI这套控件中的datagrid。现在可以使用datagrid中的行编辑,combobox编辑来实现一组动态生成的数据库表,进行DML的insert,delete,update,select(CURD)的操作。设计代码并没有使用MVC模型,所以js,html,php混写,看起来比较混乱,写的也比较基础,就当练手吧。数据库使用公司的SYBASE数据库。。。
resource.php,数据库表的主界面。另外还顺带搞了个EasyUI的主题选择。。。
resource_get.php,获取所需要的data,并传给resource.php
resource_save.php,对新建的data进行保存
resource_update.php,对已存在的data更新
<?php
@session_start();
$tableName=$_SESSION['tableName'];
$tableHeadArray=$_SESSION['tableHeadArray'];
@include '../common.php';
$sql=new SqlAnywhere();
if ($_GET["action"]=="updateresourcemanagement"){
$primary_key=$sql->getPrimaryKey($tableName);
if($sql->updateTable($tableName,$keyMap,$row))
echo json_encode(array('success'=>true));
else{
$error=error_get_last();
echo json_encode(array('fail'=>$error['message'])) ;
}
}
else if($_GET["action"]=="updateconfigureoptions"){
$rowData=$_POST['rowData'];
$ts_id=$rowData['ts_id'];
$ts_name=$rowData['ts_name'];
$tso_id=$rowData['tso_id'];
$tso_name=$rowData['tso_name'];
$tso_value=$rowData['tso_value'];
$opt_type=$rowData['opt_type'];
$old_ts_id=$ts_id;
$old_tso_id=$tso_id;
@$result=$sql->selectRecordsFromtsopt($tso_name, $tso_value,$opt_type);
if ($result!=null){
$tso_id=$result[0]['tso_id'];
@$result=$sql->selectRecordsFromtestsets($ts_name);
if ($result!=null){
$ts_id=$result[0]['ts_id'];
@$result=$sql->updatetsoptions($ts_id, $tso_id,$old_ts_id,$old_tso_id);
if ($result==1)echo json_encode(array('success'=>true));
else{
$error=error_get_last();
echo json_encode(array('fail'=>$error['message'])) ;
}
}
else {
echo json_encode(array('fail'=>"No $ts_name in table testsets."));
}
}
else {
echo json_encode(array('fail'=>"No tso_name $tso_name , tso_value $tso_value in table tsopt."));
}
}
?>
resource_delete.php对选中的data删除
代码里还有一些在上一篇说combobox级联的文章里的configure_option公用的CURD操作。
总体来讲写的很乱,重构一下,用MVC可能会更好。
resource.php,数据库表的主界面。另外还顺带搞了个EasyUI的主题选择。。。
<?php if(isset($_COOKIE['EasyuiTheme'])) $easyuiTheme=$_COOKIE['EasyuiTheme'];else{ setcookie("EasyuiTheme","default");$easyuiTheme="default";}?> <html> <?php if(!isset($_GET["table_name"])){echo "Please select Table!";return;}//table_name通过get从之前的页面传递 $table_name=$_GET["table_name"]; @session_start(); $_SESSION['tableName']=$table_name; @include '../common.php'; $sql=new SqlAnywhere();//自己封装的一个SYBASE数据库类,如果使用其他的数据库,估计用PDO更容易。 $tableDataArray=$sql->selectAllFromTable($table_name); $primayKey=$sql->getPrimaryKey($table_name); if(!$tableDataArray){echo "Empty Table!";return;} ?> <head> <link rel="stylesheet" type="text/css" href="themes/<?php echo $easyuiTheme?>/easyui.css"> <link rel="stylesheet" type="text/css" href="themes/icon.css"> <link rel="stylesheet" type="text/css" href="css/demo.css"> <script type="text/javascript" src="js/jquery-1.6.min.js"></script> <script type="text/javascript" src="js/jquery.easyui.min.js"></script> <script type="text/javascript" src="js/jquery.edatagrid.js"></script> <style type="text/css"> .datagrid-cell{ font-size:15px; } body{ margin:11; margin-left:-11; font-size:20px; } .datagrid-row { height: 30px; } </style> </head> <body> <div style='display:block;position:absolute;right:1%;top:1%;;'> Theme: <select id="theme" class="easyui-combobox" style="width:105px;" data-options="editable:false"> <?php $themeArray=array("default","bootstrap","black","gray","metro","metro-gray","metro-green","metro-orange","metro-red","metro-blue","cupertino","dark-hive","pepper-grinder","sunny"); foreach ($themeArray as $theme){ if($theme==$_COOKIE['EasyuiTheme']){ echo "<option selected='selected'>$easyuiTheme</option>"; } else echo "<option>$theme</option>";//这个div就是搞了个theme选择 } ?> </select> </div> <script type="text/javascript"> //delete data function destroyLine() { var row = $("#dg").datagrid("getSelected"); if(row) { $.messager.confirm("Confirm","Are you sure you want to destory this line?",function(r) { if(r) { $.post('resource_destroy.php?action=destroyresourcemanagement',{row:row},function(result){ if (result && result.success){ $.messager.show({ title: 'Success', msg: 'Delete successfully!' }); $('#dg').datagrid('reload'); } else { $.messager.alert( 'Error', result.fail, 'error' ); $('#dg').datagrid('reload'); } },'json'); } }); } } ////////////////////////save data function saveLine(){ var rowold= $('#dg').edatagrid('getSelected'); if(rowold.isNewRecord){ var rindex = $('#dg').edatagrid('getRowIndex', rowold); $('#dg').edatagrid('endEdit', rindex); var row = $('#dg').edatagrid('getSelected'); if(row) { $.post('resource_save.php?action=saveresourcemanagement',{row:row},function(result){ if (result && result.success){ $.messager.show({ title: 'Success', msg: 'Save successfully!' }); $('#dg').datagrid('reload'); } else { $.messager.alert( 'Error', result.fail, 'error' ); $('#dg').datagrid('reload'); } },'json'); } } else { var rindex = $('#dg').edatagrid('getRowIndex', rowold); $('#dg').edatagrid('endEdit', rindex); } } $(function(){ var editRow = undefined; $('#dg').edatagrid({ url: 'resource_get.php?action=resourcemanagement',//get data onBeforeEdit: function (rowIndex, rowData) { $('#dg').datagrid('selectRow',rowIndex); }, onAfterEdit: function (rowIndex, rowData, changes) {//update data var rows = $('#dg').datagrid('getChanges'); if(!rowData.isNewRecord){ if(rows.length){ $('#dg').datagrid('loading'); $.post('resource_update.php?action=updateresourcemanagement',{rowData:rowData},function(result){ if (result && result.success){ $.messager.show({ title: 'Success', msg: "Update Successfully!" }); $('#dg').datagrid('reload'); } else { $.messager.alert( 'Error', result.fail, 'error' ); $('#dg').datagrid('reload'); } },'json'); } } else{ $('#dg').datagrid('reload'); } editRow = undefined; }, }); $('div.datagrid-cell-c1-<?php if (isset($primayKey))echo $primayKey;?>').css("background-color","#FFFF00"); $('#theme').combobox({ onChange:function(newVal,oldVal){ setCookie('EasyuiTheme', newVal); history.go(0); } }); }); function setCookie(c_name,value,expiredays) { var exdate=new Date() exdate.setDate(exdate.getDate()+expiredays) document.cookie=c_name+ "=" +escape(value)+ ((expiredays==null) ? "" : ";expires="+exdate.toGMTString()) } </script> <table id="dg" <?php echo "title=$table_name"?> style="height: 600px" toolbar="#toolbar" idField=<?php echo $primayKey;?> rownumbers="true" fitColumns="true" singleSelect="true"> <thead> <tr> <?php //////////put the table head names you want them to be commbox here // 使edit变成加载distinct的这一列的combobox $commboxArray=array("pro_name","pro_ver","platform","jre_path","ocs_ver","m_platform","m_status","m_bit","db_vender","db_ver" 4000 ,"db_platform","db_bit","db_port","db_status","db_user","db_pwd","opt_type","ts_cfg","rep_type","ts_ver","topo_type","rs_mode","rs_topo"); $tableHeadArray=array_keys($tableDataArray[0]); for ($i=0;$i<count($tableHeadArray);$i++){ if($tableHeadArray[$i]==$primayKey){ echo "<th field=$tableHeadArray[$i] width=\"100\" sortable=\"true\" editor=\"{type:'validatebox',options:{required:true}}\">$tableHeadArray[$i]</th>"; } else if(in_array($tableHeadArray[$i], $commboxArray)){ echo "<th field=$tableHeadArray[$i] width=\"100\" sortable=\"true\" editor=\"{ type:'combobox', options:{ valueField:'$tableHeadArray[$i]', textField:'$tableHeadArray[$i]', value:'0', method:'get', url:'resource_get.php?commboxfield=$tableHeadArray[$i]', required:true } }\"> $tableHeadArray[$i]</th>"; } else{ echo "<th field=$tableHeadArray[$i] width=\"100\" sortable=\"true\" editor=\"{type:'validatebox',options:{required:false}}\"> $tableHeadArray[$i]</th>"; } } $_SESSION["tableHeadArray"]=$tableHeadArray; ?> </tr> </thead> </table> <div id="toolbar"> <a href="#" class="easyui-linkbutton" iconCls="icon-add" plain="true" onclick="javascript:$('#dg').edatagrid('addRow')">New</a> <a href="#" class="easyui-linkbutton" iconCls="icon-remove" plain="true" onclick="destroyLine()">Delete</a> <a href="#" class="easyui-linkbutton" iconCls="icon-save" plain="true" onclick="saveLine()">Save</a> <a href="#" class="easyui-linkbutton" iconCls="icon-undo" plain="true" onclick="javascript:$('#dg').edatagrid('cancelRow')">Cancel</a> </div> </body> </html>
resource_get.php,获取所需要的data,并传给resource.php
<?php @session_start(); $tableName=$_SESSION['tableName']; @include '../common.php'; $sql=new SqlAnywhere(); if(isset($_GET['action'])){ if ($_GET["action"]=="resourcemanagement"){ $primaryKey=$sql->getPrimaryKey($tableName); if ($primaryKey){ $sort = isset($_POST['sort']) ? strval($_POST['sort']) : $primaryKey; $order = isset($_POST['order']) ? strval($_POST['order']) : 'asc'; $result=$sql->selectAllFromTableByOrder($tableName,$sort,$order); echo json_encode($result); } else { $result=$sql->selectAllFromTable($tableName); echo json_encode($result); } } else if($_GET["action"]=="getconfigureoptions"){ $sort = isset($_POST['sort']) ? strval($_POST['sort']) : 'tsoptions.ts_id'; $order = isset($_POST['order']) ? strval($_POST['order']) : 'asc'; $tableNames=array("testsets","ts_opt","tsoptions"); $fields=array("testsets.ts_id","ts_name","ts_opt.tso_id","tso_name","tso_value","opt_type"); if ($sort=="ts_id"){ $sort="tsoptions.ts_id"; } else if ($sort=="tso_id"){ $sort="ts_opt.tso_id"; } $result=$sql->selectItemsFromNatureJoinTables($tableNames,$fields,$sort,$order); echo json_encode($result); } else if($_GET["action"]=="tsoname"){ $fields=array("tso_name"); $result=$sql->selectItemsFromTable("ts_opt", $fields); echo json_encode($result); } else if($_GET["action"]=="tsovalue"){ $tso_name=$_GET['tso_name']; $fields=array("tso_name","tso_value"); $result=$sql->selectItemsFromTable("ts_opt", $fields); $dataArray=array(); for($i=0;$i<count($result);$i++){ if($result[$i]['tso_name']==$tso_name){ array_push($dataArray,$result[$i]); } } echo json_encode($dataArray); } else if ($_GET["action"]=="tsname"){ $fields=array("ts_name"); $result=$sql->selectItemsFromTable("testsets", $fields); echo json_encode($result); } else if ($_GET["action"]=="opttype"){ $tso_name=$_GET['tso_name']; $fields=array("tso_name","opt_type"); $result=$sql->selectItemsFromTable("ts_opt", $fields); $dataArray=array(); for($i=0;$i<count($result);$i++){ if($result[$i]['tso_name']==$tso_name){ array_push($dataArray,$result[$i]); } } echo json_encode($dataArray); } } else if ($_GET['commboxfield']){ $fields=array($_GET['commboxfield']); $result=$sql->selectItemsFromTable($tableName, $fields); echo json_encode($result); } ?>
resource_save.php,对新建的data进行保存
<?php @session_start(); $tableName=$_SESSION['tableName']; @include '../common.php'; $sql=new SqlAnywhere(); if ($_GET["action"]=="saveresourcemanagement"){ unset($dataArray['isNewRecord']); if(@$sql->insertIntoTable($tableName, $dataArray)){ echo json_encode(array("success"=>"true")); } else { $error=error_get_last(); echo json_encode(array('fail'=>$error['message'])) ; } } else if($_GET["action"]=="saveconfigureoptions"){ $tso_name=$_POST['tso_name']; $tso_value=$_POST['tso_value']; $opt_type=$_POST['opt_type']; $ts_name=$_POST['ts_name']; @$result=$sql->selecttso_idFromts_opt($tso_name, $tso_value,$opt_type); if($result==null){ echo json_encode(array("fail"=>"No tso_name:$tso_name,tso_value:$tso_value,opt_type:$opt_type in table ts_opt!")); } else { $tso_id=$result[0]['tso_id']; //echo $tso_id; @$result=$sql->selectts_idFromtestsets($ts_name); if ($result==null)echo json_encode(array("fail"=>"No ts_name:$ts_name in table testsets!")); //print_r($result); else{ $ts_id=$result[0]['ts_id']; $array=array("ts_id"=>$ts_id,"tso_id"=>$tso_id); @$result=$sql->insertIntoTable('tsoptions', $array); if ($result!=1){ $error=error_get_last(); echo json_encode(array('fail'=>$error['message'])) ; } //$dataArray=array("ts_id"=>$ts_id,"ts_name"=>$ts_name,"tso_id"=>$tso_id,"tso_name"=>$tso_name,"tso_value"=>$tso_value); else echo json_encode(array("success"=>"true")); } } } ?>
resource_update.php,对已存在的data更新
<?php
@session_start();
$tableName=$_SESSION['tableName'];
$tableHeadArray=$_SESSION['tableHeadArray'];
@include '../common.php';
$sql=new SqlAnywhere();
if ($_GET["action"]=="updateresourcemanagement"){
$primary_key=$sql->getPrimaryKey($tableName);
if($sql->updateTable($tableName,$keyMap,$row))
echo json_encode(array('success'=>true));
else{
$error=error_get_last();
echo json_encode(array('fail'=>$error['message'])) ;
}
}
else if($_GET["action"]=="updateconfigureoptions"){
$rowData=$_POST['rowData'];
$ts_id=$rowData['ts_id'];
$ts_name=$rowData['ts_name'];
$tso_id=$rowData['tso_id'];
$tso_name=$rowData['tso_name'];
$tso_value=$rowData['tso_value'];
$opt_type=$rowData['opt_type'];
$old_ts_id=$ts_id;
$old_tso_id=$tso_id;
@$result=$sql->selectRecordsFromtsopt($tso_name, $tso_value,$opt_type);
if ($result!=null){
$tso_id=$result[0]['tso_id'];
@$result=$sql->selectRecordsFromtestsets($ts_name);
if ($result!=null){
$ts_id=$result[0]['ts_id'];
@$result=$sql->updatetsoptions($ts_id, $tso_id,$old_ts_id,$old_tso_id);
if ($result==1)echo json_encode(array('success'=>true));
else{
$error=error_get_last();
echo json_encode(array('fail'=>$error['message'])) ;
}
}
else {
echo json_encode(array('fail'=>"No $ts_name in table testsets."));
}
}
else {
echo json_encode(array('fail'=>"No tso_name $tso_name , tso_value $tso_value in table tsopt."));
}
}
?>
resource_delete.php对选中的data删除
<?php @session_start(); $tableName=$_SESSION['tableName']; //$tableHeadArray=$_SESSION['tableHeadArray']; @include '../common.php'; $sql=new SqlAnywhere(); if ($_GET["action"]=="destroyresourcemanagement"){ $primary_key=$sql->getPrimaryKey($tableName); $row=$_POST['row']; if(isset($row[$primary_key])){ $keyMap=array($primary_key=>$row[$primary_key]); if($sql->deleteFromTable($tableName, $keyMap)) echo json_encode(array('success'=>true)); else{ $error=error_get_last(); echo json_encode(array('fail'=>$error['message'])) ; } } else echo json_encode(array('fail'=>"No Records!")); } else if($_GET["action"]=="destroyconfigureoptions"){ if (isset($_POST['ts_id']) && isset($_POST['tso_id'])){ $ts_id=$_POST['ts_id']; $tso_id=$_POST['tso_id']; @$result=$sql->deleteFromtsoptions($ts_id, $tso_id); if($result==1) echo json_encode(array('success'=>true)); else{ $error=error_get_last(); echo json_encode(array('fail'=>$error['message'])) ; } } else echo json_encode(array('fail'=>"No Records!")); } ?>
代码里还有一些在上一篇说combobox级联的文章里的configure_option公用的CURD操作。
总体来讲写的很乱,重构一下,用MVC可能会更好。
相关文章推荐
- 一个关于if else容易迷惑的问题
- Android之获取手机上的图片和视频缩略图thumbnails
- PHP5.2.*防止Hash冲突拒绝服务攻击的Patch
- 深入理解PHP之匿名函数
- JSP/PHP基于Ajax的分页功能实现
- 数据库链接字符串查询网站
- 关于PHP通过PDO用中文条件查询MySQL的问题。
- 什么是设计模式
- easyui------显示隐藏列功能
- PHP数据库长连接mysql_pconnect的细节
- DB2实例管理
- DB2实例管理
- Php Installing An Expansion
- 保障MySQL数据安全的14个最佳方法
- mysql问答汇集
- 创建一个空的IBM DB2 ECO数据库的方法
- Access 2000 数据库 80 万记录通用快速分页类
- 开通一个数据库失败的原因的和解决办法