初識通用資料庫操作類別-前端easyui-datagrid,form(php),實作程式碼比較簡單,具體實作步驟請看下文。
實現功能:
左端datagrid顯示簡略信息,右側顯示選中行詳細信息,數據庫增刪改
(1)點擊選中行,右側顯示詳細信息,其中【新增】、【修改】、【刪除】按鈕可用,【儲存】按鈕停用
(2)點選【新增】按鈕,【修改】,【刪除】按鈕停用,【儲存】按鈕啟用
(3)點選【修改】按鈕,【新增】,【刪除】按鈕停用
難點:通用資料庫操作類別中insert方法跟update方法
最終效果圖:
前端功能不是很完善,按鈕之間邏輯還是有點問題,最後補充前端程式碼
前端功能不是很完善,按鈕之間邏輯還是有點問題,最後補充前端程式碼
其中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()方法
接受一個JSON 格式的字串並且把它轉換為PHP 變數,其中assoc,當該參數為 TRUE 時,將傳回關聯陣列 。
(3)依照查詢到的列名順序查詢數據,數據為空時,賦值為NULL , 將結果存到數組,防止資料庫插入數值錯位(獲取列名的另一個原因)
(4)將(3)的結果轉換為字串,呼叫implode()方法
補充implode()方法:
本函數將陣列的內容組合成一個字串,參數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-datagrid,form(php)相關文章請關注PHP中文網! 🎜