286 lines
8.1 KiB
PHP
286 lines
8.1 KiB
PHP
<?php
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
/////// Gestion de la connxeion ///////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
/**
|
|
* Initialise la connexion à la base de données courante (spécifiée selon constante
|
|
* globale SERVEUR, UTILISATEUR, MOTDEPASSE, BDD)
|
|
*/
|
|
function open_connection_DB()
|
|
{
|
|
global $connexion;
|
|
|
|
$connexion = mysqli_connect(SERVEUR, UTILISATEUR, MOTDEPASSE, BDD);
|
|
if (mysqli_connect_errno()) {
|
|
printf("Échec de la connexion : %s\n", mysqli_connect_error());
|
|
exit();
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Ferme la connexion courante
|
|
* */
|
|
function close_connection_DB()
|
|
{
|
|
global $connexion;
|
|
|
|
mysqli_close($connexion);
|
|
}
|
|
|
|
|
|
////////////////////////////////////////////////////////////////////////
|
|
/////// Accès au dictionnaire ///////////////////////////////////
|
|
////////////////////////////////////////////////////////////////////////
|
|
|
|
|
|
/**
|
|
* Retourne la liste des tables définies dans la base de données courantes (BDD)
|
|
* */
|
|
function get_tables()
|
|
{
|
|
global $connexion;
|
|
|
|
$requete = "SELECT table_name FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA LIKE '" . BDD . "'";
|
|
|
|
$res = mysqli_query($connexion, $requete);
|
|
$instances = mysqli_fetch_all($res, MYSQLI_ASSOC);
|
|
return $instances;
|
|
}
|
|
|
|
|
|
/**
|
|
* Retourne les statistiques sur la base de données courante
|
|
* */
|
|
function get_statistiques()
|
|
{
|
|
global $connexion;
|
|
|
|
$requete_stat_globales = "SELECT * FROM stat_globales";
|
|
$requete_equipes_top_1 = "SELECT * FROM equipes_top_1";
|
|
$requete_participants_tournois_recents = "SELECT * FROM participants_tournois_recents";
|
|
|
|
$res_stat_globales = mysqli_query($connexion, $requete_stat_globales);
|
|
$res_equipes_top_1 = mysqli_query($connexion, $requete_equipes_top_1);
|
|
$res_participants_tournois_recents = mysqli_query($connexion, $requete_participants_tournois_recents);
|
|
|
|
if ($res_stat_globales === FALSE || $res_equipes_top_1 === FALSE || $res_participants_tournois_recents === FALSE) {
|
|
echo "Erreur d'exécution de la requête SQL : " . mysqli_error($connexion);
|
|
return null;
|
|
}
|
|
|
|
$stat_globales = mysqli_fetch_all($res_stat_globales, MYSQLI_ASSOC);
|
|
$equipes_top_1 = mysqli_fetch_all($res_equipes_top_1, MYSQLI_ASSOC);
|
|
$participants_tournois_recents = mysqli_fetch_all($res_participants_tournois_recents, MYSQLI_ASSOC);
|
|
|
|
return [
|
|
'stat_globales' => $stat_globales,
|
|
'equipes_top_1' => $equipes_top_1,
|
|
'participants_tournois_recents' => $participants_tournois_recents
|
|
];
|
|
}
|
|
|
|
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
|
|
];
|
|
}
|
|
|
|
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);
|
|
break;
|
|
case 'data':
|
|
return get_infos_instances($nomTable);
|
|
break;
|
|
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)
|
|
{
|
|
global $connexion;
|
|
|
|
// récupération des informations sur la table (schema + instance)
|
|
$requete = "SELECT * FROM $nomTable";
|
|
$res = mysqli_query($connexion, $requete);
|
|
|
|
if ($res === false) {
|
|
die('Erreur SQL : ' . mysqli_error($connexion));
|
|
}
|
|
// 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($requete)
|
|
{
|
|
|
|
//TODO
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
?>
|