TOUT sur les XML, C'est par ici !

Répondre
Partager Rechercher
Bon pour les chroniques citées plus haut ok c'est très bien (j'ai d'ailleur essayer de rentrer en contact avec le créateur sans succés) mais pour moi ce n'est pas ce que je cherche (je prépare une évolution de ces chronique en flash comme GOA), personnelle je veux donner un code simple que tous le monde peut mettre sur son site sans ce prendre la tete


Voici d'ailleur la première évolution majeure
Possibilité de rentrer la guilde par défaut et surtout possibilitée de rentrer les noms des rangs de la guilde pour qu'ils soient affichés à la place des chiffres



<html>
<head>
<title>guilde</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body bgcolor="#FFFFFF" background="background-8.gif">
<p align="center"><br>
</p><center>
<table width="89%" border="1">
<tr>
<td><font face="Viking-Normal" color="#009999"><center>Noms</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Races</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Classes</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Niveau</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Rang Guilde</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Points RP</center></font></td>
<td><font face="Viking-Normal" color="#009999"><center>Derniere connexion</center></font></td>
</tr>
<?
////////////
// CONFIG //
////////////

$rang0 = "Rang 0"; //Nom du rang 0 dans votre Guilde
$rang1 = "Rang 1"; //Nom du rang 1 dans votre Guilde
$rang2 = "Rang 2"; //Nom du rang 2 dans votre Guilde
$rang3 = "Rang 3"; //Nom du rang 3 dans votre Guilde
$rang4 = "Rang 4"; //Nom du rang 4 dans votre Guilde
$rang5 = "Rang 5"; //Nom du rang 5 dans votre Guilde
$rang6 = "Rang 6"; //Nom du rang 6 dans votre Guilde
$rang7 = "Rang 7"; //Nom du rang 7 dans votre Guilde
$rang8 = "Rang 8"; //Nom du rang 8 dans votre Guilde
$rang9 = "Rang 9"; //Nom du rang 9 dans votre Guilde
$guildedef = "317"; //Numéro de la Guilde par défaut, il est possible d'appeler une autre guilde en rajoutant ?guilde=12 en fin d'URL

///////////////////
// FIN DE CONFIG //
///////////////////


if (isset($guilde) == 0)
{
$guilde = $guildedef;
}
$xml_parseur = xml_parser_create();
$k;
function ouverture ($parser, $name, $attrs){
global $k;
global $r;
global $dconnect;
global $connect;

switch ($name)
{
case "GUILD":
?>
<font face="Viking-Normal" color="#009999"><div align="center">Guilde</font> :
<?
echo $attrs["NAME"];
?>
<font face="Viking-Normal" color="#009999">Royaume</font> :
<?
echo $attrs["REALM"];
?>
<br><font face="Viking-Normal" color="#009999">Membres</font> :
<?
echo $attrs["ACTIVECHARS"];
?>
<font face="Viking-Normal" color="#009999">Nombre de joueurs jouant ces persos</font> :
<?
echo $attrs["ACTIVEMEMBERS"];
?>
<br><font face="Viking-Normal" color="#009999">RP de la guilde</font> :
<?
echo $attrs["GUILDRP"];
?></div><br><br><?
break;

case "CHARACTER":
?><td><font face="Viking-Normal" color="#009999"><?
echo $attrs["NAME"];
$dconnect = $attrs["LASTON"];
if ($dconnect == Recently)
{
$connect = "R&eacute;cemment";
}
elseif ($dconnect == Inactive)
{
$connect = "Plus de 2 semaines";
}
elseif ($dconnect == "1_Days")
{
$connect = "1 jour";
}
elseif ($dconnect == "2_Days")
{
$connect = "2 jours";
}
elseif ($dconnect == "3_Days")
{
$connect = "3 jours";
}
elseif ($dconnect == "4_Days")
{
$connect = "4 jours";
}
elseif ($dconnect == "5_Days")
{
$connect = "5 jours";
}
elseif ($dconnect == "6_Days")
{
$connect = "6 jours";
}
elseif ($dconnect == "7_Days")
{
$connect = "7 jours";
}
elseif ($dconnect == "2_Weeks")
{
$connect = "2 semaines";
}
?></td><?
break;

case "CLASS":
?><td><center><font face="Viking-Normal" color="#009999"><?
$k = 1;
break;

case "RACE":
?><td><center><font face="Viking-Normal" color="#009999"><?
$k = 1;
break;

case "LEVEL":
?><td><center><font face="Viking-Normal" color="#009999"><?
$k = 1;
break;

case "GUILDRANK":
?><td><center><font face="Viking-Normal" color="#009999"><?
$r = 1;
$k = 1;
break;

case "TOTALRP":
?><td><center><font face="Viking-Normal" color="#009999"><?
$k = 1;
break;
}
}

function fermeture ($parser, $name){
global $k;
global $r;
global $connect;

switch ($name)
{

case "CLASS":
$k = 0;
default:
return TRUE;
break;

case "RACE":
$k = 0;
default:
return TRUE;
break;

case "LEVEL":
$k = 0;
default:
return TRUE;
break;

case "GUILDRANK":
$k = 0;
$r = 0;
default:
return TRUE;
break;

case "TOTALRP":
?></td><td><center><font face="Viking-Normal" color="#009999"><? echo $connect; ?></td></tr><?
$k = 0;
default:
return TRUE;
break;
}
}

function texte ($parser, $data_text){
global $k;
global $r;
global $rang0;
global $rang1;
global $rang2;
global $rang3;
global $rang4;
global $rang5;
global $rang6;
global $rang7;
global $rang8;
global $rang9;

if ($r == 1)
{
if ($data_text == 0)
{
$data_text = $rang0;
}
elseif ($data_text == 1)
{
$data_text = $rang1;
}
elseif ($data_text == 2)
{
$data_text = $rang2;
}
elseif ($data_text == 3)
{
$data_text = $rang3;
}
elseif ($data_text == 4)
{
$data_text = $rang4;
}
elseif ($data_text == 5)
{
$data_text = $rang5;
}
elseif ($data_text == 6)
{
$data_text = $rang6;
}
elseif ($data_text == 7)
{
$data_text = $rang7;
}
elseif ($data_text == 8)
{
$data_text = $rang8;
}
elseif ($data_text == 9)
{
$data_text = $rang9;
}
}
if ($k == 1)
{
echo $data_text;
return $data_text;
}
}

function defaut (){
return TRUE;
}

xml_set_element_handler($xml_parseur, "ouverture", "fermeture");
xml_set_character_data_handler($xml_parseur, "texte");
xml_set_default_handler($xml_parseur,"defaut");
$fp = fopen("http://www.camelot-europe.com/herald/servers/Broceliande/guilds/$guilde.xml", "r") or die("Fichier introuvable. L'analyse a ete suspendue");
while ($fdata = fread($fp, 2048)){
xml_parse($xml_parseur, $fdata, feof($fp)) or die(
sprintf("Erreur XML : %s à la ligne %d\n",
xml_error_string(xml_get_error_code($xml_parseur)),
xml_get_current_line_number($xml_parseur))
);
}
?>
</tr>
</table>
<br><br>
@cr&eacute;ation <a href="mailto:apophyss@djeyl.net">Apophyss</a>
</center>
</body>
</html>
j'ai trouver un .js capable de faire du tri sur des tables html sans incorpo dans une BD.

le seul probleme, il marche nikel sur du text plain, mais deconne un peu sur les chiffre :?
__________________
Calend MalAimée < zerk a Son service >
Pas besoin de base pour trier. Ma page propose les tris et ce n'est que du traitement de l'xml direct. Par contre c'est vrai que je n'affiche pas les données pendant le parsing de l'xml. Je remplis d'abord un tableau, je trie ce tableau, puis je l'affiche via une boucle.
Question
salut apophyss,

dit moi tu ne pouré pas rajouter les derniere connexion sur ton script ??

et derniere colone ??

g essayer de mettre sa mais sa ne marche pas donc comme c toi ki a fais le script je te charge de faire sa merci

@++++++
pour la derniere connexion ca apparais dans la page perso du membre, je n'ai pas donné le source ici...

Possibilité de voir sur http://www.templiers-nornes.fr.st

Je ne peux plus mettre ici les source car maintenant cela s'étale sur plusieurs fichiers (la configuration a été centralisée)

Tu peux donc soit me mailer apophyss@djeyl.net
soit tu me le dis ici et j'editeré le fichier (vieux) en premier du template pour y faire les modif ...
kkun sait me dire la différence entre les membre "actifs " et les "non actifs" ?
Merci
__________________
La vie est une forêt d'Hommes, séparant le néant de l'au-delà.
http://www.wardb.com/sigs/153578.jpg
Moi, j'en suis le bûcheron!
Citation :
Provient du message de kirikou
kkun sait me dire la différence entre les membre "actifs " et les "non actifs" ?
Merci

les actif c est ceux qui joue tout le temps , et le non actif c est ceux qui on pas jouer depuis 2 semaine ( pas sour que ca soit 2 semaine peut etre plus )
Smile
salut apophyss,

sa serai sympas si tu pouver me modifier le vieux script

car g essayer et sa ne marche pas

par contre g vu un bug

sa mark par exemple Guérisseuse au lieu de guérisseuse

sa vien du charset

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

voili et merci @+++
Voila le script du premier message est modifier (j'ai édité le message).

Pour ce qui est du UTF-8, cela résout certains problemes, mais helas en amènent d'autres dans la version évolué du script, après toutes les corrections néssaissaires le script évolué est aboutis (tout en Français même les dernieres connexion...)

Pour le voir fonctionner aller toujours à la même adresse des Templiers Nornes
Unhappy
je suis nul en php
j'y connais rien.

Ou je pourrais trouver le code pour faire apparaitre la possession des forts (royaume+guilde qui a reclamé).
__________________
Sous prétexte qu'ils ont l'avenir devant eux, les Hommes vivent au jour le jour---Tristan Bernard
oui aron le seul hic c'est qu'on demande les sources et on nous donne des résultats Moi j'aime bien le coté je travaille pour moi les allez vous .... (comme billou)

Pour info des jolies chroniques avec classement qu'on a vu circuler, il m'a fallu reprendre ce travail de zero, creation du script que remplis la base sql ... alors que si les sources sont open on va beaucoup plus vite (c'est aussi ce qu'on apelle "travailler pour la communutée")
Maintenant il est vrai que certains préfèrent les garder mais bon ...
Je précise qu'une fois ma base sql en fonctions opérationnelle et sans bugs elle sera ouverte avec un acces en lecture pour les personnes qui le désirerons.
Le probleme aussi c'est l'integration.
Concernant mon script il est integré au systeme DaCode.
Ensuite, j'ai du creer plusieurs XML Parser par fichier XML a dispo, et meme plusieurs pour un meme fichier.

Néanmoins voici ma methode pour recuperer un fichier XML et le traiter.
On va prendre par exemple les informations de guildes (guild_id,name et rp)

Code:
$fichier = "http://www.camelot-europe.com/herald/servers/Ys/guild_list.php?realm=hib";	//On specifie notre fichier a utiliser

											// On crée d'abord les fonctions de parsing

function startElement($parser, $name, $attrs) {    
global $name,$guild_id,$rp;								//ici cest pour qu'il gardes les valeur entre chaque fonction

if ($name == "GUILD") {									// Ici on regarde si le nom de la "ligne" correspond a ce qu'on desire traiter
	while (list ($key, $val) = each ($attrs)) {
		if ($key == "GUILD_ID") {						//Ici on traite la valeur qui se trouve dans la "ligne"
		$guild_id = $val;
		}
		if ($key == "NAME") {							//Meme chose
		$name = $val;
		}
		if ($key == "RP") {							//Idem
		$rp = $val;
		}
	}
}

}

function characterData($parser, $data) {						//Ici c'est pour traiter les valeur des "sous-lignes" (pas les valeur qui se trouvent dans les lignes elle memes, dans notre cas il n'y en a pas
global $name,$guild_id,$rp;

}


function endElement($parser, $name) {							//ici c'est pour cloturer une "ligne" et passer a la suivante, generalement cest aussi la qu'on affiche ou qu'on recupere les données
global $name,$guild_id,$rp;

if ($name == "GUILD") {									//Est ce que l'on cloture la ligne GUILD ? si oui on traite, si non on continue

echo "$name ($guild_id) : $rp";								//On affiche (en brut) le resultat

}

}

$xml_parser = xml_parser_create();							//La on crée une variable de parsing (traitement)

xml_set_element_handler($xml_parser, "startElement", "endElement");			//On assigne les fonctions de debut et fin de traitement a notre parsing

xml_set_character_data_handler($xml_parser, "characterData");				//Ici on assigne les fonctions de traitement de donnée a notre parsing

$fp = fopen($fichier,"r")  or die("Erreur de lecture de $fichier");			//On ouvre notre fichier, si ca ne marche pas on renvoie une erreur

while ($data = fread($fp, 4096)) {							//On entame le traitement, on commence la boucle
xml_parse($xml_parser, $data, feof($fp));						//Ici on fait le traitement pendant la boucle
}											//On referme la boucle

fclose($fp);										//On referme le fichier

xml_parser_free($xml_parser);								//on vide la memoire

Voila desolé pour la taille mais les commentaires s'imposent
Edité le 09/02/03

Voila en open source ma méthode afin d'obtenir un tableau avec le classement selon la colonne désiré.

D'un point de vue macroscopique, il y a 1 table MySQL, un fichier membres.php qui assure le remplissage de la table MySQL et qui sort le premier tableau sur internet ainsi que 5 fichiers dans un répertoire membres nommés membres1.php à membres5.php qui sort chaque colonne classée à partir de la table SQL.

Vous pouvez voir comment ça marche sur: http://www.gaia-team.net/index.php?m...xml&page=index
Note: la page met quelques secondes à s'afficher, car le code est important avec beaucoupd e requètes SQL.

Attention, ce script ne marche pas chez Multimania mais fonctionne chez Free.


Pour la table MySQL:

CREATE TABLE daoc_membres (
nom varchar(35) NOT NULL default '',
classe varchar(30) NOT NULL default '',
level int(2) NOT NULL default '0',
total int(25) NOT NULL default '0',
lastw int(25) NOT NULL default '0',
lastconnect varchar(15) NOT NULL default '',
id int(3) NOT NULL default '0'
)

Le fichier membres.php qui remplie la base SQL et affiche la première page des membres:

<?php
include ('codes.php'); //inclusion du fichier contenant les codes pour accéder à MySQL
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);
$sql = "DELETE FROM daoc_membres"; //mise à 0 de la table afin de réactualiser les données à partir du fichier XML
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());

$id=1; //initialisation de la variable $id
$ficxml=@fopen("http://www.camelot-europe.com/herald/servers/Broceliande/guilds/82.xml","r"); // ouverture du fichier XML
$ligne=fgets($ficxml,256);

while($ligne=fgets($ficxml,256)) {
switch(substr(trim($ligne),0,6)) {
case "<chara":
$sql = "INSERT INTO daoc_membres VALUES('', '', '', '', '', '', '$id')"; // insertion d'autant de ligne dans la table qu'il y a de perso, tous avec un $id différent.
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
$id=$id+1;
};};

$id=0; // réinitialisation de $id

$ficxml=@fopen("http://www.camelot-europe.com/herald/servers/Broceliande/guilds/82.xml","r"); //réinitialisation des variables
$ligne=fgets($ficxml,256);

echo "<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'><tr><td><center><b>Nom</b></center></td><td><center><b><a href=membres/membres1.php>Classe</a></b></center></td><td><center><b><a href=membres/membres2.php>Niveau</a></b></center></td><td><center><b><a href=membres/membres3.php>RP total</a></b></center></td><td><center><b><a href=membres/membres4.php>RP dernière sem.</a></b></center></td><td><center><b><a href=membres/membres5.php>Dernière connec.</a></b></center></td></tr>\n";
//création du tableau
while($ligne=fgets($ficxml,256)) {
switch(substr(trim($ligne),0,6)) {
case "<chara":
$id=$id+1;
$pos1=strpos($ligne,"\"",1)+1;
$pos2=strpos($ligne,"\"",$pos1)-1;
$nom=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\"",$pos2+2)+1;
$pos2=strpos($ligne,"\"",$pos1)-1;
$lastconnect=substr($ligne,$pos1,($pos2-$pos1)+1);
if ($lastconnect==Recently) {$lastconnect= ".récente";};
if ($lastconnect=="3_Days") {$lastconnect="..3 jours";};
if ($lastconnect=="7_Days") {$lastconnect="...7 jours";};
if ($lastconnect=="2_Weeks") {$lastconnect="....2 semaines";};
if ($lastconnect==Inactive) {$lastconnect=".....sup. 2 sem.";};
$sql = "UPDATE daoc_membres SET nom='$nom', lastconnect='$lastconnect' WHERE id='$id'";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "<tr><td><center>$nom</center></td>";
break; //on vient de rentrer dans la table SQL le nom et la dernière connection, affichage dans le tableau.

case "<class":
$pos1=strpos($ligne,">",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$classe=substr($ligne,$pos1,($pos2-$pos1)+1);
$classe=str_replace("ô","ô",$classe);
$classe=str_replace("'","\\'",$classe);
$classe=str_replace("aî","aî",$classe);
$classe=str_replace("é","é",$classe);
$sql = "UPDATE daoc_membres SET classe='$classe' WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "<td><center>$classe</center></td>\n";
break;


case "<level":
$pos1=strpos($ligne,">",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$level=substr($ligne,$pos1,($pos2-$pos1)+1);
$sql = "UPDATE daoc_membres SET level='$level' WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "<td><center>$level</center></td>\n";
break;
//on vient de rentrer dans la table SQL le level, affichage dans le tableau.

case "<total":
$pos1=strpos($ligne,">",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$total=substr($ligne,$pos1,($pos2-$pos1)+1);
$sql = "UPDATE daoc_membres SET total='$total' WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "<td><center>$total</center></td>\n";
break;
//on vient de rentrer dans la table SQL le total des RP, affichage dans le tableau.

case "<lastw":
$pos1=strpos($ligne,">",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$lastw=substr($ligne,$pos1,($pos2-$pos1)+1);
$sql = "UPDATE daoc_membres SET lastw='$lastw' WHERE id=$id";
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "<td><center>$lastw</center></td><td><center>$lastconnect</center></td></tr>\n";
break;
//on vient de rentrer dans la table SQL les RP de la dernière semaine, affichage dans le tableau.
};
};
fclose($ficxml);

// on ferme la connexion à mysql
mysql_close();
?>
</table>
</center>






Après, chaque fichier est dans un répertoire "membres" (ou sinon, modifier les noms dans le code précédant):

membres1.php:

<?php
include ('../codes.php');
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);

// on créer la requete SQL et on l'envoie
$sql = 'SELECT * FROM daoc_membres ORDER by classe';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "
<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'>
<tr>
<td><center><b><a href=../membres.php>Nom</a></b></center></td>
<td><center><b>Classe</a></b></center></td>
<td><center><b><a href=membres2.php>Niveau</b></center></td>
<td><center><b><a href=membres3.php>RP total</a></b></center></td>
<td><center><b><a href=membres4.php>RP dernière sem.</a></b></center></td>
<td><center><b><a href=membres5.php>Dernière connec.</a></b></center></td>
</tr>\n";
// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($req))
{
echo'<tr><td><center>'.$data['nom'].'</center></td>
<td><center>'.$data['classe'].'</center></td>
<td><center>'.$data['level'].'</center></td>
<td><center>'.$data['total'].'</center></td>
<td><center>'.$data['lastw'].'</center></td>
<td><center>'.$data['lastconnect'].'</center></td>
</tr>';};


// on ferme la connexion à mysql
mysql_close();
?>
</table>





membres 2.php:

<?php
include ('../codes.php');
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);

// on créer la requete SQL et on l'envoie
$sql = 'SELECT * FROM daoc_membres ORDER by level DESC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "
<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'>
<tr>
<td><center><b><a href=../membres.php>Nom</a></b></center></td>
<td><center><b><a href=membres1.php>Classe</a></b></center></td>
<td><center><b>Niveau</b></center></td>
<td><center><b><a href=membres3.php>RP total</a></b></center></td>
<td><center><b><a href=membres4.php>RP dernière sem.</a></b></center></td>
<td><center><b><a href=membres5.php>Dernière connec.</a></b></center></td>

</tr>\n";
// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($req))
{
echo'<tr><td><center>'.$data['nom'].'</center></td>
<td><center>'.$data['classe'].'</center></td>
<td><center>'.$data['level'].'</center></td>
<td><center>'.$data['total'].'</center></td>
<td><center>'.$data['lastw'].'</center></td>
<td><center>'.$data['lastconnect'].'</center></td>
</tr>';};


// on ferme la connexion à mysql
mysql_close();
?>
</table>




membres3.php:

<?php
include ('../codes.php');
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);

// on créer la requete SQL et on l'envoie
$sql = 'SELECT * FROM daoc_membres ORDER by total DESC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "
<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'>
<tr>
<td><center><b><a href=../membres.php>Nom</a></b></center></td>
<td><center><b><a href=membres/membres1.php>Classe</a></b></center></td>
<td><center><b><a href=membres2.php>Niveau</a></b></center></td>
<td><center><b>RP total</b></center></td>
<td><center><b><a href=membres4.php>RP dernière sem.</a></b></center></td>
<td><center><b><a href=membres5.php>Dernière connec.</a></b></center></td>

</tr>\n";
// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($req))
{
echo'<tr><td><center>'.$data['nom'].'</center></td>
<td><center>'.$data['classe'].'</center></td>
<td><center>'.$data['level'].'</center></td>
<td><center>'.$data['total'].'</center></td>
<td><center>'.$data['lastw'].'</center></td>
<td><center>'.$data['lastconnect'].'</center></td>
</tr>';};


// on ferme la connexion à mysql
mysql_close();
?>
</table>




membres4.php:

<?php
include ('../codes.php');
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);

// on créer la requete SQL et on l'envoie
$sql = 'SELECT * FROM daoc_membres ORDER by lastw DESC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "
<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'>
<tr>
<td><center><b><a href=../membres.php>Nom</a></b></center></td>
<td><center><b><a href=membres1.php>Classe</a></b></center></td>
<td><center><b><a href=membres2.php>Niveau</a></b></center></td>
<td><center><b><a href=membres3.php>RP total</a></b></center></td>
<td><center><b>RP dernière sem.</b></center></td>
<td><center><b><a href=membres5.php>Dernière connec.</a></b></center></td>

</tr>\n";
// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($req))
{
echo'<tr><td><center>'.$data['nom'].'</center></td>
<td><center>'.$data['classe'].'</center></td>
<td><center>'.$data['level'].'</center></td>
<td><center>'.$data['total'].'</center></td>
<td><center>'.$data['lastw'].'</center></td>
<td><center>'.$data['lastconnect'].'</center></td>
</tr>';};


// on ferme la connexion à mysql
mysql_close();
?>
</table>





membres5.php:

<?php
include ('../codes.php');
// on se connecte à MySQL
$db = mysql_connect($hebergeur, $pseudo, $password);
// on séléctionne la base
mysql_select_db($base,$db);

// on créer la requete SQL et on l'envoie
$sql = 'SELECT * FROM daoc_membres ORDER by lastconnect DESC';
$req = mysql_query($sql) or die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error());
echo "
<table border=1 bordercolor=black cellspacing=0 cellpadding=0 width='600'>
<tr>
<td><center><b><a href=../membres.php>Nom</a></b></center></td>
<td><center><b><a href=membres1.php>Classe</a></b></center></td>
<td><center><b><a href=membres2.php>Niveau</a></b></center></td>
<td><center><b><a href=membres3.php>RP total</a></b></center></td>
<td><center><b><a href=membres4.php>RP dernière sem.</a></b></center></td>
<td><center><b>Dernière connec.</b></center></td>
</tr>\n";
// on fait une boucle qui va faire un tour pour chaque enregistrements
while($data = mysql_fetch_array($req))
{
echo'<tr><td><center>'.$data['nom'].'</center></td>
<td><center>'.$data['classe'].'</center></td>
<td><center>'.$data['level'].'</center></td>
<td><center>'.$data['total'].'</center></td>
<td><center>'.$data['lastw'].'</center></td>
<td><center>'.$data['lastconnect'].'</center></td>
</tr>';};


// on ferme la connexion à mysql
mysql_close();
?>
</table>









Voilà, bon courage.
feroas@nomade.fr
Pour l'artisanat
Pour chaque catégorie d'artisanat j'ai créé un ptit tableau :

Dans la fonction ouverture j'ai mis :
Citation :
case "TOP":
if ($r++==0) {echo "</table>\n";}
$craft=$attrs["TYPE"];
if ($craft=="fletching"){$craft="Empenage";}
elseif ($craft=="weaponcraft"){$craft="Forge";}
elseif ($craft=="armorcraft"){$craft="Armurerie";}
elseif ($craft=="tailoring"){$craft="Couture";}
echo "<table ID='crafting$r' border=1 width='200'>\n";
echo "\t<caption><b><font face='Viking-Normal' color='#FFCC66'>Top 5 $craft</font></b></caption>\n";
break;

case "TOP_CHAR":
echo " <tr>
<td><font face='Viking-Normal' color='#FFCC66'>",$attrs["NAME"],"</font></td>
<td><font face='Viking-Normal' color='#FFCC66'>",$attrs["POINT"],"</font></td>
</tr>\n";
break;
Dans la fonction fermeture :
Citation :
case "TOP":
echo "</table>\n";
default:
return TRUE;
break;

case "TOP_CHAR":
default:
return TRUE;
break;
pour les artisants en voici un autre qui ne prend juste que les info et les met dans un tableau

<html>
<head>
<title>Artisanat</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<center>
<table width="40%" border="1" bordercolor="#000000">
<tr>
<td colspan="2" BGCOLOR="#000000"> <font face="Arial" color="#000000"><b>Type :</b></font></td>
</tr><tr>
<td width="70%" BGCOLOR="#000000"> <font face="Arial" color="#0000000"><center><b>Nom</b></center></font></td>
<td width="30%" BGCOLOR="#000000"><font face="Arial" color="#000000"><center><b>Niveau</b></center></font></td>
</tr>
</table>
<?
if (isset($guilde) == 0)
{
// NUMERO DE LA GUILDE A CHANGER
$guilde = "317";
}
$xml_parseur = xml_parser_create();
$k;
function ouverture ($parser, $name, $attrs){
global $k;
global $r;
global $guilde;
global $craft;
global $type;

switch ($name)
{
case "TOP":
?><table width="40%" border="1" bordercolor="#000000"><tr><font face="Arial" color="#FFFFFF"><?
$type = $attrs["TYPE"];
if ($type== fletching)
{
$craft = "Empenage";
}
elseif ($type == weaponcraft)
{
$craft = "Forge";
}
elseif ($type == armorcraft)
{
$craft = "Armurerie";
}
elseif ($type == tailoring)
{
$craft = "Couture";
}
echo $craft;
?></tr><?
break;

case "TOP_CHAR":
?><tr><td width="70%"><font face="Arial" color="#000000"><?
echo $attrs["NAME"];
?></td><?
?><td width="30%"><center><font face="Arial" color="#000000"><?
echo $attrs["POINT"];
?></td></tr><?
break;
}
}

function fermeture ($parser, $name){
global $k;
global $r;
switch ($name)
{
}
}

function texte ($parser, $data_text){
global $k;
global $r;

if ($k == 1)
{
echo $data_text;
return $data_text;
}
}

function defaut (){
return TRUE;
}
xml_set_element_handler($xml_parseur, "ouverture", "fermeture");
xml_set_character_data_handler($xml_parseur, "texte");
xml_set_default_handler($xml_parseur,"defaut");
$fp = fopen("http://www.camelot-europe.com/herald/servers/Broceliande/guilds/$guilde.xml", "r") or die("Fichier introuvable. L'analyse a ete suspendue");
while ($fdata = fread($fp, 2048)){
xml_parse($xml_parseur, $fdata, feof($fp)) or die(
sprintf("Erreur XML : %s à la ligne %d\n",
xml_error_string(xml_get_error_code($xml_parseur)),
xml_get_current_line_number($xml_parseur))
);
}
?>
</tr>
</table>
</center>
</body>
</html>


De plus j'ai fini ma base de donnée, je peux biensur mettre le script en ligne de génération mais c'est tres lourd 32085 perso sur brocéliande.
Par contre je suis pas contre des personnes connaissant bien php/sql pour m'aider à mettre en ligne cette base (comme les actes de naissance c'est base et le site allant avec serais pour voir les infos d'un joueur avec moteur de recherche, possibilité d'ajouter une description....)

apophyss@djeyl.net
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés