Hallöchen,
ich hab mir ein Script aus verschiedenen Snippets zusammen gebastelt welches Daten aus einer .txt vom Server läd und in die database.txt und dannin eine Datenbank schreibt.
Die TXT kommt vom Server eines Browsergames und enthält die Spielerdaten.
Der Aufbau der TXT Daten sieht so aus:
player_id, name, ally_id, villages, points, rank
Beispiel Datensatz:
5521,anddie,100,9,43213,459
Die TXT enthält allerdings über 2000 Zeilen, sodass jedes mal wenn das Script aktualisiert wird viele Daten geschrieben werden müssen.
Das funktioniert auch alles.
Ich würde jetzt allerdings gerne nur bestimmte Zeilen in die DB schreiben welche die gewünschte ally_id enthalten.
Kann mir da jemand helfen? Bin schon ne Weile raus aus dem aktiven scripting.
Ich vermute, dass ich das arrray $data nach der id durchsuchen muss. Aber wie genau das geht - da steh ich grad auf dem Schlauch
ich hab mir ein Script aus verschiedenen Snippets zusammen gebastelt welches Daten aus einer .txt vom Server läd und in die database.txt und dannin eine Datenbank schreibt.
Die TXT kommt vom Server eines Browsergames und enthält die Spielerdaten.
Der Aufbau der TXT Daten sieht so aus:
player_id, name, ally_id, villages, points, rank
Beispiel Datensatz:
5521,anddie,100,9,43213,459
Die TXT enthält allerdings über 2000 Zeilen, sodass jedes mal wenn das Script aktualisiert wird viele Daten geschrieben werden müssen.
Das funktioniert auch alles.
Ich würde jetzt allerdings gerne nur bestimmte Zeilen in die DB schreiben welche die gewünschte ally_id enthalten.
Kann mir da jemand helfen? Bin schon ne Weile raus aus dem aktiven scripting.
Ich vermute, dass ich das arrray $data nach der id durchsuchen muss. Aber wie genau das geht - da steh ich grad auf dem Schlauch
PHP-Code:
<?php
error_reporting(E_ALL);
$dbhost = 'localhost';
$dbuser = 'ds_database';
$dbpass = 'passwort';
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
$dbname = 'ds_database';
mysql_select_db($dbname);
$file="database.txt";
//USER
//Tabelle "player" leeren
mysql_query("TRUNCATE TABLE player");
//Spielerdaten von Server laden und...
$lines = gzfile('http://de123.die-staemme.de/map/player.txt.gz');
if(!is_array($lines)){die('Datei konnte nicht geöffnet werden');}
//...Datei "databases.txt" öffnen und schreiben
$fp=fopen($file, 'w');
foreach($lines as $line){
fwrite($fp, utf8_decode(urldecode($line)));
}
//fgetcsv als alternative zu LOAD DATA LOCAL INFILE - test
$row = 0;
$handle = fopen($file, "r");
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
if ($row == 0)
{
$num = count($data);
$row++;
for ($c=0; $c < $num; $c++) {
}
} else {
//Zählt die Anzahl der Felder in einer Reihe
$num = count($data);
//Den Zeilwert um 1 erhöhren (Also eine Zeile weiter springen)
$row++;
//iteriert / wiederholt das für jede Zeile der Datei
for ($c=0; $c < $num; $c++)
$query =
"INSERT INTO player (player_id, name, ally_id, villages, points, rank)
VALUES ('".$data[0]."','".$data[1]."','".$data[2]."','".$data[3]."','".$data[4]."','".$data[5]."')"
or die(mysql_error());
if(mysql_query($query))
echo "Erfolgreich eingetragen<br/>";
else
echo mysql_error() ;
echo "<br/>";
}
}
fwrite($fp, "");
fclose($fp);
unset($lines);
unset($line);
?>
Kommentar