>php教程 >PHP开发 >일반 데이터베이스 작업 클래스에 대한 첫 번째 소개 - 프런트 엔드 easyui-datagrid, 양식(php)

일반 데이터베이스 작업 클래스에 대한 첫 번째 소개 - 프런트 엔드 easyui-datagrid, 양식(php)

高洛峰
高洛峰원래의
2016-12-27 13:43:511246검색

일반 데이터베이스 작업 클래스에 대한 첫 번째 소개 - 프런트 엔드 easyui-datagrid, 양식(php), 구현 코드는 비교적 간단합니다. 구체적인 구현 단계는 아래를 참조하세요.

구현 기능 :

왼쪽의 데이터 그리드에는 간략한 정보가 표시되고, 오른쪽에는 선택한 행에 대한 자세한 정보가 표시됩니다.

(1) 선택한 행을 클릭하면 오른쪽에 상세정보가 표시되며, 그 중 [추가], [수정], [삭제] 버튼은 가능하며, [저장] 버튼은 비활성화됩니다

(2) 클릭 [추가] 버튼, [수정], [삭제] 버튼이 비활성화되고 [저장] 버튼 ] 버튼이 활성화됩니다

(3) [수정] 버튼을 클릭하고 [추가] 및 [삭제] ] 버튼이 비활성화됩니다

난이도 : 일반 데이터베이스 연산 클래스의 insert 메소드와 update 메소드

최종 렌더링 :

프론트엔드 기능이 그다지 완성되지 않았으며, 여전히 버튼 사이의 로직에 문제가 있습니다. 마지막으로 프론트엔드 코드가 추가됩니다

그 중 Formain.php는 프론트엔드에 전달된 값을 판단하고 class.php를 호출하여 결과를 가져옵니다

코드는 비교적 간단합니다

다음과 같습니다.

<?php
  require(&#39;include/mysql_connect/actSQL.class.php&#39;);
  $key=$_REQUEST[&#39;key&#39;];
  $a=new actSQL(&#39;localhost&#39;,&#39;root&#39;,&#39;1234&#39;,&#39;tpss&#39;);
  //获取信息
  if($key==&#39;1&#39;)
  {
   $a->getAllData(&#39;t_prekeychart&#39;);
  }
  if($key==&#39;2&#39;)
  { 
   $objectstr=$_REQUEST[&#39;object&#39;];   
   if($a->insertData($objectstr,&#39;t_prekeychart&#39;))
   {
    echo json_encode("true");
   }else{
    echo json_encode("false");
   }
   //test
   //$test=&#39;{"keychartid":"2","keyid":"2","keychartname":"2","level":"2","showtype":"2","helptips":"2","keylevel":"2","ishmap":"2"}&#39;;
   //$a->insertData($test,&#39;t_prekeychart&#39;);
  }
  if($key==&#39;3&#39;)
  { 
   $prekey=$_REQUEST[&#39;keychartid&#39;];
   $prekeyname=&#39;keychartname&#39;;
   if($a->delData($prekey,$prekeyname,&#39;t_prekeychart&#39;))
   {
    echo json_encode("true");
   }else{
    echo json_encode("false");
   }
  }
  if($key==&#39;4&#39;)
  {
   $objectstr=$_REQUEST[&#39;object&#39;];
   $prekeyname=&#39;keychartid&#39;;
   if($a->updData($objectstr,$prekeyname,&#39;t_prekeychart&#39;))
   {
    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(&#39;,&#39;,$columnname); //将列名数组转换为字符串
     //echo $clos;
     $data=json_decode($objstr,true); //将json格式的字符串转换为关联数组
     //echo $value[&#39;keychartname&#39;];
     $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(&#39;,&#39;,$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(&#39;,&#39;,$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(&#39;,&#39;,$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(&#39;localhost&#39;,&#39;root&#39;,&#39;1234&#39;,&#39;information_schema&#39;);
   if(!$dbc)
   {
    echo "Connect Error".mysqli_connect_error($dbc);
   }else
   {
    //连接成功,从表COLUMNS获取表的所有列名
    $sql="select COLUMN_NAME from columns where TABLE_NAME=&#39;$tablename&#39;";
    $res=@mysqli_query($dbc,$sql);
    $items=array();
    if($res)
    {
     while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))
     {
      $columnname=$row[&#39;COLUMN_NAME&#39;];
      array_push($items,$columnname);
     }
    return $items;
    mysqli_close($dbc);
    }
    else{
     echo "查询失败,请检查SQL语句!";
     }
   }
  }

위 내용은 전체 내용입니다. 이 기사가 여러분 모두 마음에 들었으면 좋겠습니다.

일반 데이터베이스 연산 클래스인 프론트엔드 easyui-datagrid, form(php)에 대한 더 많은 글은 PHP 중국어 홈페이지를 주목해주세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.