일반 데이터베이스 작업 클래스에 대한 첫 번째 소개 - 프런트 엔드 easyui-datagrid, 양식(php), 구현 코드는 비교적 간단합니다. 구체적인 구현 단계는 아래를 참조하세요.
구현 기능 :
왼쪽의 데이터 그리드에는 간략한 정보가 표시되고, 오른쪽에는 선택한 행에 대한 자세한 정보가 표시됩니다.
(1) 선택한 행을 클릭하면 오른쪽에 상세정보가 표시되며, 그 중 [추가], [수정], [삭제] 버튼은 가능하며, [저장] 버튼은 비활성화됩니다
(2) 클릭 [추가] 버튼, [수정], [삭제] 버튼이 비활성화되고 [저장] 버튼 ] 버튼이 활성화됩니다
(3) [수정] 버튼을 클릭하고 [추가] 및 [삭제] ] 버튼이 비활성화됩니다
난이도 : 일반 데이터베이스 연산 클래스의 insert 메소드와 update 메소드
최종 렌더링 :
프론트엔드 기능이 그다지 완성되지 않았으며, 여전히 버튼 사이의 로직에 문제가 있습니다. 마지막으로 프론트엔드 코드가 추가됩니다
그 중 Formain.php는 프론트엔드에 전달된 값을 판단하고 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)는 테이블의 모든 정보를 가져오는 방법으로, 이 방법은 비교적 간단하며, 마지막으로 json으로 결과를 반환할 수 있습니다. format
delData( $prekey, $prekeyname, $tablename) 이는 더 간단하므로 이에 대해서는 언급하지 않겠습니다.
insertData( $objectstr, $tablename ) , 여기서 $objectstr은 json 형식의 문자열이고 $tablename은 테이블 이름입니다.
이를 insert into $tablename (...) value(.. ...)
해결책:
(1) $tablename을 기반으로 모든 열 이름을 가져오고 열 이름 배열을 문자열로 변환하여 최종 SQL 연결을 준비합니다. 열 이름을 가져오는 것 외에도 아래
를 참조하세요. (2) json 형식 문자열 $objectstr을 연관 배열로 변환하고 json_decode() 메서드를 호출합니다
. json_decode() 메서드를 보완하세요.
혼합 json_decode( string $json [, bool $assoc = false [, int $length = 512 [, int $options = 0 ]]] )
JSON을 허용합니다. 문자열 형식을 지정하고 이를 PHP 변수로 변환합니다. 여기서 assoc은 매개변수가 TRUE이면 연관 Array를 반환합니다.
(3) 쿼리된 컬럼명 순서대로 데이터를 쿼리한다. 데이터가 비어 있는 경우에는 값을 NULL로 할당하고 그 결과를 배열에 저장하여 데이터베이스에 잘못 정렬된 값이 삽입되는 것을 방지한다. 열 이름을 얻는 또 다른 이유)
(4) (3)의 결과를 문자열로 변환하고 implode() 메서드를 호출합니다.
implode() 메서드 보완:
string implode(string Glue, Array Pieces) ;
이 함수는 배열의 내용을 문자열로 결합합니다. 매개변수 Glue는 단어 사이의 구분 기호입니다.
(5) SQL 문을 하나로 묶습니다. string을 입력한 후 데이터베이스에
을 삽입합니다. updData($objstr,$prekeyname,$tablename) 메서드의 난이도도 SQL 문의 문자열 어셈블리입니다. 어셈블리 형식은 다음과 같습니다.
update $tablename set ..... 여기서 $prekeyname=$data[$prekeyname ]
처음 두 단계는 insertData()와 동일합니다
(3) 열 이름 문자 배열, 기본 키가 아닌 이름의 열 이름 값을 얻고 "열 이름 = 열 이름 값" 문자열을 따릅니다. 형식은 배열에 저장됩니다. 여기에는 불완전한 문자열이 있습니다
집합 이후 (4) (3)의 결과를 문자열로 변환하고, 배열 요소를 ','로 구분합니다. 집합 이후의 마지막 부분입니다. 문자열 형식은 "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 중국어 홈페이지를 주목해주세요!