Maison >développement back-end >tutoriel php >Méthode ThinkPHP pour implémenter la suppression par lots de colonnes
Cet article présente principalement la méthode de suppression par lots de colonnes dans ThinkPHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.
Ce que nous devons obtenir, c'est cet effet :
Après avoir sélectionné le bouton de suppression par lots, vous peut tout sélectionner La colonne de cette page est l'implémentation de la page front-end. Je n'entrerai pas dans les détails ici. Passons directement au sujet : la fonction de suppression par lots.
1. Il y a aussi un petit point ici sur la page frontale, c'est-à-dire que la valeur du nom de la zone de sélection doit se voir attribuer un tableau d'identifiant, et la valeur est l'identifiant. de la colonne.
2. Nous écrivons une méthode de suppression par lots distincte dans le contrôleur
public function privilege_bdel(){ $ids = I('ids'); $pri = D('privilege'); $ids = implode(',', $ids); if($ids){ if($pri->delete($ids)){ $this->success('批量删除栏目成功!',U('Privilege/privilege_lst')); }else{ $this->error('批量删除栏目失败,请重试!'); } }else{ $this->error('未选中任何内容,请重试!'); } }
Ici, nous Vous devez convertir le tableau d'identifiants transmis en une chaîne séparée par des virgules telle que : 1, 2, 3, afin que l'opération de suppression puisse être effectuée directement.
C'est le résultat de nos options de vidage. C'est également la base sur laquelle nous pouvons juger si la suppression est une suppression unique ou une suppression par lots. [id] S'il s'agit d'un tableau, cela signifie qu'une suppression par lots est en cours, sinon il s'agit d'une suppression unique.
3. Modification du constructeur avant suppression dans le modèle
public function _before_delete($options){ //批量删除 if(is_array($options['where']['id'])){ $arr = explode(',', $options['where']['id'][1]); $sonpri = array(); foreach ($arr as $k => $v) { $sonpri2 = $this->childid($v); $sonpri = array_merge($sonpri,$sonpri2); } $sonpri = array_unique($sonpri); $chilrenids = implode(',', $sonpri); }else{//单个删除 $chilrenids =$this->childid($options['where']['id']); $chilrenids = implode(',', $chilrenids); } if($chilrenids){ $this->execute("delete from ed_privilege where id in($chilrenids)"); } }
Ici on écrit Code pour batch suppression (une seule suppression a déjà été écrite et ne sera plus mentionnée)
Convertissez la chaîne passée en un tableau sans virgules et stockez-la dans $arr, créez un tableau vide $sonpri, puis foreach Traversal, ici trouvez d'abord tous les identifiants de sous-colonnes (en utilisant la fonction childid), stockez-les dans le tableau $sonpri2, puis fusionnez $sonpri et $sonpri2 dans un tableau, utilisez la fonction array_merge() pour terminer, afin que nous puissions l'obtenir. ID de toutes les sous-colonnes, mais il y aura de nombreux ID en double dans le groupe d'ID que nous avons obtenu, nous devons donc ici également effectuer une opération de duplication, en utilisant la fonction array_unique(). Enfin, divisez à nouveau le tableau pour obtenir la chaîne d'identification, puis supprimez-la et vous avez terminé.
Recommandations associées :
Implémentation PHPSuppression par lotsMéthode d'opération jQuery
Implémentation ThinkPHSuppression par lotsPartage de code de colonne
PHPSuppression par lotsCode d'instance jQuery
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!