|
Forum Statistics |
Total user: 76 Total message: 2856
|
|
|
|
Re:Script 'Echelle de niveau' du club de go de gre (1 lecteur(s)) (1) Invité(s)
Ajouté aux favoris : 0
|
|
|
SUJET: Re:Script 'Echelle de niveau' du club de go de gre
|
Toy (Modérateur)
Modérateur
Messages: 752
|
|
Script 'Echelle de niveau' du club de go de grenoble Il y a 1 Année, 6 Mois
|
|
Salut,
Sur ce site, on utilise deux scripts pour afficher l'échelle de niveau du club:
- un premier pour lire l'échelle à jour dans le fichier d'échange de la ffg ( http://ffg.jeudego.org/echelle/echtxt/ech_ffg.txt) et importer l'échelle restreinte au club dans la base de donnée mysql du site.
- un second script pour l'affichage de l'echelle à proprement parler, c'est à dire lire l'echelle dans la base de données et l'afficher en générant le code html.
Il faut avant tout créer les tables dans la base mysql:
* Créer les tables dans la base mysql (via phpMyAdmin):
QUOTE:
######################################################################
#
# 10/01/2007
#
# A executer dans PHPMYADMIN pour creer les tables
#
# Autor: igotoy (at) gmail.com
#
######################################################################
-- --------------------------------------------------------
--
-- Structure de la table `38Gr_echelle`
--
CREATE TABLE `38Gr_echelle` (
`id` int(8) NOT NULL auto_increment,
`nom` varchar(32) NOT NULL default '',
`prenom` varchar(32) NOT NULL default '',
`niveau` int(16) NOT NULL default '0',
`mark` varchar(8) NOT NULL default '',
`licence` varchar(16) NOT NULL default '',
`club` varchar(8) NOT NULL default '',
`date` varchar(16) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=174 ;
-- --------------------------------------------------------
--
-- Structure de la table `echelle_conf`
--
CREATE TABLE `echelle_conf` (
`date` varchar(32) NOT NULL default ''
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Structure de la table `ffg_echelle`
--
CREATE TABLE `ffg_echelle` (
`id` int(8) NOT NULL auto_increment,
`nom` varchar(32) NOT NULL default '',
`prenom` varchar(32) NOT NULL default '',
`niveau` int(16) NOT NULL default '0',
`mark` varchar(8) NOT NULL default '',
`licence` varchar(16) NOT NULL default '',
`club` varchar(8) NOT NULL default '',
`date` varchar(64) NOT NULL default '',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7341 ;
Lorsque l'échelle est mise à jour, il faut appeler le script suivant pour mettre à jour notre copie.
* Script d'importation:
QUOTE: ######################################################################
#
# 10/01/2007
#
# script pour importer l'echelle (fichier d'echange) dans une base
# mysql. note: la base doit exister
# (cf. script_exemple_echelle_sql.php)
#
# Autor: igotoy (at) gmail.com
#
######################################################################
<?php
// Chemin du fichier d'échange
$file = "http://ffg.jeudego.org/echelle/echtxt/ech_ffg.txt";
// Ouvre en lecture le fichier d'echange
$fd = fopen($file,"r");
if (!$fd) die("Impossible d'ouvrir le fichier");
// Indices de boucle
$i=1;
$j=1;
// Infos de compte (peut être stocké dans un fichier config.php et appelé par include)
$server_sql = "SERVEUR DE LA BDD";
$sql_login = "LOGIN";
$sql_pass = "PASSWORD";
$sql_table = "NOM DE LA TABLE";
// Connecte à la bdd
$db = mysql_connect($server_sql, $sql_login, $sql_pass) or die('Erreur de connexion '.mysql_error());
mysql_select_db($sql_table,$db) or die('Erreur de selection '.mysql_error());
// Vide les anciennes tables
mysql_query("DELETE FROM ffg_echelle") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_query("DELETE FROM 38Gr_echelle") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
mysql_query("DELETE FROM echelle_conf") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// Lit la date dans le fichier d'echange
$date = str_replace("#","",fgets($fd, 1024));
// Ecrit la date dans la table echelle_conf
mysql_query("INSERT INTO echelle_conf(date) VALUES('$date')") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// Boucle de lecture
while (!feof($fd)) {
// Lit une ligne du fichier
$ligne = str_replace("'","\'",fgets($fd, 1024));
// Parse la ligne
list($nom, $prenom, $niveau, $mark, $licence, $club) = sscanf($ligne, "%s %s %d %s %s %s");
// Insère le contenu dans la table ffg_echelle (cette table contient l'echelle ENTIERE)
$sql = "INSERT INTO ffg_echelle(id, nom, prenom, niveau, mark, licence, club) VALUES('$i','$nom','$prenom', '$niveau','$mark','$licence','$club')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
// Si joueur grenoblois (38Gr), on insère dans la table 38Gr_echelle
if ($club == '38Gr') {
$sql = "INSERT INTO 38Gr_echelle(id, nom, prenom, niveau, mark, licence, club) VALUES('$j','$nom','$prenom', '$niveau', '$mark','$licence','$club')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$j++;
}
$i++;
}
// Ferme la connection à la base
mysql_close();
fclose($fd);
?>
Pour l'affichage, on appelle la copie:
* Script d'affichage:
QUOTE: ######################################################################
#
# 10/01/2007
#
# script pour afficher l'echelle
#
# Autor: igotoy (at) gmail.com
#
######################################################################
<?php
// Infos de compte (peut être stocké dans un fichier config.php et appelé par include)
$server_sql = "SERVEUR DE LA BDD";
$sql_login = "LOGIN";
$sql_pass = "PASSWORD";
$sql_table = "NOM DE LA TABLE";
// Connecte à la bdd
$db = mysql_connect($server_sql, $sql_login, $sql_pass) or die('Erreur de connexion '.mysql_error());
mysql_select_db($sql_table,$db) or die('Erreur de selection '.mysql_error());
// on crée la requête SQL pour lire la date de version de l'echelle
$sql = 'SELECT date FROM echelle_conf';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$data = mysql_fetch_assoc($req);
$date = $data['date'];
// Affiche la date de l'echelle
echo "<div style='text-align: center;'><span style='font-style: italic;'>".$date;
// Affiche la source FFG
echo ", extraite de <a target='_blank' href='http://ffg.jeudego.org/echelle/echelle_niveau.php?strage=0&amp;strgroupe=38Gr'>Echelle de niveau de la FFG</a></span></div>";
echo "<br>";
echo "<br>";
// Affiche l'echelle dans un tableau
echo "<table ";
echo " style='margin-left: auto; margin-right: auto; text-align: left; width: 60%;'";
echo " border='2' cellpadding='2' cellspacing='2'>";
echo " <tbody>";
echo " <tr>";
echo " <th>&nbsp;Classement&nbsp;</th>";
echo " <th>&nbsp;Nom";
echo "et Pr&eacute;nom&nbsp;</th>";
echo " <th>&nbsp;Niveau&nbsp;</th>";
echo " <th>&nbsp;Licence&nbsp;</th>";
echo " <th>&nbsp;Club&nbsp;</th>";
echo " </tr>";
// on crée la requête SQL pour extraire l'echelle grenoblois triée par niveau du plus fort au plus faible
$sql = "SELECT nom,prenom,niveau,licence,club FROM 38Gr_echelle WHERE mark='L' ORDER BY niveau DESC";
// on envoie la requête
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
// Boucle pour affichage
$i=1;
$j=1;
while($data = mysql_fetch_assoc($req)){
echo "<tr><td align='center'>".$j."</td>";
echo "<td>&nbsp;".$data['nom']." ".$data['prenom']."&nbsp;</td>";
echo "<td align='right'>&nbsp;".$data['niveau']."&nbsp;</td>";
echo "<td align='right'>&nbsp;".$data['licence']."&nbsp;</td>";
echo "<td align='right'>&nbsp;".$data['club']."&nbsp;</td></tr>";
$j++;
}
echo " </tbody>";
echo "</table>";
// Ferme la connexion à la base
mysql_close();
?>
Le code est à adapter avec vos infos de comptes d'accès à la base et avec votre critère de tri.
La table ffg_echelle n'est pas vraiment nécessaire (pour cette utilisation).
N'hésitez pas à poster vos remarques ou autres questions à la suite de ce message. (en particulier si y a des choses à améliorer ^^)
Vous pouvez télécharger une archive contenant les trois scripts:
http://grenoble.jeudego.org/forum/files/script_echelle_38gr_147.zip
|
|
|
|
|
|
|
Le club de Go de Grenoble est en ligne:
- sur Facebook.
- sur Youtube.
- sur KGS dans la salle "Club de Grenoble", catégorie "Clubs".
- sur Google Maps.
|
|
|
L'administrateur a désactivé l'accès public en écriture.
|
youshe (Utilisateur)
S'intéresse un peu...
Messages: 23
|
|
Re:Script 'Echelle de niveau' du club de go de gre Il y a 7 Mois, 1 Semaine
|
|
|
J'ai pas vraiment encore fouillé les sources, et faut dire que je suis un peu réfractaire au php mais la mise à jour de la BDD est effectuée tous les combien ?
Une autre vision des choses pourrait être par exemple de parser l'échelle FFG en temps réel et d'afficher le résultat sans passer par le SQL ? Est-ce vraiment trop long pour le "client" ?
Fred
|
|
|
|
|
|
|
L'administrateur a désactivé l'accès public en écriture.
|
Toy (Modérateur)
Modérateur
Messages: 752
|
|
Re:Script 'Echelle de niveau' du club de go de gre Il y a 7 Mois, 1 Semaine
|
|
Salut,
La mise à jour est faite à la main par moi ou par toute personne qui appelle http://grenoble.jeudego.org/scripts/echelle/script_maj_echelle.php
Avant, mon client de messagerie était configuré pour appeler ce script lorsque je recevais un message avec 'echelle mise jour' dans le corps ou le sujet mais j'ai changé donc y a plus.
On peut bien sûr parser directement le fichier d'échange. Ce n'est pas spécialement long d'après ce que je me souviens et c'est ce que font la plupart des autres sites qui affichent l'échelle.
A l'époque je voulais surtout importer ça dans la bdd mysql pour pouvoir réutiliser les valeurs dans d'autres scripts (qui n'ont jamais vu le jour). Par exemple, je voulais ajouter la courbe de niveaux dans les profils des membres licenciés FFG...
edit: ben tiens! le lien pour MAJ de la BDD ne marche plus à cause de la nouvelle config du site, faut que je modifie ça...
|
|
|
|
|
|
|
Dernière édition: 20-12-2007 à 14:14 Par Toy.
|
|
|
Le club de Go de Grenoble est en ligne:
- sur Facebook.
- sur Youtube.
- sur KGS dans la salle "Club de Grenoble", catégorie "Clubs".
- sur Google Maps.
|
|
|
L'administrateur a désactivé l'accès public en écriture.
|
youshe (Utilisateur)
S'intéresse un peu...
Messages: 23
|
|
Re:Script 'Echelle de niveau' du club de go de gre Il y a 7 Mois, 1 Semaine
|
|
okay, perso, je bosse sur mon serveur avec zope et je pensais faire une sorte de script comme ça , mais en python.
Il verra certainement le jour pendant les vacances scolaires
Fred
|
|
|
|
|
|
|
L'administrateur a désactivé l'accès public en écriture.
|
|
|
|
|
|
|
|