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 simplecomme suit :<?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"); } } ?>
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 .
Cette fonction combine le contenu du tableau en une chaîne. Le paramètre Glue est le symbole délimiteur entre les mots
.
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(',',$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语句!"; } } }