Automatischer Download per PHP ?
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
beitrag
datei
daten
datensatz
error
fehler
insert
member
not
null
pa
player
point
scout
set
spielstand
tabelle
tribe
update
zeile
-
Guten Tag,
ich habe eine Frage könnte man einen Automatischen Download per php machen?
<?php mysql_connect ("SERVER","USER"); mysql_select_db ("DATENBANK"); $file = "../input/village.txt"; $sql = "TRUNCATE TABLE tbl_village"; mysql_query($sql); $filearray = fopen ($file, "r"); while (!feof($filearray)) { $line = fgets($filearray); list($id, $name,$x, $y, $player, $points, $rank) = explode(',', $line); $name = urldecode($name); $name = addslashes($name); $sql = "INSERT INTO tbl_village SET id='$id', name='$name', x='$x', y='$y', player='$player', points='$points', rank='$rank'"; mysql_query($sql); } fclose ($filearray); $file = "../input/tribe.txt"; $sql = "TRUNCATE TABLE tbl_tribe"; mysql_query($sql); $filearray = fopen ($file, "r"); while (!feof($filearray)) { $line = fgets($filearray); list($id, $name, $ally, $villages, $points, $rank) = explode(',', $line); $name = urldecode($name); $name = addslashes($name); $sql = "INSERT INTO tbl_tribe SET id='$id', name='$name', ally='$ally', villages='$villages', points='$points', rank='$rank'"; mysql_query($sql); } fclose ($filearray); $file = "../input/ally.txt"; $sql = "TRUNCATE TABLE tbl_ally"; mysql_query($sql); $filearray = fopen ($file, "r"); while (!feof($filearray)) { $line = fgets($filearray); list($id, $name, $tag, $members, $villages, $points, $all_points, $rank) = explode(',', $line); $name = urldecode($name); $name = addslashes($name); $sql = "INSERT INTO tbl_ally SET id='$id', name='$name', tag='$tag', members='$members', villages='$villages', points='$points', all_points='$all_points', rank='$rank'"; mysql_query($sql); } fclose ($filearray); ?>
Dieses habe ich gefunden, mein Problem ist es geht nicht könnte mir einer dabei helfen? -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Ähm sorry, aber deine Aufgabenstellung ist mir irgendwie nicht so klar...
...das Script was du angegeben hast, versucht aus einer Datei irgendwelche Spielstände in eine Datenbank zu portieren.
Lt. Thread-Titel möchtest du wahrscheinlich ein Datei-Download machen.
Sorry aber sag mal lieber was du machen möchtest, als irgendwelche Scripte zu posten.
Grüßle -
Ähm sorry, aber deine Aufgabenstellung ist mir irgendwie nicht so klar...
...das Script was du angegeben hast, versucht aus einer Datei irgendwelche Spielstände in eine Datenbank zu portieren.
Lt. Thread-Titel möchtest du wahrscheinlich ein Datei-Download machen.
Sorry aber sag mal lieber was du machen möchtest, als irgendwelche Scripte zu posten.
Grüßle
sorry :)
also ich brauche ein script welches "automatisch" die spielstände aktualisiert, vielleicht einmal so pro tag.
weil so muss ich sie immer neu runterladen und importieren , so ca. mein problem nun verstanden? -
Also nochmal zum mitmeiseln...
Du hast irgendwo ein Spiel, was Hiescores usw. in Dateien speichert.
Nun möchtest du einmal am Tag, die Spielstände in eine Datenbank einlesen als Sicherung bzw. die dann die Daten auf einer anderen Webseite anzeigt?
ok das mit dem einlesen ist da in deinem Script soweit ok nur deine SQL Anweisungen sind syntaktisch falsch.
INSERTs haben die Form:
INSERT INTO tablename (spalte1,spalte2,...) VALUES (Wert1,Wert2,...);
UPDATEs haben die Form:
UPDATE tablename SET spalte1=wert1, spalte2=wert2, ... WHERE spalte0=xyz;
Wenn du die SQL Anweisungen korrigierst, sieht es ganz gut aus
Grüßle -
es geht um das browsergame "die stämme", dort ist es so man kann dort 3.txt datein runterladen, allys , villagaes, player die sollten geupdated werden.
so die sollten automatisch runtergeladen werden, und dann in das forum importiert werden :)
soo ca verstanden?
-
ja also ich die Dateinamen gelesen habe habe ich mir das schon gedacht. Spiele das nämlich auch
Also wenn du täglich 1 Update machen willst, würde ich das Programm so anlegen dass entweder alle DB-Einträge gelöscht werden und dann neu angelegt.
Oder du liest immer ein Datensatz aus dem File und schaust dann ob du ihn schon hast oder nicht. Wenn ja mache Update ansonsten ein Insert.
Die entsprechenden SQL Kommandos stehen ein paar Threads drüber ...
Grüßle
PS: Falls du es nicht hinbekommst, bin ich dir auch gern behilflich. Soll ich mal dein Script bissl anpassen ? -
ich denke du musst mir wirklich noch etwas helfen ;)
was muss ich noch genau machen?
was muss ich in SQL ausführen?
und was muss ich am script ändern Oo ? -
Hier mal eine Lösung für eine Datei...
<?php // Config $Server['host'] = "localhost"; $Server['db'] = "staemme_import"; $Server['user'] = "root"; $Server['pass'] = ""; // **************************************************************************************************************** // Conn Server $link = @mysql_connect($Server['host'], $Server['user'], $Server['pass']) OR DIE ("Keine Verbindung zum DB-Server: ".$Server['host']); @mysql_select_db($Server['db']) OR DIE ("Keine Datenbank ".$Server['db']." vorhanden."); $res_x = mysql_query("SET NAMES \'UTF8\';"); // **************************************************************************************************************** $sql = "CREATE TABLE IF NOT EXISTS `tbl_tribe` ( id bigint(20) NOT NULL PRIMARY KEY, name varchar(255) collate utf8_unicode_ci NOT NULL, ally bigint(20) NOT NULL, villages bigint(20) NOT NULL, points bigint(20) NOT NULL, rank bigint(20) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;"; $res_c = mysql_query($sql); if (!$res_c) { echo "Fehler: Tabelle konnte nicht erstellt werden.<br>\n"; } $sql = "TRUNCATE TABLE tbl_tribe;"; $res_d = mysql_query($sql); if (!$res_d) { echo "Fehler: Tabelle konnte nicht gelöscht werden.<br>\n"; } try { $file = "tribe.txt"; if (!file_exists($file)) { trigger_error("Datei nicht vorhanden. Programm abgebrochen.",E_USER_ERROR); } $fh = fopen ($file, "r"); while (!feof($fh)) { $line = fgets($fh); if (strlen(trim($line))==0) { continue; } list($id, $name, $ally, $villages, $points, $rank) = explode(',', $line); $name = urldecode($name); $name = mysql_escape_string($name); $sql = "INSERT INTO tbl_tribe (id,name,ally,villages,points,rank) VALUES ($id,\'$name\',$ally,$villages,$points,$rank);"; $res_q = mysql_query($sql); if (!$res_q) { echo "Fehler im Datensatz: ".mysql_error()."<br>\n"; } } fclose ($fh); $sql = "SELECT count(id) FROM tbl_tribe;"; $res_s = mysql_query($sql); $row = mysql_fetch_row($res_s); echo "fertig. ".$row[0]." Datensätze importiert.<br>\n"; } catch(exception $ex) { echo "Fehler beim Dateiauslesen..."; fclose ($fh); mysql_close($link); } // **************************************************************************************************************** mysql_close($link); ?>
Das mit dem SET NAMES ist wichtig weil die Quelldaten im utf8 Zeichensatz vorliegen.
Grüßle
Beitrag geaendert: 31.5.2007 10:03:42 von scout -
Parse error: syntax error, unexpected T_STRING in /home/www-data/htdocs/n/n3oth3on3/board/input/import_new.php on line 13
bei mir kommt dann immer das hier nun ;)
außerdem habe ich schon tabbeln dafür gefunden :
phpbb_ally
phpbb_staemme
phpbb_village
phpbb_tribe
Ich hab mir die Einträge mal angeguckt das ist so gemacht z.b.
phpbb_ally hat 5.776 Einträge
und dann steht da :
id : 20525 name : Ordensritter tag : OR members : 5 villages : 5 points : 1342 all_points : 1342 rank : 3133
ich denke man braucht nur ein mysql update immer oder ?
hab mir gerade so mal die MYSQL Datenbanken angeguckt deswegen~
das heißt er läd die drei datein aus dem netz runter und importier sie dann in MYSQL !
Beitrag geaendert: 31.5.2007 7:20:43 von n3oth3on3 -
n3oth3on3 schrieb:
Parse error: syntax error, unexpected T_STRING in /home/www-data/htdocs/n/n3oth3on3/board/input/import_new.php on line 13
naja das Forum ersetzt immer doppelte Anführungszeichen gegen einfach Anführungszeichen...
ersetze halt die Zeilen:
Zeile 13: $res_x = mysql_query('SET NAMES \'UTF8\';');
Zeile 50/51:
$sql = 'INSERT INTO tbl_tribe (id,name,ally,villages,points,rank) VALUES ('.$id.',\''.$name.'\','.$ally.','.$villages.','.$points.','.$rank.');';
Dann müsste es gehen.
In Bezug auf die Tabellen...
Wie die Tabellen dann in wirklichkeit heißen und wie du die Daten dann weiter verwendest, ist mir ja eigentlich egal. Wenn du die Daten in phpbb_ally aktualisieren willst, na dann mußt du halt in meinem Import Script die Tabellennamen entsprechend abändern
Achja falls bei dir der max_execution_error kommt, mußt du in der php.ini die Variable "max_execution_time = 300 einstellen. Bist du bei einem Webhoster, kannst du diese allerdings meist nicht editieren d.h. du kannst nur mal bei deinem Hoster anrufen.
Grüßle
Beitrag geaendert: 31.5.2007 10:25:39 von scout -
Nochmal zum copy and past
(Forumgerecht aufbereitet)
<?php // Config $Server['host'] = 'localhost'; $Server['db'] = 'staemme_import'; $Server['user'] = 'root'; $Server['pass'] = ''; // **************************************************************************************************************** // Conn Server $link = @mysql_connect($Server['host'], $Server['user'], $Server['pass']) OR DIE ('Keine Verbindung zum DB-Server: '.$Server['host']); @mysql_select_db($Server['db']) OR DIE ('Keine Datenbank '.$Server['db'].' vorhanden.'); $res_x = mysql_query('SET NAMES \'UTF8\';'); // **************************************************************************************************************** $sql = 'CREATE TABLE IF NOT EXISTS `tbl_tribe` ( id bigint(20) NOT NULL PRIMARY KEY, name varchar(255) collate utf8_unicode_ci NOT NULL, ally bigint(20) NOT NULL, villages bigint(20) NOT NULL, points bigint(20) NOT NULL, rank bigint(20) NOT NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;'; $res_c = mysql_query($sql); if (!$res_c) { echo 'Fehler: Tabelle konnte nicht erstellt werden.<br>'; } $sql = 'TRUNCATE TABLE tbl_tribe;'; $res_d = mysql_query($sql); if (!$res_d) { echo 'Fehler: Tabelle konnte nicht gelöscht werden.<br>'; } try { $file = 'tribe.txt'; if (!file_exists($file)) { trigger_error('Datei nicht vorhanden. Programm abgebrochen.',E_USER_ERROR); } $fh = fopen ($file, 'r'); while (!feof($fh)) { $line = fgets($fh); if (strlen(trim($line))==0) { continue; } list($id, $name, $ally, $villages, $points, $rank) = explode(',', $line); $name = urldecode($name); $name = mysql_escape_string($name); $sql = 'INSERT INTO tbl_tribe (id,name,ally,villages,points,rank) VALUES ('.$id.',\''.$name.'\','.$ally.','.$villages.','.$points.','.$rank.');'; $res_q = mysql_query($sql); if (!$res_q) { echo 'Fehler im Datensatz: '.mysql_error().'<br>'; } } fclose ($fh); $sql = 'SELECT count(id) FROM tbl_tribe;'; $res_s = mysql_query($sql); $row = mysql_fetch_row($res_s); echo 'fertig. '.$row[0].' Datensätze importiert.<br>'; } catch(exception $ex) { echo 'Fehler beim Dateiauslesen...'; fclose ($fh); mysql_close($link); } // **************************************************************************************************************** mysql_close($link); ?>
Beitrag geaendert: 31.5.2007 10:34:18 von scout -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage