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
| <?php
$where = [];
$values = [];
if ( ! empty($result->tri_login)) {
$where[] = 'login = :login';
$values[':login'] = $result->tri_login;
}
if ( ! empty($result->tri_fournisseur)) {
$where[] = 'fournisseur = :fournisseur';
$values[':fournisseur'] = $result->tri_fournisseur;
}
$where_collection = [];
$filter_collection = function($p) use (&$where_collection, &$result, &$values) {
if ( ! empty($result->$p)) {
$where_collection[] = "collection_client = :{$p}";
$values[":{$p}"] = $result->$p;
}
};
$filter_collection('tri_collection1');
$filter_collection('tri_collection2');
$filter_collection('tri_collection3');
// montage du sql
$sql = 'SELECT * FROM Produit';
$sql_where = implode(' AND ', $where); // ici c'est login AND fournisseur
$sql_where_collection = implode(' OR ', $where_collection); // ici c'est collec1 OR collec2 OR collec3
if ($sql_where && $sql_where_collection) {
$sql_where_collection = ' OR ('.$sql_where_collection.')';
}
$sql .= ($sql_where || $sql_where_collection) ? " WHERE {$sql_where}.{$sql_where_collection}": '';
$stmt = $connexion->prepare($sql);
$stmt->execute($values);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC); |
Partager