Bueno, vamos por partes dijo nuestro amigo Jack.
Como lo que quieres es una web utilizaremos php para tener acceso a la base de datos.
Dejo datos técnicos:
Código:
Server: Apache 2.2.22
PHP Version: 5.4.3
MySql Version: 5.5.24
Bueno arrancamos con el código.
Primero accederemos a la base de datos de tu web, te recomiendo que la crees antes. Todas las tablas con todos los campos, fijate bien si pones mayúsculas en algo. Te recomiendo también que hagas un diagrama de relaciones y la imprimas, de esa forma tendrás todos los nombres de los campos a mano, uno suele confindirse a veces con tantos nombres.
Una vez que ya tengas tu base de datos creada solo hace falta acceder a ella y llenarla.
Acceso a la base de datos:
PHP:
$connection = mysql_connect("localhost", "root", "");
if(!$connection)
exit("data base error");
mysql_select_db("grepolis");
Con esto lo que hicimos fué crear una variable connection donde tendremos nuestra conexión. Los argumentos de la función mysql_connect() son ("nombre_del_servidor", "nombre_de_usuario", "password"). Luego, si no se pudo conectar tira mensaje de error y termina todo, de lo contrario seleccionaremos la base de datos a usar (ya que puede haber varias) con mysql_select_db(), como argumento de esta función va el nombre de la base de datos.
Ahora tenemos que descargar los archivos a usar, recuerda que te dije que había que decodificar los datos para que se vean bien todos los nombres. Así que creamos una función llamada downloadFile() que tiene como argumentos la url del archivo y el path de dónde lo va a guardar.
PHP:
function downloadFile($url,$fileName){
$fp = fopen($fileName,"w");
fwrite($fp, str_replace("\n",chr(13).chr(10), utf8_decode(urldecode(file_get_contents($url)))));
fclose($fp);
}
Con la función file_get_contents obtienes el contenido del archivo, ahora decodificas ese contenido con urldecode y lo mismo con utf8_decode. El reemplazo que hice con str_replace es porque había conflicto con el salto de línea.
Ahora vamos a usar esta función para bajar todos los archivos (menos el de islas por lo que te comenté antes):
PHP:
downloadFile("http://ar1.grepolis.com/data/players.txt","players.txt");
downloadFile("http://ar1.grepolis.com/data/alliances.txt","alliances.txt");
downloadFile("http://ar1.grepolis.com/data/player_kills_all.txt","player_kills_all.txt");
downloadFile("http://ar1.grepolis.com/data/player_kills_att.txt","player_kills_att.txt");
downloadFile("http://ar1.grepolis.com/data/player_kills_def.txt","player_kills_def.txt");
downloadFile("http://ar1.grepolis.com/data/alliance_kills_all.txt","alliance_kills_all.txt");
downloadFile("http://ar1.grepolis.com/data/alliance_kills_att.txt","alliance_kills_att.txt");
downloadFile("http://ar1.grepolis.com/data/alliance_kills_def.txt","alliance_kills_def.txt");
downloadFile("http://ar1.grepolis.com/data/towns.txt","towns.txt");
downloadFile("http://ar1.grepolis.com/data/conquers.txt","conquers.txt");;
Listo! ya tenemos los archivos en nuestro servidor, ahora solo queda importarlos a la base de datos. Como lo que queremos es actualizar todo el tiempo nuestra base de datos con estos archivos, lo que debemos hacer antes es borrar todas las tablas pertenecientes a cada archivo, esto es para no duplicar información.
Con esto borramos las tablas:
PHP:
mysql_query("truncate table players ",$connection);
mysql_query("truncate table alliances ",$connection);
mysql_query("truncate table towns ",$connection);
mysql_query("truncate table alliancekillsall ",$connection);
mysql_query("truncate table alliancekillsatt ",$connection);
mysql_query("truncate table alliancekillsdef ",$connection);
mysql_query("truncate table conquers ",$connection);
mysql_query("truncate table playerkillsall ",$connection);
mysql_query("truncate table playerkillsatt ",$connection);
mysql_query("truncate table playerkillsdef ",$connection);
Ahora ya está todo listo para el llenado de las tablas, lo haremos de esta forma (son un poco largas las sentencias):
PHP:
mysql_query ("LOAD DATA LOCAL INFILE 'players.txt' INTO TABLE players
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(id_player, name, id_alliance, points, rank, towns);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'alliances.txt' INTO TABLE alliances
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(id_alliance, al_name, al_points, al_towns, members, al_rank);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'alliance_kills_all.txt' INTO TABLE allianceKillsAll
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(aka_rank, id_alliance, aka_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'alliance_kills_att.txt' INTO TABLE allianceKillsAtt
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(akat_rank, id_alliance, akat_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'alliance_kills_def.txt' INTO TABLE allianceKillsDef
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(akd_rank, id_alliance, akd_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'player_kills_all.txt' INTO TABLE playerKillsAll
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(pka_rank, id_player, pka_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'player_kills_att.txt' INTO TABLE playerKillsAtt
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(pkat_rank, id_player, pkat_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'player_kills_def.txt' INTO TABLE playerKillsDef
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(pkd_rank, id_player, pkd_points);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'towns.txt' INTO TABLE towns
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(id_town, id_player, townName, posX, posY, nIsland, townPoints);",$connection);
mysql_query ("LOAD DATA LOCAL INFILE 'conquers.txt' INTO TABLE conquers
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(id_town, dTime, id_playerNew, id_playerOld, id_allianceNew, PointsTown);",$connection);
La sentencia para hacer una consulta es mysql_query(), tiene como argumentos "sentencia_sql", variable_de_conexión.
Vamos a ver que dice esa sentencia, que si te fijas es similar en todas.
LOAD DATA LOCAL INFILE 'nombre_del_archivo' INTO TABLE nombre_de_la_tabla
FIELDS TERMINATED BY ',' ENCLOSED BY '\"' LINES TERMINATED BY '\r\n'
(nombre_del_campo_1, nombre_del_campo_2, nombre_del_campo_3, nombre_del_campo_etc);",variable_de_conexión);
Lo que hace esto es importar información desde un archivo local tomando el archivo (nombre_del_archivo) e importándolo a la tabla (nombre_de_la_tabla). Luego aclara que en ese archivo los datos estan separados por coma (,) y los registros por saltos de línea ('\r\n'). Luego también aclaramos los nombres de los campos de esa tabla, esto tiene que seguir un orden que será el orden de como aparecen los campos en el archivo. Por ejemplo, si el primer campo es id de player pués le indicarás que el primer campo irá a tu campo id_player de tu tabla. Por último se indica la conexión usada.
Bueno este sería tu script de actualización de la base de datos, al menos la primera versión que ya luego le agregarás lo que falta. Ahora solo queda acceder a las tablas para mostrar la información, pero como dices que ya manejas Sql supongo que ya lo sabes hacer.
Saludos!