From 473ee4ec50a6bfdfa5c145471b077b7e3749beeb Mon Sep 17 00:00:00 2001 From: polo Date: Tue, 29 Nov 2022 04:43:39 +0100 Subject: fonctions date <-> timestamp --- config.php | 4 ++++ php/Model.php | 49 ++++++++++++++++++++++++++++++++++++++++++++++++- php/main.php | 2 +- 3 files changed, 53 insertions(+), 2 deletions(-) diff --git a/config.php b/config.php index 754a887..5933242 100644 --- a/config.php +++ b/config.php @@ -45,6 +45,10 @@ $image_editor = 'gimp'; // $publishing = 'scribus'; $publishing = 'scribus'; +// format des dates: EU = européenne 28-11-2022, US = américaine 11/28/2022 +// $date_format = 'EU'; +$date_format = 'EU'; + //$x_terminal = 'xterm'; // -- état actuel du programme -- diff --git a/php/Model.php b/php/Model.php index 9d0f80f..f3f1fe7 100644 --- a/php/Model.php +++ b/php/Model.php @@ -4,10 +4,13 @@ class Model extends Connection { private $db; // instance de connexion + private $date = ''; + static public $date_format; // dates européennes jj-mm-aaaa + // pourquoi ne pas mettre les fonctions concernées dans une interface? public function __construct() { - $this->db = parent::getInstance(); + $this->db = parent::getInstance(); // connexion self::create_tables(); } @@ -39,4 +42,48 @@ class Model extends Connection // pour les dates, on stockera à priori le timestamp } + + + // date jour/mois/année (string) -> timestamp (int) + private function get_timestamp(): int + { + if(self::$date_format == 'EU') + { + // change jj/mm/aaaa en jj-mm-aaaa + $this->date = preg_replace('#/#', '-', $this->date); + } + elseif(self::$date_format == 'US') + { + // change mm-dd.yyyy en mm/dd/yyyy + $this->date = preg_replace('#[-\.]#', '/', $this->date); + } + else + { + echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); + die(); // brutal + } + return(strtotime($this->date)); + // strtotime() devine le format en analysant la chaîne en entrée, on l'aide un peu + // avec des /, php considère que la date est américaine + // avec des - ou des ., php considère que la date est européenne + } + + // timestamp (int) -> date jj-mm-aaaa (string) + private function get_date(): string + { + if(self::$date_format == 'EU') + { + return(date("j-m-Y", $this->date)); + } + elseif(self::$date_format == 'US') + { + return(date("m/d/Y", $this->date)); + } + else + { + echo('Le fichier config.php comporte une erreur. La variable $date_format doit avoir pour valeur "EU" ou "US"'); + die(); // brutal + } + } + } diff --git a/php/main.php b/php/main.php index 934f718..5855606 100755 --- a/php/main.php +++ b/php/main.php @@ -13,7 +13,6 @@ $file_explorer = 'xdg-open'; // ouvre l'explorateur de fichiers par défaut quan $flyer = $pub . $flyer; $business_card = $pub . $business_card; $db_place .= $db_name . '.sqlite'; -var_dump($db_place); $sqlitebrowser_enable = false; $sqlite_cli = ''; // commande sqlite ou sqlite3 $x_term_command = ''; // commande terminal en mode graphique @@ -24,6 +23,7 @@ require('functions.php'); require('ConnectionDatabase.php'); // class DB extends PDO, connexion à la base et création de la base et des tables si elles n'existent pas déjà require('Model.php'); // class Model extends DB, requêtes SQL Connection::$dsn = 'sqlite:' . $db_place; // Data Source Name = 1er paramètre du constructeur de PDO: $bdd = new PDO($dsn); +Model::$date_format = $date_format; // dates européennes ou américaines $Database = new Model(); // connexion et méthodes pour manipuler la base de données require('ZenityClasses.php'); // méthodes pour créer les commandes -- cgit v1.2.3