Bonjour,
j'ai un soucis avec les parametres d'une fonction de classe.
J'ai une table "produits" qui est liée à une autre table "categories" via la clé étrangère "catid" :
Dans ma fonction je passe des arguments en parametres.
Code : Sélectionner tout - Visualiser dans une fenêtre à part produits.catid = categories.id
Par defaut cela me retourne tous les produits de la table "produits" mais je peux également lui mettre un ordre de tri par exemple.
Mon problème est que dans une page je veux que cela m'affiche UNIQUEMENT les produits correspondant à 1 catégorie mais je n'y arrive pas.
Voici ma fonction avec les conditions:
Et voici comment je l'appele dans la page où je veux que cela me donne UNIQUEMENT les produits de la categorie selectionnées via "catid" :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 function tableau_produits($params='') { $tb = array(); $produits = $this->nom_table('produits'); $categories = $this->nom_table('categories'); if (!is_array($params)) $params = array(); if (!isset($params['tables'])) { $params['tables'] = "$produits"; } $conditions = array(); // --- conditions : catégorie /-- C'EST LA QUE CELA NE MARCHE PAS if (isset($params['catid'])) { $c = $params['catid']; $conditions[] = "and $produits.catid = $categories.id"; $conditions[] = "and $produits.catid like '$c'"; if (!eregi($categories, $params['tables'])) { $params['tables'] .= ", $categories"; } } //--FIN DU PROBLEME // --- requête SQL : champs et tables utilises $cde = 'select ' . $params['champs']; $cde .= ' from ' . $params['tables']; $cde .= ' where 1'; // --- requête SQL : ajout des conditions for ($i=0; $i<count($conditions); $i++) { $cde .= ' ' . $conditions[$i]; } $result = $this->requete_sql($this->db, $cde); while($row = mysql_fetch_array($result, MYSQL_ASSOC)) { $key = $row['id']; $tb["$key"] = $row; } return($tb); }
==> donc là je veux qu'il me selectionne les produits en fonction de la "catid" mais cela ne marche pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 $params = array('catid'=>$catid, 'nb_start'=>$nb_start, 'nb_maxi'=>$nb_items_page, 'comptage'=>1); $tb_produits = $agence->tableau_produits($params);
Quelqu'un voit t-il ?
merci beaucoup.








Répondre avec citation


Partager