Légende
|
Bonjour à tous
![]() Je voulais vous presenter un cas pratique de l'utilisation des flux XML mis a dispo via le portail de SoE ! Si vous vous rendez sur la page de garde du site des Nomades => http://www.guilde-nomades.org , vous retrouver les information IG en temps réel des infos de VGplayer des effectif de la guildes, leurs classe artisanale et d'aventure, ainsi qu'un lien pointant vers leur fiche personalisé ! Donc un bon point pour SoE qui affranchi la longue et fatiguante tache pour recenser les lvl et autre informations des membres IG !
__________________
http://www.canardpc.com |
![]() |
|
Aller à la page... |
Utiliter des flux XML des guildes, cas pratique
Suivre Répondre |
|
Partager | Rechercher |
|
Citation :
|
![]() |
|
Légende
|
Bon aller je poste mon ptit script tous sale
![]() Code:
$xml = "http://www.guilde-nomades.org/files/guilde-nomades.xml"; # emplacement du fichier XML $error_vg = false ; $fp = fopen($xml, "r") or $error_vg = true; if ($error_vg) { $str_member = "<div style=\"width=100%;text-align:center;font-weight:bold;background-color:#9a7d4f\">Service temporairement indisponible<br/>Raffraichissez la page ou attendez quelques minutes</div>" ; #en cas de pb afficher un message d'erreur elegant ;) }else{ /*********DEBUT DE TRAITEMENT DU FICHER XML*********/ while (!feof($fp)) { $data .= fgets($fp, 2048); } fclose($fp); $data = str_replace("<","<",$data); $data = str_replace(">",">",$data); $data = str_replace(" "," ",$data); $data = str_replace("⁄","/",$data); $data = str_replace("<br>","",$data); $data = str_replace("<p>","",$data); // Déclaration de la fonction récursive ParseNode() function ParseNode($node, &$array) { global $id; $childnodes = $node->child_nodes(); foreach ($childnodes as $childnode) { if (trim($childnode->tagname) == "id") { $id = $childnode->get_content(); } elseif (trim($childnode->tagname) != "") { ParseNode($childnode, $array); } elseif (trim($childnode->node_name()) == "#text" && trim($childnode->get_content()) != "") { $array[$id][$node->tagname] = $childnode->get_content(); } } } // Parsing du document XML via la fonction ParseNode() $domdoc = domxml_open_mem($data); $root = $domdoc->document_element(); $arraydoc = array(); ParseNode($root, $arraydoc); asort($arraydoc) ; /**********FIN DE TRAITEMENT DU FICHER XML*********/ /*********DEBUT CREATION DU CODE HTML ***********/ $guild_name = $arraydoc['111669149893']['name'] ; $guild_server = $arraydoc['111669149893']['server'] ; //echo "<h1>Guilde : $guild_name<br/><h1>" ; //echo "<h3>Server : $guild_server<br/></h3>" ; next($arraydoc); $turn=0 ; $str_member = "<table width=100%><tr><td style=\"text-align:center;font-weight:bold;background-color:#9a7d4f\">Nom</td><td style=\"text-align:center;font-weight:bold;background-color:#9a7d4f\">Aventurier</td><td style=\"text-align:center;font-weight:bold;background-color:#9a7d4f\">Artisant</td></tr>" ; while ($member = current($arraydoc)) { if (strcmp($member['name'],'Lyndsay') && strcmp($member['name'],'Flogtestbis')) { #ceci est un bug fix du XML pour ma guilde $key=key($arraydoc) ; $str_member = $str_member."<tr><td><span style=\"font-size:10px\">"; $str_member = $str_member."<a href=\"http://vgplayers.station.sony.com/characters.vm?characterId=$key\">".$member['guildRank']." <b>".$member['name']."</b></a></span></td>" ; $ad_name = explode(" ",$member['adventureClass']) ; $ad_name[0] == "Dread" ? $ad_name[0] = "Dread Knight" : $ad_name[0] = $ad_name[0] ; $str_member = $str_member."<td><span style=\"font-size:10px\">".$ad_name[0]." niveau ".$member['adventureLevel']."</span></td>" ; $cr_name = explode(" ",$member['craftingClass']) ; $str_member = $str_member."<td><span style=\"font-size:10px\">".$cr_name[0]." niveau ".$member['craftingLevel']."</span></td>" ; $str_member = $str_member."</tr>"; } next($arraydoc) ; } $str_member = $str_member."</table>"; /*********DEBUT CREATION DU CODE HTML ***********/ }
__________________
http://www.canardpc.com |
![]() |
|
|
Citation :
Si c'est le meme c'est pas du temps reel, y a entre 24 et48h de decalage. |
![]() |
|
Légende
|
J'y ai pensé aussi pour le temps de synchro mais vu les ressources nessaissare ^^, je prefere etre a jour 2 heure maxi apres les modif que 24h ^^.
En effet je me synchronise sur VGplayer mais j'ai changé le script car si VG est down l'info l'ai aussi, donc je taf sur une copie local (automatiser a 2H de synchro). Le grand avantage n'etant pas être a 100% temps reel mais surtout d'avoir des informations mis a jour toute seul ^^.
__________________
http://www.canardpc.com |
![]() |
|
|
Ozzy stop te la péter avec tes commandes, t'es tout weak
![]() PS : ceci est un up déguisé pour montrer le jolie travail que mon collègue nomade à fait ![]() |
![]() |
|
|
effectivement trés bon boulot
![]() la c'est un peu tard mais demain je verrai si y a pas moyen d'intégrer ca sur notre site ![]() ![]() |
![]() |
|
|
Pour la partie relative au traitement du document XML je l'ai mis à disposition pour que ça soit utilisé justement donc c'est libre service
![]() |
![]() |
|
Légende
|
Exact, merci beaucoup HellR d'ailleur, honte a moi de ne pas avoir citer ton bout de code
![]() Pour le reste du code c'est GPLv3 on va dire ![]() |
![]() |
|
|
Ca marche très bien sur mon compte free :/
http://hellr.free.fr/vg/siggen/parse...d=111669149799 (j'ai fait un print_r() de l'array). |
![]() |
|
|
Le flux xml est très rapide, c'est le site même avec ses flash et autres scripts qui est lent.
Regarde ton flux par exemple: http://vgplayers.station.sony.com/in...d=111669149818 ![]() |
![]() |
|
|
hoooo mon flux xml **larme à l'oeil** c'est le plus beau flux xml du monde eEEnnntier
![]() (ps : j'avais trouvé avant na ![]() |
![]() |
|
Légende
|
Bon bien je suis passé sur la BDD pour les tris et c'est vachement mieu en perf et en tri !
La base : Code:
CREATE TABLE `phpbb_listmember` ( `lm_key` VARCHAR( 32 ) NOT NULL , `lm_rank` VARCHAR( 20 ) NOT NULL , `lm_adclass` VARCHAR( 20 ) NOT NULL , `lm_adlvl` INT( 8 ) NOT NULL , `lm_crclass` VARCHAR( 20 ) NOT NULL , `lm_crlvl` INT( 20 ) NOT NULL , `lm_name` VARCHAR( 50 ) NOT NULL ) ENGINE = MYISAM ; Code:
$xml = "http://www.guilde-nomades.org/files/guilde-nomades.xml"; $error_vg = false ; $fp = fopen($xml, "r") or $error_vg = true; if ($error_vg) { }else{ while (!feof($fp)) { $data .= fgets($fp, 2048); } fclose($fp); // Déclaration de la fonction récursive ParseNode() function ParseNode($node, &$array) { global $id; $childnodes = $node->child_nodes(); foreach ($childnodes as $childnode) { if (trim($childnode->tagname) == "id") { $id = $childnode->get_content(); } elseif (trim($childnode->tagname) != "") { ParseNode($childnode, $array); } elseif (trim($childnode->node_name()) == "#text" && trim($childnode->get_content()) != "") { $array[$id][$node->tagname] = $childnode->get_content(); } } } // Parsing du document XML via la fonction ParseNode() $domdoc = domxml_open_mem($data); $root = $domdoc->document_element(); $arraydoc = array(); ParseNode($root, $arraydoc); $link = mysql_connect("localhost", "user", "******")or die("Impossible de se connecter"); mysql_select_db("nomades_dnl") or die("Could not select database"); echo "Connection DB nomade ok\n" ; $query = "TRUNCATE table phpbb_listmember" ; $result = mysql_query($query) or die("Query failed"); echo "Table phpbb_listmember vidée\n" ; while ($member = current($arraydoc)) { if (strcmp($member['name'],'Lyndsay') && strcmp($member['name'],'Flogtestbis') && strcmp($member['name'],'Nomades')) { $key=key($arraydoc) ; $member['guildRank'] == "Leader" ? $member['guildRank'] = "Guide" : $member['guildRank'] = $member['guildRank'] ; $member['guildRank'] == "Officer" ? $member['guildRank'] = "Nomade" : $member['guildRank'] = $member['guildRank'] ; $member['guildRank'] == "Member" ? $member['guildRank'] = "Reroll" : $member['guildRank'] = $member['guildRank'] ; $member['guildRank'] == "Initiate" ? $member['guildRank'] = "Caravanier" : $member['guildRank'] = $member['guildRank'] ; $query = "insert into phpbb_listmember (lm_key,lm_rank,lm_adclass,lm_adlvl,lm_crclass,lm_crlvl,lm_name) values (\"$key\",\"".$member['guildRank']."\",\"".$member['adventureClass']."\",".$member['adventureLevel'].",\"".$member['craftingClass']."\",".$member['craftingLevel'].",\"".$member['name']."\");" ; $result = mysql_query($query) or die("Query failed"); echo "Ligne $key ajoutée\n" ; } next($arraydoc) ; } mysql_close($link); } ?>
__________________
http://www.canardpc.com |
![]() |
|
|
![]()
Salut,
Je trouve ça super comme script mais pourrais tu expliquer comment on fait pour l'intégrer à un site ?? Je bidouille un peu en infographie mais j'avoue que j'ai pas tout suivi ... je suis même largué ! merci d'avance
__________________
Grattenoix : Saga of 1/2 Giants
|
![]() |
|
Suivre Répondre |
Connectés sur ce fil1 connecté (0 membre et 1 invité)
Afficher la liste détaillée des connectés
|