Maison  >  Article  >  développement back-end  >  TP5 implémente simplement une fonction de filtrage de produits à plusieurs niveaux similaire à Taobao (exemple de code)

TP5 implémente simplement une fonction de filtrage de produits à plusieurs niveaux similaire à Taobao (exemple de code)

不言
不言avant
2019-03-02 13:13:123462parcourir

Le contenu de cet article concerne la mise en œuvre simple par TP5 de la fonction de filtrage de produits à plusieurs niveaux de type Taobao (exemple de code). Il a une certaine valeur de référence. J'espère que cela vous sera utile. .

En travaillant sur un projet il y a quelques jours, j'ai découvert le besoin d'une fonction de filtrage de classification de produits à plusieurs niveaux. Je n’avais jamais fait cela auparavant, et après avoir vérifié de nombreuses informations, j’ai finalement réussi. Même si la mise en œuvre n’est pas assez élégante, elle est au moins efficace, et j’en suis toujours très content. Un rookie a à cœur de devenir un maître. J’aimerais partager avec vous des chaussures pour enfants ici, et n’hésitez pas à me donner quelques conseils.
Parlons d'abord du principe : PHP implémente un filtrage multi-niveaux principalement en utilisant un lien pour obtenir les paramètres, et les paramètres contenus dans chaque balise sont transmis au contrôleur d'arrière-plan via un lien. Après avoir reçu les paramètres, le contrôleur ensuite. attribue la valeur au modèle, interroge les données correspondantes en fonction des paramètres et les envoie à la réception. Ce n'est pas difficile à mettre en œuvre. Quand j'en parle, j'ai l'impression de n'en avoir aucune idée au début...
Ce qui suit est un exemple de code frontal :

<div>
    <span>类型:</span>
    <!-- 0~4代表ID值 -->
    <a> 0, 'mode' => $a, 'price'=>$c])}">全部</a>
    <a> 1, 'mode' => $a, 'price'=>$c])}">官方新闻</a>
    <a> 2, 'mode' => $a, 'price'=>$c])}">移动应用</a>
    <a> 3, 'mode' => $a, 'price'=>$c])}">微信公众号</a>
    <a> 4, 'mode' => $a, 'price'=>$c])}">Android开发</a>

    <span>模式:
    <a> $b, 'mode' => '0', 'price'=>$c])}">全部</a>
    <a> $b, 'mode' => '1', 'price'=>$c])}">模式1</a>
    <a> $b, 'mode' => '2', 'price'=>$c])}">模式2</a>
    <a> $b, 'mode' => '3', 'price'=>$c])}">模式3</a>
    <a> $b, 'mode' => '4', 'price'=>$c])}">模式4</a>
    <a> $b, 'mode' => '5', 'price'=>$c])}">模式5</a>
    <a> $b, 'mode' => '6', 'price'=>$c])}">模式6</a>

    <span>预算价格:
    <a> $b, 'mode' => $a, 'price'=>'0'])}">全部</a>
    <a> $b, 'mode' => $a, 'price'=>'1'])}">600以下</a>
    <a> $b, 'mode' => $a, 'price'=>'600'])}">600-1000</a>
    <a> $b, 'mode' => $a, 'price'=>'1000'])}">1000-5000</a>
    <a> $b, 'mode' => $a, 'price'=>'5000'])}">5000以上</a>
</span></span>
</div>


Tout le monde peut certainement comprendre ce code, je vais vous expliquer un peu plus. Par exemple, lorsque l'utilisateur clique pour la première fois sur tout ce qui se trouve dans la catégorie, le champ de catégorie de 0 sera passé en arrière-plan. L'arrière-plan reçoit le jugement et attribue la valeur à la réception Si la valeur du champ de catégorie est 0, toutes les données de catégorie sont interrogées. Si l'utilisateur clique sur tout ce qui se trouve dans le mode pour la deuxième fois, alors, comme la valeur de catégorie est attribuée à partir de l'arrière-plan, elle sera 0 et le mode sera 0. Si vous cliquez sur tout dans le prix pour la troisième fois, les trois valeurs d'étiquette seront 0. À ce stade, l'arrière-plan détermine les conditions. Si tous sont égaux à 0, alors tous sont interrogés et le modèle est parcouru et affiché. Tirez des conclusions à partir d’un exemple, et il en va de même pour d’autres étiquettes. En fonctionnement réel, ce n'est certainement pas si bête d'écrire les valeurs une par une dans les balises. Il vous suffit d'utiliser volist pour parcourir et obtenir les valeurs. Tout le monde le comprend.
Comme il s'agit d'un filtre multi-niveaux, il doit y avoir plus d'une condition de méthode Where, donc la valeur de la méthode Where doit être épissée. Je suis un TPer, j'utiliserai la méthode TP5 comme. exemple :
$b = input('category') ;//ID de catégorie reçu
$a = input('mode'); //ID de mode reçu
$c = input('price') ; //Valeur de la fourchette de prix reçue
$ où = ['category'=>$category,'mode'=>$mode,'price'=>$price];//Épissage où condition
$data = model('table name')- >where($where)->select(); //Requête de données
return $this->fetch('',[
'data' =>$data,
'c '=>$c,
'b'=>$b,
'a'=>$a
]); mission

Bien sûr, la situation réelle doit être de définir des conditions pour juger les données de trois valeurs, et de définir où les conditions en fonction des valeurs. Par exemple :

 if ($a == 0 && $b == 0 && $c == 0) {//条件全部为空,即显示所有
        $where = '';
    } elseif ($a == 0 && $b != 0 && $c != 0) {//模式为全部范围,分类和价格单独指定。
        $where = ['b'=>$b,'c'=>$c];
    }

Parce que mon code est relativement redondant, je ne montrerai pas ma honte...
L'effet final est le suivant :

TP5 implémente simplement une fonction de filtrage de produits à plusieurs niveaux similaire à Taobao (exemple de code)


TP5 implémente simplement une fonction de filtrage de produits à plusieurs niveaux similaire à Taobao (exemple de code)

Le style de l'image peut être jugé dans la balise Si la valeur du paramètre reçue par la page est la même que la valeur dans la balise actuelle, le style sera. mis en évidence pour la balise. Pour l'instant, c'est tout. Si des étudiants ont de meilleures idées, n'hésitez pas à m'éclairer.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer