Club de Go de Grenoble


Accueil arrow Forum
07-09-2008
Navigation
Brèves de comptoir
Dernier message: 4 days ago
  • Ether : VENDREDI SOIR : Tournoi Interne pour ce qui ne seront pas encore à MArseille
  • EdhelDil : n'oubliez pas de dire si (et quand, et comment) vous allez au tournoi de Marseilles! le post est : «link»
  • Sam : Je passerai lundi soir, Phil tu y seras?
  • Phil : par"don" ;)
  • Phil : comment ça "traitre" ?!! je n'ai fait que demander qui venait, si tu interpretes ça par "je viens" je n'y peux rien :)
  • gast_4238 : d'accord merci c'est pas trés cher
  • Ether : c'est pas décidé gast mais autours de 25?
  • gast_2785 : c'est pour savoir combien coute une license a l'anné pour un lycéen?
  • don : traitre!
  • Phil : désolé, je n'ai pas pu venir ce soir mais si tu veux, je peux te l'apporter lundi soir à la nat'
  • don : oui
  • Sam : Y'aura moi (avec ou sans goban)
  • Phil : y'a du monde ce soir à l'ADAJE ?
  • Phil : moi j'en ai un mais je sais pas si je te le prete :)
  • don : c'est tentable, mais je ne promet rien
  • Sam : idéalement la semaine prochaine...

Smilies?
Forum Statistics
Total user: 76
Total message: 2879
Forum du club de Go de Grenoble
Bienvenue, Invité
Merci de vous identifier ou de vous inscrire.    Mot de passe perdu?
Script 'Echelle de niveau' du club de go de grenoble (1 lecteur(s)) (1) Invité(s)
Aller en bas Répondre Ajouté aux favoris : 0
SUJET: Script 'Echelle de niveau' du club de go de grenoble
#1137
Toy (Modérateur)
Modérateur
Messages: 752
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Script 'Echelle de niveau' du club de go de grenoble Il y a 1 Année, 7 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&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> Classement </th>";
echo " <th> Nom";
echo "et Prénom </th>";
echo " <th> Niveau </th>";
echo " <th> Licence </th>";
echo " <th> Club </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> ".$data['nom']." ".$data['prenom']." </td>";
echo "<td align='right'> ".$data['niveau']." </td>";
echo "<td align='right'> ".$data['licence']." </td>";
echo "<td align='right'> ".$data['club']." </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.
#2601
youshe (Utilisateur)
S'intéresse un peu...
Messages: 23
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:Script 'Echelle de niveau' du club de go de gre Il y a 8 Mois, 3 Semaines  
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.
#2603
Toy (Modérateur)
Modérateur
Messages: 752
graph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:Script 'Echelle de niveau' du club de go de gre Il y a 8 Mois, 3 Semaines  
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.
#2607
youshe (Utilisateur)
S'intéresse un peu...
Messages: 23
graphgraph
Personne n'est hors ligne Cliquez ici pour voir le profil de cet utilisateur
Re:Script 'Echelle de niveau' du club de go de gre Il y a 8 Mois, 3 Semaines  
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.
Revenir en haut Répondre
Développé par FireBoardObtenir les derniers messages directement sur votre PC
Design by Joomlateam.com | Powered by Joomlapixel.com |