$stat_globales, 'equipes_top_1' => $equipes_top_1, 'participants_tournois_recents' => $participants_tournois_recents, 'joueurs_au_moins_deux_top_5' => $joueurs_au_moins_deux_top_5, 'tailles_plateaux' => $tailles_plateaux, 'top_5_joueurs_parties_jouees' => $top_5_joueurs_parties_jouees, ]; } /***********************************/ /* Récupération des parties à venir et des parties en cours */ /***********************************/ function get_parties_venir_cours() { global $connexion; $requete_parties = "SELECT * FROM partie"; $requete_parties_a_venir = "SELECT * FROM parties_a_venir"; $requete_parties_en_cours = "SELECT * FROM parties_en_cours"; $res_parties = mysqli_query($connexion, $requete_parties); $res_parties_a_venir = mysqli_query($connexion, $requete_parties_a_venir); $res_parties_en_cours = mysqli_query($connexion, $requete_parties_en_cours); if ($res_parties === FALSE || $res_parties_a_venir === FALSE || $res_parties_en_cours === FALSE) { echo "Erreur d'exécution de la requête SQL : " . mysqli_error($connexion); return null; } $parties = mysqli_fetch_all($res_parties, MYSQLI_ASSOC); $parties_a_venir = mysqli_fetch_all($res_parties_a_venir, MYSQLI_ASSOC); $parties_en_cours = mysqli_fetch_all($res_parties_en_cours, MYSQLI_ASSOC); return [ 'parties' => $parties, 'parties_a_venir' => $parties_a_venir, 'parties_en_cours' => $parties_en_cours ]; } /***********************************/ /* Récupération des parties terminées avec les différentes variantes, récentes et rapides */ /***********************************/ function get_parties_terminees() { global $connexion; $requete_parties_terminees = "SELECT * FROM parties_terminees"; $requete_parties_terminees_recentes = "SELECT * FROM parties_terminees_recentes"; $requete_parties_terminees_rapides = "SELECT * FROM parties_terminees_rapides"; $res_parties_terminees = mysqli_query($connexion, $requete_parties_terminees); $res_parties_terminees_recentes = mysqli_query($connexion, $requete_parties_terminees_recentes); $res_parties_terminees_rapides = mysqli_query($connexion, $requete_parties_terminees_rapides); if ($res_parties_terminees === FALSE || $res_parties_terminees_recentes === FALSE || $res_parties_terminees_rapides === FALSE) { echo "Erreur d'exécution de la requête SQL : " . mysqli_error($connexion); return null; } $parties_terminees = mysqli_fetch_all($res_parties_terminees, MYSQLI_ASSOC); $parties_terminees_recentes = mysqli_fetch_all($res_parties_terminees_recentes, MYSQLI_ASSOC); $parties_terminees_rapides = mysqli_fetch_all($res_parties_terminees_rapides, MYSQLI_ASSOC); return [ 'parties_terminees' => $parties_terminees, 'parties_terminees_recentes' => $parties_terminees_recentes, 'parties_terminees_rapides' => $parties_terminees_rapides ]; } //////////////////////////////////////////////////////////////////////// /////// Informations (structure et contenu) d'une table ////////// //////////////////////////////////////////////////////////////////////// /** * Retourne le détail des infos sur une table * */ function get_infos($typeVue, $nomTable) { global $connexion; switch ($typeVue) { case 'schema': return get_infos_schema($nomTable); case 'data': return get_infos_instances($nomTable); default: return null; } } /** * Retourne le détail sur le schéma de la table */ function get_infos_schema($nomTable) { global $connexion; // récupération des informations sur la table (schema + instance) $requete = "SELECT * FROM $nomTable"; $res = mysqli_query($connexion, $requete); // construction du schéma qui sera composé du nom de l'attribut et de son type $schema = array(array('nom' => 'nom_attribut'), array('nom' => 'type_attribut'), array('nom' => 'clé')); // récupération des valeurs associées au nom et au type des attributs $metadonnees = mysqli_fetch_fields($res); $infos_att = array(); foreach ($metadonnees as $att) { //var_dump($att); $is_in_pk = ($att->flags & MYSQLI_PRI_KEY_FLAG) ? 'PK' : ''; $type = convertir_type($att->{'type'}); array_push($infos_att, array('nom' => $att->{'name'}, 'type' => $type, 'cle' => $is_in_pk)); } return array('schema' => $schema, 'instances' => $infos_att); } /** * Retourne les instances de la table */ function get_infos_instances($nomTable) { return get_infos_requete("SELECT * FROM " . $nomTable); } function get_infos_requete($requete) { // récupération des informations sur la table (schema + instance) $res = executer_une_requete($requete); // extraction des informations sur le schéma à partir du résultat précédent $infos_atts = mysqli_fetch_fields($res); // filtrage des information du schéma pour ne garder que le nom de l'attribut $schema = array(); foreach ($infos_atts as $att) { array_push($schema, array('nom' => $att->{'name'})); // syntaxe objet permettant de récupérer la propriété 'name' du de l'objet descriptif de l'attribut courant } // récupération des données (instances) de la table $instances = mysqli_fetch_all($res, MYSQLI_ASSOC); // renvoi d'un tableau contenant les informations sur le schéma (nom d'attribut) et les n-uplets return array('schema' => $schema, 'instances' => $instances); } function convertir_type($code) { switch ($code) { case 1: return 'BOOL/TINYINT'; case 2: return 'SMALLINT'; case 3: return 'INTEGER'; case 4: return 'FLOAT'; case 5: return 'DOUBLE'; case 7: return 'TIMESTAMP'; case 8: return 'BIGINT/SERIAL'; case 9: return 'MEDIUMINT'; case 10: return 'DATE'; case 11: return 'TIME'; case 12: return 'DATETIME'; case 13: return 'YEAR'; case 16: return 'BIT'; case 246: return 'DECIMAL/NUMERIC/FIXED'; case 252: return 'BLOB/TEXT'; case 253: return 'VARCHAR/VARBINARY'; case 254: return 'CHAR/SET/ENUM/BINARY'; default: return '?'; } } //////////////////////////////////////////////////////////////////////// /////// Traitement de requêtes ////////// //////////////////////////////////////////////////////////////////////// /** * Retourne le résultat (schéma et instances) de la requ$ete $requete * */ function executer_une_requete(string $requete) { global $connexion; $res = true; try { // récupération des informations sur la table (schema + instance) $res = mysqli_query($connexion, $requete); } catch (Exception $e) { debug_log("Erreur SQL : " . $e->getMessage()); return false; } if ($res === false) { debug_log("Erreur SQL : " . mysqli_error($connexion)); } return $res; } /***********************************/ /* fonction de débug */ /***********************************/ function debug_log(string $msg) { global $debug; if ($debug) { echo '

' . $msg . '

'; } } ?>