File "traitement_csv.php"
Full Path: /home/analogde/www/download/CHESS_2022/traitement_csv.php
File size: 6.83 KB
MIME-type: text/x-php
Charset: utf-8
<?php
include('database.php');
include('fonctions_elo.php');
DB_connexion();
error_reporting(0);
header( 'content-type: text/html; charset=utf-8' );
function lire_csv($nom_fichier, $separateur =";")
{
$row = 0;
$donnee = array();
$joueur = array();
$file = fopen ($nom_fichier,"r");
$ligne = 1;
$table_csv = array();
while(! feof($file))
{
// lire le fichier ligne par ligne
$tmp = fgets($file);
if($ligne > 3 )
{
// minuscule
$tmp = strtolower($tmp);
// eliminer les ; a gauche
$tmp = ltrim($tmp, ";");
// decomposer la chaine avec le séparateur ;
$pieces = explode(";", $tmp);
//suppression des valeurs inutiles
$array = array_filter($pieces, function($var)
{
return (!($var == '' || is_null($var)));
});
// efface la derniere cellule du tableau
array_pop($array);
// conserver les lignes utiles
if(strlen($tmp) > 2)
{
//$table_csv[] = $array;
if(count($array) == 5)
{
array_push($joueur,$array[1]);
array_push($joueur,$array[2]);
$val = $array[4];
$position = strpos($val, "5");
if($position !== false)
{
//echo " Match nul";
//echo "<br>";
$array[3] = "0.5";
$array[4] = "0.5";
}
// on enregistre
$table_csv[] = $array;
}
else
{
echo "Erreur";
}
}
}
$ligne = $ligne + 1;
}
fclose($file);
$sans_doublon = array_unique($joueur);
//$classer = sort($sans_doublon);
$merge = array($table_csv, $sans_doublon );
//echo "<pre>";
//print_r($merge);
//echo "<br>";
//echo "************************************************************";
return $merge;
}
/********************************/
function nouveau_lire_csv($nom_fichier )
{
$row = 0;
$donnee = array();
$joueur = array();
$file = fopen ($nom_fichier,"r");
$ligne = 1;
$table_csv = array();
$joueur = array();
while(! feof($file))
{
// lire le fichier ligne par ligne
$tmp = fgets($file);
//if($ligne > 3 )
//{
$tmp = strtolower($tmp);
//$tmp = strtr($tmp, 'ÁÀÂÄÃÅÇÉÈÊËÍÏÎÌÑÓÒÔÖÕÚÙÛÜÝ', 'AAAAAACEEEEEIIIINOOOOOUUUUY');
//$tmp = strtr($tmp, 'áàâäãåçéèêëíìîïñóòôöõúùûüýÿ', 'aaaaaaceeeeiiiinooooouuuuyy');
$tmp = str_to_noaccent($tmp);
$pieces = explode(";", $tmp);
if($pieces[1] != "")
{
$table_csv[] = $pieces;
$joueur[] = $pieces[1];
$joueur[] = $pieces[2];
//array_push($joueur,$pieces[1]);
//array_push($joueur,$pieces[2]);
}
//}
$ligne = $ligne + 1;
}
fclose($file);
$nb_ligne = count($table_csv);
for ($i=0; $i < $nb_ligne; $i++)
{
$val = $table_csv[$i][4];
$position = strpos($val, "5");
if($position !== false)
{
echo " Match nul";
echo "<br>";
$table_csv[$i][3] = "0.5";
$table_csv[$i][4] = "0.5";
}
$date_partie = $table_csv[$i][0];
if($date_partie != "")
{ $date = mise_en_forme_date($date_partie);
$sauve = $date;
$table_csv[$i][0] = $date;
//$sauve = $date_partie;
}
else
{ $table_csv[$i][0] = $sauve;
//$table_csv[$i][0] = $sauve;
}
}
$sans_doublon = array_unique($joueur);
$sans_doublon = array_values($sans_doublon);
// ordonner par ordre alphabetique
usort($sans_doublon, "strcasecmp");
$merge = array($table_csv, $sans_doublon );
//echo "<pre>";
//print_r($merge);
return $merge;
}
function str_to_noaccent($str)
{
$tmp = $str;
$tmp = preg_replace('#Ç#', 'C', $tmp);
$tmp = preg_replace('#ç#', 'c', $tmp);
$tmp = preg_replace('#è|é|ê|ë#', 'e', $tmp);
$tmp = preg_replace('#È|É|Ê|Ë#', 'E', $tmp);
$tmp = preg_replace('#à|á|â|ã|ä|å#', 'a', $tmp);
$tmp = preg_replace('#@|À|Á|Â|Ã|Ä|Å#', 'A', $tmp);
$tmp = preg_replace('#ì|í|î|ï#', 'i', $tmp);
$tmp = preg_replace('#Ì|Í|Î|Ï#', 'I', $tmp);
$tmp = preg_replace('#ð|ò|ó|ô|õ|ö#', 'o', $tmp);
$tmp = preg_replace('#Ò|Ó|Ô|Õ|Ö#', 'O', $tmp);
$tmp = preg_replace('#ù|ú|û|ü#', 'u', $tmp);
$tmp = preg_replace('#Ù|Ú|Û|Ü#', 'U', $tmp);
$tmp = preg_replace('#ý|ÿ#', 'y', $tmp);
$tmp = preg_replace('#Ý#', 'Y', $tmp);
return ($tmp);
}
function mise_en_forme_date($date)
{
list($jour, $mois, $annee) = explode('/', $date);
// pour supprimer le 0 si < 10
// $jour = ereg_replace("^0", "", $jour);
//echo $date;
//echo "<br>";
//echo $jour ." " .$mois ." " .$annee;
//echo "<br>";
$timestamp = mktime (0, 0, 0, $mois, $jour, $annee);
return($timestamp);
}
/********************************/
function stockage_joueurs_DB($donnees)
{
$elo = 1000;
$i = 0;
$nb_ligne = count($donnees);
for ($i=0; $i < $nb_ligne; $i++)
{
$prenom = $donnees[$i];
$partie = 0;
$prior = 0;
// verifier que le joueur n'existe pas dans la database
$sql = "select joueur from classement where joueur = '$prenom' ";
$result = mysql_query($sql);
if(mysql_num_rows($result)>=1)
{
echo "Ce joueur existe déjà :" .$prenom;
echo "<br>";
}
else
{
$sql = " INSERT INTO classement ";
$sql = $sql . " (joueur, elo, parties, prior) VALUES ";
$sql = $sql . " ('$prenom', '$elo','$partie','$prior') ";
echo $sql;
echo "<br>";
$result = mysql_query($sql);
if (!$result)
{
echo("ERROR: " . mysql_error() . "\n$SQL\n");
}
}
}
}
function traitement_dates($liste_parties)
{
$i = 0;
$nb_ligne = count($liste_parties);
for ($i=0; $i < $nb_ligne; $i++)
{
$date = $liste_parties[$i][0];
//echo $date;
//echo "<br>";
//$timestamp = strtotime($date);
$annee = 2015;
$mois = 7;
$pieces = explode("-", $date);
$timestamp = mktime (0, 0, 0, $mois, $pieces[0], $annee); // mois jour annee
echo $timestamp;
echo "<br>";
//echo sprintf('%02d', $val);
$liste_parties[$i][0] = $timestamp;
}
return($liste_parties);
}
function import_donnees($fichier)
{
// extractions des donnees
// $donnees = lire_csv($fichier);
$donnees = nouveau_lire_csv($fichier);
//mysql_query('TRUNCATE TABLE table;');
//echo "<pre>";
//print_r($donnees);
//echo "<br>";
// fragmentation
$liste_parties = array();
$liste_joueurs = array();
$liste_parties = $donnees[0];
$liste_joueurs = $donnees[1];
// affichage
echo " ------------------------------" ."<br>";
echo "<pre>";
print_r($liste_parties);
echo "<br>";
echo " ------------------------------" ."<br>";
echo "<pre>";
print_r($liste_joueurs);
mysql_query('TRUNCATE TABLE classement;');
mysql_query('TRUNCATE TABLE evolution;');
mysql_query('TRUNCATE TABLE games;');
mysql_query('TRUNCATE TABLE parties;');
mysql_query('TRUNCATE TABLE rating;');
// enregistrer
stockage_joueurs_DB($liste_joueurs);
// calculer du classement
calcul_classement_elo($liste_parties);
echo "Script executé avec succés";
}
?>