PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Per PHP Dateiinhalt in eine Datenbank schreiben


noxz
21.04.2006, 13:06
hi.
ich hab folgendes problem:
ich möchte gern per PHP ein Textdatei, die einen bestimmten aufbau hat (zB. 3 Spalten mit Werten), über ein Formular auswählen und anschließend den Inhalt in eine Datenbank schreiben lassen.

Wenn jemand nen Lösungsansatz hat oder mir Tips geben könnte, wär ich sehr dankbar.

greez noxz

Henry
21.04.2006, 14:38
Hi,
Textdatei mit file() einlesen, jede Zeile mit explode() zerlegen, auswerten und zuordnen, Inhalte in DB schreiben, fertig.

Gruß
Henry

noxz
21.04.2006, 16:00
hi..hab jetz ein wenig rumgespielt und hab folgenden Ansatz:


<?php
$thefile=file_get_contents('1.txt');

$lines=array();
$lines=explode("\n", $thefile);
$lineCount=count($lines);

echo $lineCount."<hr>";
for ($i = 0; $i < $lineCount; $i++)
{
echo $lines[$i]."<hr>";
}
?>

so sieht meine Testdatei aus:
Teil1 Teil2
Teil1 Teil2
Teil1 Teil2
Teil1 Teil2

also das Einlesen klappt und das Zerlegen in zeilen auch. Er gibt mir dann auch den Dateiinhalt so aus wie er drin steht. Jetzt hab ich aber noch das Problem wie ich jetzt nochmal die Zeilen auftrenne. Sodass ich dann später die Tabelle in der Datenbank richtig füllen kann.
Oder hab ich jetzt schon in meinem Ansatz was falsch gemacht?

Henry
21.04.2006, 16:15
Hi,
mit file() geht das kürzer.

"Teil1" und "Teil2" einer jeden Zeile findest Du so in $zeile[0] und $zeile[1]<?php
$lines=file('1.txt');
for ($i = 0; $i < count($lines); $i++)
{
unset ($zeile);
$zeile = explode(" ", $lines[$i]);
mysql_query("INSERT INTO tblname (zeile, teil1, teil2) VALUES ($i, '$zeile[0]', '$zeile[1]')");
// echo $zeile[0] . " " . $zeile[1] . "<br />";
}
?>


Willst Du die Daten außerhalb der Schleife weiterverwenden sähe das dann so aus<?php
$lines=file('1.txt');
for ($i = 0; $i < count($lines); $i++)
{
unset ($zeile);
$zeile = explode(" ", $lines[$i]);
$zeilen[$i][0] = $zeile[0];
$zeilen[$i][1] = $zeile[1];
// echo $zeile[0] . " " . $zeile[1] . "<br />";
}
?>

Dann findest Du z.b. "Teil1" der zweiten Zeile in $zeilen[1][0]

Die auskommenentierte Ausgabe ist nur zum Betrachten gedacht.

Gruß
Henry

noxz
21.04.2006, 16:23
hey super danke...
funzt echt klasse.

Boothby
21.04.2006, 21:42
Das geht auch als Nur-MySQL-Variante

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'datei.txt'
[REPLACE | IGNORE]
INTO TABLE tabelle
[FIELDS
[TERMINATED BY '\t']
[[OPTIONALLY] ENCLOSED BY '']
[ESCAPED BY '\\' ]
]
[LINES TERMINATED BY '\n']
[IGNORE Anzahl LINES]
[(spalten_name,...)]



Link (http://dev.mysql.com/doc/refman/4.0/de/load-data.html)