Maison >php教程 >PHP开发 >Première introduction aux classes générales d'opération de base de données - front-end easyui-datagrid, formulaire (php)

Première introduction aux classes générales d'opération de base de données - front-end easyui-datagrid, formulaire (php)

高洛峰
高洛峰original
2016-12-27 13:43:511237parcourir

Première introduction à la classe générale d'opération de base de données - front-end easyui-datagrid, formulaire (php), le code d'implémentation est relativement simple, veuillez voir ci-dessous pour les étapes d'implémentation spécifiques.

Fonction d'implémentation :

La grille de données de gauche affiche de brèves informations et celle de droite affiche des informations détaillées sur les ajouts, suppressions et modifications de la base de données

(1. ) Cliquez sur la ligne sélectionnée, et les informations détaillées s'affichent à droite, où les boutons [Ajouter], [Modifier] et [Supprimer] sont disponibles, le bouton [Enregistrer] est désactivé

(2) Cliquez le bouton [Ajouter], les boutons [Modifier] et [Supprimer] sont désactivés, et le bouton [Enregistrer] 】 est activé

(3) Cliquez sur le bouton [Modifier], [Ajouter] et [Supprimer ] les boutons sont désactivés

Difficulté : méthode d'insertion et méthode de mise à jour dans la classe générale d'opération de base de données

Rendu final :

La fonction front-end n'est pas très complète, et là Il y a encore quelques problèmes avec la logique entre les boutons. Enfin, le code front-end est ajouté

Parmi eux, Formain.php juge la valeur transmise au front-end et appelle actSQL class.php obtient le résultat<.>

Le code est relativement simple

comme suit :

<?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");
   }
  }
?>
Regardez les différentes méthodes des classes qui apparaissent dans Formain.php et réfléchissez-y brièvement

Parmi eux,

getAllData($tablename) récupère toutes les informations de la table. Cette méthode est relativement simple et peut être effectuée avec une simple instruction SQL. Enfin, le résultat peut être renvoyé en json. format

delData( $prekey, $prekeyname, $tablename) supprime les informations spécifiées, donc je n'en parlerai pas

insertData( $objectstr, $tablename ) , où $objectstr est une chaîne au format json et $tablename est le nom de la table,

La difficulté est de la reconstituer dans une instruction comme insert into $tablename (...) values(.. ...)

Solution :

(1) Obtenez tous les noms de colonnes basés sur $tablename et convertissez le tableau de noms de colonnes en une chaîne pour préparer l'assemblage du SQL final En plus d'obtenir les noms de colonnes, il y a un autre objectif. Voir ci-dessous

(2) Convertissez la chaîne au format json $objectstr en un tableau associatif, appelez la méthode json_decode()

. et complétez la méthode json_decode()

mixed json_decode ( string $json [, bool $assoc = false [, int $degree = 512 [, int $options = 0 ]]] )

Accepte un JSON formate la chaîne et la convertit en variable PHP, où assoc, lorsque le paramètre est TRUE , renverra l'association Array .

(3) Interrogez les données dans l'ordre des noms de colonnes interrogés. Lorsque les données sont vides, attribuez la valeur à NULL et stockez le résultat dans le tableau pour éviter que les valeurs mal alignées ne soient insérées dans la base de données (. une autre raison pour obtenir les noms de colonnes)

(4) Convertissez le résultat de (3) en chaîne et appelez la méthode implode()

Complétez la méthode implode() :

string implode(string Glue, array Pieces) ;

Cette fonction combine le contenu du tableau en une chaîne. Le paramètre Glue est le symbole délimiteur entre les mots

(5) Rassemblez l'instruction SQL. chaîne, puis insérez

dans la base de données. La difficulté de la méthode updData($objstr,$prekeyname,$tablename) réside également dans l'assemblage de chaînes de l'instruction SQL. Le format d'assemblage doit être le suivant

.

mettre à jour $tablename set ..... où $prekeyname=$data[$prekeyname ]

Les deux premières étapes sont les mêmes que insertData()

(3) Parcourez le tableau de caractères du nom de colonne, obtenez la valeur du nom de colonne du nom de clé non primaire et suivez la chaîne de "nom de colonne = valeur du nom de colonne" Le format est stocké dans le tableau, voici la chaîne incomplète

après l'ensemble (4) Convertissez le résultat de (3) en chaîne, séparez les éléments du tableau par ',' , c'est la dernière partie après l'ensemble Le format de la chaîne est "xx=xx,xx=xx"

(5) Rassemblez la chaîne SQL, puis mettez à jour la base de données

Les fonctions insertData() et updData() sont les suivantes

/*
   * 添加信息
   * @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语句!";
     }
   }
  }
Ce qui précède est l'intégralité du contenu de cet article, j’espère qu’il vous plaira tous.

Pour plus d'articles liés à la classe générale d'opération de base de données - front-end easyui-datagrid, formulaire (php), veuillez faire attention au site Web PHP chinois !

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn