dbb = $dbb; } function executerRequete($req){ $query = $this->dbb->query($req); return $query->fetchAll(PDO::FETCH_ASSOC); } function executerRequeteApresPrepare($req,$params){ $query = $this->dbb->prepare($req); // var_dump($req); // foreach($params as $key=>$value){ // // var_dump($key); // $query->bindValue($key,$value); // } $query->execute($params); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Les paramètres d'entête */ function getElementEntetePagesTableauDeBord() { $query = $this->dbb->query("select * from paramètres"); return $query->fetch(PDO::FETCH_ASSOC); } function getArticleById($id_article,$selection="article"){ $query = $this->dbb->prepare("select * from $selection where Numéro=:numero"); $query->bindValue(":numero", $id_article, PDO::PARAM_INT); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); } function getListArticleByIdList($list_id_article,$selection="article"){ $query = $this->dbb->prepare("select * from $selection where Numéro in (".implode(",",$list_id_article).")"); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListArticleJoinWithFamilleByIdList($list_numero_famille=array()){ $query = $this->dbb->query("select B.Numéro, B.Nom from lienfamillearticle A, article B where A.NuméroArticle = B.Numéro and NuméroFamille in (". implode(",", $list_numero_famille).")"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de sélectionner tous les types d'accès d'une famille donnée */ function getAllTypeAccesFromFamilleListe($list_numeros_famille){ $query = $this->dbb->query("select distinct NuméroTypeAccès as Numéro from lienfamillefréquentation A, famillefréquentation B ". " where A.NuméroFamille = B.Numéro and A.NuméroFamille IN (".implode(",",$list_numeros_famille).") order by NuméroTypeAccès"); $list_numeros_types_acces = $query->fetchAll(PDO::FETCH_ASSOC); $list_numeros = []; foreach($list_numeros_types_acces as $numero){ $list_numeros[] = $numero["Numéro"]; } return $list_numeros; } /** * Permet de prendre la liste des articles liés à une liste de type d'accès */ function getListArticleFromTypeAccesList($list_numeros_types_acces){ $query = $this->dbb->query("select distinct NuméroArticle as Numéro from articleaccès A, typeaccès B ". " where A.NuméroTypeAccès = B.Numéro and A.NuméroTypeAccès IN (".implode(",",$list_numeros_types_acces).") order by NuméroArticle"); $list_numeros_articles = $query->fetchAll(PDO::FETCH_ASSOC); $list_numeros = []; foreach($list_numeros_articles as $numero){ $list_numeros[] = $numero["Numéro"]; } return $list_numeros; } function getFamilleArticleById($id_famille_article){ $query = $this->dbb->prepare("select * from famillearticle where Numéro=:numero"); $query->bindValue(":numero", $id_famille_article, PDO::PARAM_INT); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); } function getAllArticleFamille($list_numero_famille=array()){ $query = $this->dbb->query("select NuméroArticle from lienfamillearticle where NuméroFamille in (". implode(",", $list_numero_famille).")"); $tab_list_numeros_article = $query->fetchAll(PDO::FETCH_ASSOC); $list_numeros_article = []; foreach($tab_list_numeros_article as $numero){ $list_numeros_article[] = $numero["NuméroArticle"]; } return $list_numeros_article; } /** * Cumul du jour pour les articles * Permet de calculer le chiffre d'affaires d'une journée donnée */ function getChiffresAffairesProduitsCumulesArticleJour($date, $list_numeros_article) { $query = $this->dbb->query("SELECT date(Date) as Date, NuméroArticle AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente WHERE Date = '".$date."' AND NuméroArticle IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroArticle, Date ORDER BY NuméroArticle, Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Cumul du jour pour les familles * Permet de calculer le chiffre d'affaires d'une journée donnée */ function getChiffresAffairesProduitsCumulesFamilleJour($date, $list_numeros_article) { $query = $this->dbb->query("SELECT date(Date) as Date, NuméroFamille AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente INNER JOIN LienFamilleArticle ON Vente.NuméroArticle = LienFamilleArticle.NuméroArticle WHERE Date = '".$date."' AND NuméroFamille IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroFamille , Date ORDER BY NuméroFamille , Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Cumul du mois * Permet de calcul le chiffre d'affaires de vente durant tout un mois d'une année donnée */ function getChiffresAffairesProduitsCumulesArticleMois($mois,$annee, $list_numeros_article) { $query = $this->dbb->query("SELECT Year(Date) AS AnnéeDate, Month(Date) AS MoisDate, NuméroArticle AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente WHERE month(Date) = ".$mois." and year(Date)=".$annee." AND NuméroArticle IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroArticle, Date ORDER BY NuméroArticle, Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Cumul du mois pour les familles * Permet de calculer le chiffre d'affaires d'un mois d'une année donnée */ function getChiffresAffairesProduitsCumulesFamilleMois($mois,$annee, $list_numeros_article) { $query = $this->dbb->query("SELECT Year(Date) AS AnnéeDate, Month(Date) AS MoisDate, NuméroFamille AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente INNER JOIN LienFamilleArticle ON Vente.NuméroArticle = LienFamilleArticle.NuméroArticle ". " WHERE month(Date) = ".$mois." and year(Date)=".$annee." AND NuméroFamille IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroFamille , Date ORDER BY NuméroFamille , Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Cumul de * Permet de calcul le chiffre d'affaires de vente d'une année donnée */ function getChiffresAffairesProduitsCumulesArticleAnnee($annee, $list_numeros_article) { $query = $this->dbb->query("SELECT Year(Date) AS AnnéeDate, NuméroArticle AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente WHERE year(Date)=".$annee." AND NuméroArticle IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroArticle, Date ORDER BY NuméroArticle, Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Cumul de l'année pour les familles * Permet de calculer le chiffre d'affaires d'un mois d'une année donnée */ function getChiffresAffairesProduitsCumulesFamilleAnnee($annee, $list_numeros_article) { $query = $this->dbb->query("SELECT Year(Date) AS AnnéeDate, NuméroFamille AS NuméroStatistique, SUM(QuantitéArticle) AS QuantitéTotale, SUM(QuantitéArticle*PrixTTCArticle) AS PrixTotal ". " FROM Vente INNER JOIN LienFamilleArticle ON Vente.NuméroArticle = LienFamilleArticle.NuméroArticle ". " WHERE year(Date)=".$annee." AND NuméroFamille IN (".implode(",",$list_numeros_article).") ". " GROUP BY NuméroFamille , Date ORDER BY NuméroFamille , Date"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListeModePaiement(){ $query = $this->dbb->query("select Numéro , Nom from modepaiement ORDER BY Numéro"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListeTypeAcces(){ $query = $this->dbb->query("select Numéro , Nom from typeaccès where Utilisé=-1"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListeFamilleFrequentation(){ $query = $this->dbb->query("select Numéro , Nom from famillefréquentation "); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de construire la requete de selection des articles et des familles d'articles ou de frequentations */ function getResultatRequeteSelectionArticleOuFamille($selection, $archive,$module){ $clause = ""; $requete = ""; // if(!empty($filtre)){ // $clause = " Nom LIKE % '".$filtre."' or Numéro LIKE '%".$filtre."%'"; // } if($selection == "Article"){ if(!empty($archive)){ if(!empty($clause)){ $clause .= " and Autorisé = -1"; } else { $clause = " Autorisé = -1"; } $clause = "WHERE ".$clause; } $requete = "SELECT Numéro, Nom FROM Article ".$clause. " ORDER BY Numéro"; } else { if($module =="ventes" || $module =="comparatif_ventes"){ $requete = "SELECT * FROM FamilleArticle ORDER BY Numéro " ; } else { $requete = "SELECT * FROM famillefréquentation ORDER BY Numéro " ; } } $query = $this->dbb->query($requete); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de construire la requete de selection des articles et des familles d'articles ou de frequentations */ function getResultatRequeteSelectionArticleOuFamilleFrequentation($selection, $archive,$numero_type_acces_choisi,$module){ $clause = ""; $requete = ""; $symb=""; // if(!empty($filtre)){ // $clause = " Nom LIKE % '".$filtre."' or Numéro LIKE '%".$filtre."%'"; // } if($numero_type_acces_choisi =="0")//signifie tous les accès { $symb = ">="; } else{ $symb = "="; } if($selection == "Article"){ if(!empty($archive)){ if(!empty($clause)){ $clause .= " and Autorisé = -1"; } else { $clause = " Autorisé = -1"; } } $requete = "SELECT * FROM Article WHERE Numéro IN (SELECT NuméroArticle FROM ArticleAccès WHERE NuméroTypeAccès ".$symb."".$numero_type_acces_choisi." ORDER BY NuméroArticle) ".$clause. " ORDER BY Numéro"; } else { $requete = "SELECT * FROM famillefréquentation ORDER BY Numéro " ; } $query = $this->dbb->query($requete); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * permet de selectionner un mode de paiement à partir de son numéro */ function getModePaiementById($id){ $query = $this->dbb->prepare("select * from modepaiement where Numéro =:numero"); $query->bindValue(":numero",$id,PDO::PARAM_INT); $query->execute(); return $query->fetch(PDO::FETCH_ASSOC); } /** * ZONE DES FONCTIONS DU COMPARATIF DES FREQUENTATIONS */ function getFrequentationsCumuleesArticleJour($date, $list_numeros_selectionnes, $symb,$numero_type_acces) { $query = $this->dbb->prepare("" . "select date(DatePassage) AS Date, NuméroArticle AS NuméroStatistique, sum(h.`Fréquentation`) as TotalFréquentation from HistoriquePassage h where date(h.DatePassage)=:date and h.`NuméroTypeAccès`".$symb."".$numero_type_acces." AND NuméroArticle IN (".implode(",",$list_numeros_selectionnes).") and h.Sens=0 " . " GROUP BY NuméroArticle, DatePassage ORDER BY NuméroArticle, DatePassage "); $query->bindValue(":date", $date); $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCumuleesArticleMois($mois,$annee, $list_numeros_selectionnes, $symb, $numero_type_acces) { $query = $this->dbb->query("" . "select Year(DatePassage) AS AnnéeDate, Month(DatePassage) AS MoisDate, NuméroArticle AS NuméroStatistique, sum(h.`Fréquentation`) as TotalFréquentation from HistoriquePassage h where year(h.DatePassage)=".$annee." and month(h.DatePassage)=".$mois." and h.`NuméroTypeAccès` ".$symb."".$numero_type_acces." AND NuméroArticle IN (".implode(",",$list_numeros_selectionnes).") and h.Sens=0 " . " GROUP BY NuméroArticle, Year(DatePassage), Month(DatePassage) ORDER BY NuméroArticle, Year(DatePassage), Month(DatePassage) "); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCumuleesArticleAnnee($annee, $list_numeros_selectionnes,$symb, $numero_type_acces) { $query = $this->dbb->query("" . "select Year(DatePassage) AS AnnéeDate, NuméroArticle AS NuméroStatistique, sum(h.`Fréquentation`) as TotalFréquentation from HistoriquePassage h where year(h.DatePassage)=".$annee." and h.`NuméroTypeAccès` ".$symb."".$numero_type_acces." AND NuméroArticle IN (".implode(",",$list_numeros_selectionnes).") and h.Sens=0" . " GROUP BY NuméroArticle, Year(DatePassage) ORDER BY NuméroArticle, Year(DatePassage)"); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * */ function getFrequentationsCumuleesFamilleJour($date,$list_numeros_selectionnes,$symb, $numero_type_acces,$detail=TRUE){ $query = NULL; if($detail === FALSE){ $query = $this->dbb->query("SELECT date(DatePassage) AS Date, NuméroFamille AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation ". " FROM HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) ". " WHERE DatePassage = '".$date."' ". " AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb." ".$numero_type_acces_choisi." GROUP BY NuméroFamille, DatePassage ORDER BY NuméroFamille, DatePassage "); } else { $query = $this->dbb->query("SELECT date(DatePassage) AS Date, NuméroArticle AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation From HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) WHERE DatePassage = '".$date."' AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb. " ".$numero_type_acces." GROUP BY NuméroStatistique, DatePassage ORDER BY NuméroStatistique, DatePassage"); } return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCumuleesFamilleMois($mois,$annee,$list_numeros_selectionnes,$symb, $numero_type_acces,$detail=TRUE){ $requete_statistique = NULL; if($detail === FALSE){ $requete_statistique = "SELECT Year(DatePassage) AS AnnéeDate, Month(DatePassage) AS MoisDate, NuméroFamille AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation FROM HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) WHERE month(DatePassage) = ".$mois." AND year(DatePassage)= ".$annee." AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb." ".$numero_type_acces." GROUP BY NuméroFamille, Year(DatePassage), Month(DatePassage) ORDER BY NuméroFamille, Year(DatePassage), Month(DatePassage)"; } else { $requete_statistique = "SELECT Year(DatePassage) AS AnnéeDate, Month(DatePassage) AS MoisDate, NuméroArticle AS NuméroStatistique, NuméroArticle AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation From HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) WHERE month(DatePassage) = ".$mois." AND year(DatePassage) = '".$annee."' AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb. " ".$numero_type_acces." GROUP BY NuméroStatistique, DatePassage ORDER BY NuméroStatistique, DatePassage"; } $query = $this->dbb->query($requete_statistique); return $query->fetchAll(PDO::FETCH_ASSOC); } function getFrequentationsCumuleesFamilleAnnee($annee,$list_numeros_selectionnes,$symb, $numero_type_acces,$detail=TRUE){ $requete_statistique = NULL; if($detail === FALSE){ $requete_statistique = "SELECT Year(DatePassage) AS AnnéeDate, Month(DatePassage) AS MoisDate, NuméroFamille AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation FROM HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) WHERE year(DatePassage)= ".$annee." AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb." ".$numero_type_acces." GROUP BY NuméroFamille, Year(DatePassage), Month(DatePassage) ORDER BY NuméroFamille, Year(DatePassage), Month(DatePassage)"; } else { $requete_statistique = "SELECT Year(DatePassage) AS AnnéeDate, Month(DatePassage) AS MoisDate, NuméroArticle AS NuméroStatistique, NuméroArticle AS NuméroStatistique, SUM(Fréquentation) AS TotalFréquentation From HistoriquePassage INNER JOIN LienFamilleFréquentation ON (HistoriquePassage.NuméroArticle = LienFamilleFréquentation.NuméroCatégorieEntrée AND HistoriquePassage.NuméroTypeAccès = LienFamilleFréquentation.NuméroTypeAccès) WHERE year(DatePassage) = '".$annee."' AND Sens = 0 AND NuméroFamille IN (". implode(",", $list_numeros_selectionnes).") AND HistoriquePassage.NuméroTypeAccès ".$symb. " ".$numero_type_acces." GROUP BY NuméroStatistique, DatePassage ORDER BY NuméroStatistique, DatePassage"; } $query = $this->dbb->query($requete_statistique); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * *FREQUENTATIONS DES FREQUENTATIONS SIMPLIFIEES */ /** * Fonction pour afficher les frequentations simplifiees en Normal */ function getFrequentationsSimplifieesAffichageNormal($date_debut,$date_fin,$numero_type_acces){ $query =$this->dbb->query("(SELECT NuméroArticle, Nom, SUM(Fréquentation) AS TotalFréquentation, SUM(Fréquentation)/(SELECT SUM(h1.Fréquentation) FROM historiquepassage h1 WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0)*100 AS TotalPourcentage " ." FROM HistoriquePassage INNER JOIN Article ON Article.Numéro = HistoriquePassage.NuméroArticle " ." WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0 " ." GROUP BY NuméroArticle " ." ORDER BY NuméroArticle) " ." UNION " ." (SELECT ' ', 'Total', (SELECT SUM(h1.Fréquentation) FROM historiquepassage h1 WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0), ' ') " .""); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Fonction pour afficher les frequentations simplifiees en Mode Par Module */ function getFrequentationsSimplifieesAffichageParModule($date_debut,$date_fin,$numero_type_acces){ $query = $this->dbb->query("SELECT NuméroCarteAccès, NuméroArticle, Nom, SUM(Fréquentation) AS TotalFréquentation, SUM(Fréquentation)/(SELECT SUM(h1.Fréquentation) FROM historiquepassage h1 WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0)*100 AS TotalPourcentage " ." FROM HistoriquePassage INNER JOIN Article ON Article.Numéro = HistoriquePassage.NuméroArticle " ." WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0 " ." GROUP BY NuméroCarteAccès, NuméroArticle " ." ORDER BY NuméroCarteAccès, NuméroArticle " ); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Fonction pour afficher les frequentations simplifiees en Mode Par Creneau Horaire */ function getFrequentationsSimplifieesAffichageParCreneauHoraire($date_debut,$date_fin,$numero_type_acces){ $query = $this->dbb->query("SELECT NuméroArticle, Hour(HeurePassage) AS heure, Nom, SUM(Fréquentation) AS TotalFréquentation " ." FROM HistoriquePassage INNER JOIN Article ON Article.Numéro = HistoriquePassage.NuméroArticle " ." WHERE DatePassage >='".$date_debut."' AND DatePassage <='".$date_fin."' AND NuméroTypeAccès = ".$numero_type_acces." AND Sens = 0 AND NuméroCarteAccès >= 0 " ." GROUP BY NuméroArticle, Hour(HeurePassage) " ." ORDER BY NuméroArticle " ); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Fonction pour afficher les frequentations simplifiees en Mode Par Famille */ function getFrequentationsSimplifieesAffichageParFamille($date_debut,$date_fin,$numero_type_acces){ $query = $this->dbb->query("(SELECT f.`Numéro` , f.Nom AS Nom, SUM(h.`Fréquentation`) AS TotalFréquentation, SUM(h.`Fréquentation`)/(SELECT SUM(h1.`Fréquentation`) FROM historiquepassage h1, article a1, `famillefréquentation` f1, `lienfamillefréquentation` l1 WHERE a1.`Numéro` = h1.`NuméroArticle` AND a1.`Numéro`= l1.`NuméroCatégorieEntrée` AND h1.`NuméroTypeAccès`=l1.`NuméroTypeAccès` AND f1.`Numéro`=l1.`NuméroFamille` AND h1.DatePassage >='".$date_debut."' AND h1.DatePassage <='".$date_fin."' AND h1.`NuméroTypeAccès` = ".$numero_type_acces." AND h1.Sens = 0 AND h1.`NuméroCarteAccès` >= 0)*100 AS TotalPourcentage " ." FROM historiquepassage h, article a, `famillefréquentation` f, `lienfamillefréquentation` l " ." WHERE a.`Numéro` = h.`NuméroArticle` AND a.`Numéro`= l.`NuméroCatégorieEntrée` AND h.`NuméroTypeAccès`=l.`NuméroTypeAccès` AND f.`Numéro`=l.`NuméroFamille` AND h.DatePassage >='".$date_debut."' AND h.DatePassage <='".$date_fin."' AND h.`NuméroTypeAccès` = ".$numero_type_acces." AND h.Sens = 0 AND h.`NuméroCarteAccès` >= 0 " ." GROUP BY f.`Numéro` " ." ORDER BY f.`Numéro`) " ." UNION " ." (SELECT ' ' , 'Total', (SELECT SUM(h1.`Fréquentation`) FROM historiquepassage h1, article a1, `famillefréquentation` f1, `lienfamillefréquentation` l1 WHERE a1.`Numéro` = h1.`NuméroArticle` AND a1.`Numéro`= l1.`NuméroCatégorieEntrée` AND h1.`NuméroTypeAccès`=l1.`NuméroTypeAccès` AND f1.`Numéro`=l1.`NuméroFamille` AND h1.DatePassage >='".$date_debut."' AND h1.DatePassage <='".$date_fin."' AND h1.`NuméroTypeAccès` = ".$numero_type_acces." AND h1.Sens = 0 AND h1.`NuméroCarteAccès` >= 0), ' ') " ); return $query->fetchAll(PDO::FETCH_ASSOC); } function getDetailsFrequentationsSimplifieesFamille($date_debut,$date_fin,$numero_type_acces){ $query = $this->dbb->query("(SELECT f.`Numéro` as NuméroFamille, f.Nom as NomFamille, h.`NuméroArticle`, a.Nom , SUM(h.`Fréquentation`) AS TotalFréquentation " ." FROM historiquepassage h, article a, `lienfamillefréquentation` l, `famillefréquentation` f " ." WHERE a.`Numéro` = h.`NuméroArticle` AND a.`Numéro`= l.`NuméroCatégorieEntrée` AND h.`NuméroTypeAccès`=l.`NuméroTypeAccès` AND f.`Numéro`=l.`NuméroFamille` AND h.DatePassage >='".$date_debut."' AND h.DatePassage <='".$date_fin."' AND h.`NuméroTypeAccès` = ".$numero_type_acces." AND h.Sens = 0 AND h.`NuméroCarteAccès` >= 0 " ." GROUP BY h.`NuméroArticle` " ." ORDER BY f.`Numéro`, f.Nom, h.`NuméroArticle` )" ." UNION " ." (SELECT ' ' ,' ' ,' ' , 'Total', (SELECT SUM(h1.`Fréquentation`) FROM historiquepassage h1, article a1, `famillefréquentation` f1, `lienfamillefréquentation` l1 WHERE a1.`Numéro` = h1.`NuméroArticle` AND a1.`Numéro`= l1.`NuméroCatégorieEntrée` AND h1.`NuméroTypeAccès`=l1.`NuméroTypeAccès` AND f1.`Numéro`=l1.`NuméroFamille` AND h1.DatePassage >='".$date_debut."' AND h1.DatePassage <='".$date_fin."' AND h1.`NuméroTypeAccès` = ".$numero_type_acces." AND h1.Sens = 0 AND h1.`NuméroCarteAccès` >= 0)) " .""); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Information des frequentation */ function getFrequentationInstantaneeTypeAcces($date_debut,$date_fin, $heure_debut, $heure_fin, $num_type_acces) { $query = NULL; if(!empty($num_type_acces)){ $query = $this->dbb->prepare("" . " SELECT h.HeurePassage as heure_passage , h.Sens as sens, h.`Fréquentation` as frequentation FROM HistoriquePassage h WHERE DatePassage >= :date_d AND DatePassage <= :date_f AND NuméroTypeAccès = :num_type_acces AND HeurePassage >= :heure_debut AND HeurePassage <= :heure_fin ORDER BY Hour(HeurePassage)" . ""); $query->bindValue(":date_d", $date_debut); $query->bindValue(":date_f", $date_fin); $query->bindValue(":heure_debut", $heure_debut); $query->bindValue(":heure_fin", $heure_fin); $query->bindValue(":num_type_acces", $num_type_acces); } else { $query = $this->dbb->prepare("" . " SELECT h.HeurePassage as heure_passage , h.Sens as sens, h.`Fréquentation` as frequentation FROM HistoriquePassage h WHERE DatePassage >= :date_d AND DatePassage <= :date_f AND HeurePassage >= :heure_debut AND HeurePassage <= :heure_fin ORDER BY Hour(HeurePassage)" . ""); $query->bindValue(":date_d", $date_debut); $query->bindValue(":date_f", $date_fin); $query->bindValue(":heure_debut", $heure_debut); $query->bindValue(":heure_fin", $heure_fin); } $query->execute(); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListPays(){ $query = $this->dbb->query("SELECT * FROM ListeGénériqueDétails WHERE NuméroListeGénérique=4 ORDER BY Item "); return $query->fetchAll(PDO::FETCH_ASSOC); } function getPaysParametre(){ $query = $this->dbb->query("SELECT Item as Pays FROM Paramètres A, ListeGénériqueDétails B where A.Pays=B.Numéro and NuméroListeGénérique=4 "); return $query->fetch(PDO::FETCH_ASSOC); } /** * Permet de sélectionner la liste des provenances en fonction du bouton radio coché */ function getListElementsByButtonChecked($criteres){ $nom_champ_provenance = ""; $resultats_provenance = []; $requete = ""; if(isset($criteres['element_tri_provenance'])){ switch( $criteres["element_tri_provenance"]){ case "Pays": $nom_champ_provenance = "Pays"; break; case "Code Postal": $nom_champ_provenance = "CodePostal"; break; case "Ville": $nom_champ_provenance = "Ville"; break; case "Provenance": $nom_champ_provenance = "Provenance"; break; case "Langues": $nom_champ_provenance = "NumeroLangue"; break; } if($criteres['element_tri_provenance'] == "Langues"){ $requete = "SELECT DISTINCT (l.Item) AS Nom ". " FROM (HistoriqueProvenance h ". " INNER JOIN `ListeGénériqueDétails` l ON l.`Numéro` = h.NumeroLangue) ". " INNER JOIN `ListeGénérique` g ON l.`NuméroListeGénérique` = g.`Numéro` ". " WHERE g.Nom = 'Langues'"; } elseif($criteres['element_tri_provenance'] == "Pays" ){ $requete = "SELECT DISTINCT ( $nom_champ_provenance) AS Nom ". " FROM HistoriqueProvenance " . " ORDER BY $nom_champ_provenance "; } else { $requete = "SELECT DISTINCT (". $nom_champ_provenance." ) AS Nom ". " FROM HistoriqueProvenance ". " WHERE Pays = '".$criteres["pays_provenance"]."' ". " ORDER BY $nom_champ_provenance " ; } } if(!empty($requete)){ $resultats_provenance = $this->executerRequete($requete); } return $resultats_provenance; } function getAllRequete(){ $query = $this->dbb->query("select * from Requêtes"); return $query->fetchAll(PDO::FETCH_ASSOC); } function getRequeteById($identificateur){ $query = $this->dbb->prepare("select * from Requêtes where Identificateur=:id"); $query->execute([":id"=>$identificateur]); return $query->fetch(PDO::FETCH_ASSOC); } /** * Permet de récupérer une période à partir de son identifiant */ function getPeriodeById($identificateur){ $query = $this->dbb->prepare("select * from WebPeriodeInscriptionDate where IDPeriodeInscriptionDate=:id"); $query->execute([":id"=>$identificateur]); return $query->fetch(PDO::FETCH_ASSOC); } /** * Permet de récupérer une période à partir de son identifiant */ function getTypeAccesById($identificateur){ $query = $this->dbb->prepare("select * from typeaccès where Numéro=:id"); $query->execute([":id"=>$identificateur]); return $query->fetch(PDO::FETCH_ASSOC); } function getActiviteById($identificateur){ $query = $this->dbb->prepare("select * from webactivite a, WebInscriptionActivite i where a.ID = i.ActiviteID and i.IDInscriptionActivite=:id"); $query->execute([":id"=>$identificateur]); return $query->fetch(PDO::FETCH_ASSOC); } /** * * * @param string $nom_requete * @param string $texte_requete */ function enregistrerRequete($nom_requete,$texte_requete){ $query = $this->dbb->prepare("insert into requêtes set Nom=:nom, Valeur=:val "); $query->execute(array(":nom"=>$nom_requete,":val"=>$texte_requete)); $count = $query->rowCount(); $error = $query->errorInfo(); return compact("count","error"); } /** * * @param int $id_requete : identifiant de la requête à supprimer */ function supprimerRequete($id_requete) { $count = $this->dbb->exec("delete from requêtes where Identificateur = ". intval($id_requete)); return $count; } /** * * @return type */ function getListePeriode(){ $query = $this->dbb->query("SELECT * FROM WebPeriodeInscriptionDate p ORDER BY p.DateFinCycle DESC "); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListActiviteByPeriode($id_periode){ $query = $this->dbb->prepare("select distinct a.Nom, i.IDInscriptionActivite ". " from WebInscriptionActivite i, WebPeriodeInscriptionDate p, WebActivite a ". " where i.ActiviteID=a.ID and p.IDPeriodeInscriptionDate=i.IDPeriodeInscriptionDate and p.IDPeriodeInscriptionDate= :id_periode ". " order by p.NomPeriode, a.Nom, i.JourSemaineCycle, i.HeureDebut, i.HeureFin "); $query->execute(array(":id_periode"=>$id_periode)); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de prendre la liste des dates de créneaux pour une activité donnée */ function getListCreneauActivites($id_activite){ $query = $this->dbb->prepare("SELECT date(c.DateHeureDebut) as creneau FROM WebCreneauActivite c ". " WHERE c.IDInscriptionActivite= :IDInscriptionActivite ". " ORDER BY c.DateHeureDebut"); $query->execute(array(":IDInscriptionActivite"=>$id_activite)); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de recuperer la liste des personnes inscrites aux dates de créneaux d'une activité */ function getListePersonnesInscritesCreneau($id_activite){ $query = $this->dbb->prepare("SELECT a.`Numéro`, CONCAT_WS(' ',a.Nom,a.`Prénom`) as abo ". " FROM WebInscriptionActiviteAbonne i, `Abonné` a ". " WHERE i.IDAbonne=a.`Numéro` AND i.IDInscriptionActivite= :IDInscriptionActivite ". " ORDER BY a.Nom, a.`Prénom` "); $query->execute(array(":IDInscriptionActivite"=>$id_activite)); return $query->fetchAll(PDO::FETCH_ASSOC); } /** * Permet de savoir si un abonné inscrit est effectivement venu aux dates de créneaux d'une activité */ function getEtatPresenceAbonneAuCreneau($id_abonne, $id_activite){ $query = $this->dbb->prepare("SELECT DATE(c.DateHeureDebut) as creneau, r.Etat ". " FROM WebReservationActivite r , WebCreneauActivite c ". " WHERE r.NumeroCreneauxActivite=c.ID AND c.IDInscriptionActivite= :IDInscriptionActivite AND r.NumeroAbonne= :IDAbonne ". " ORDER BY c.DateHeureDebut"); $query->execute(array(":IDInscriptionActivite"=>$id_activite,":IDAbonne"=>$id_abonne)); return $query->fetchAll(PDO::FETCH_ASSOC); } function getListActivites(){ $query = $this->dbb->query("select a.ID, a.Nom from WebActivite a order by a.Nom "); return $query->fetchAll(PDO::FETCH_ASSOC); } }