Maison >développement back-end >tutoriel php >ThinkPH implémente le partage de code pour la suppression par lots de colonnes

ThinkPH implémente le partage de code pour la suppression par lots de colonnes

小云云
小云云original
2018-02-12 10:39:511586parcourir

Cet article partage principalement avec vous l'implémentation de la suppression par lots de colonnes dans ThinkPHP pour votre référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

Ce que nous devons obtenir, c'est l'effet suivant :

Après avoir sélectionné le bouton de suppression par lots, vous pouvez sélectionner toutes les colonnes de la page. l’implémentation de la page front-end. Pas grand chose à dire 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 devons convertir le tableau d'identifiants transmis en une chaîne séparée par des virgules telle que : 1,2, 3. De cette manière, l'opération de suppression peut ê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, nous écrivons le code pour la suppression par lots (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 parcourez-le avec foreach Ici, découvrez d'abord tous les identifiants de sous-colonnes (la fonction childid le fera. être utilisé), stockez-le dans le tableau $sonpri2, puis fusionnez $sonpri et $sonpri2 dans un tableau et utilisez la fonction array_merge() pour le compléter. De cette façon, nous pouvons obtenir les identifiants de toutes les sous-colonnes, mais. il y en aura beaucoup dans le groupe d'identifiants que nous avons obtenu. Identifiants en double, 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 :

Utilisez Tp pour supprimer des colonnes

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!

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