您的位置:首页 > Web前端 > JQuery

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的主题选择。。。

<?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可能会更好。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息