php txt>mysql

havoc

Mitglied
hallo
ich haem ich hier im forum zu diesem thema schon umgeschaut, aber leider bisher nichts gefunden wasm mir so richtig weiterhilft.

ich habe eine txt datei der folgenden struktur:

PHP:
-------------------------------------------------------------------------------
Nummer:    0307/158
Autor:     Müller, R.   
Titel:     Rauschen
Jahr:      
Verlag:    Springer
ISBN:      3-540-09379-6 
Standort:  Bib
Inventur:  nv99
Verliehen:
-------------------------------------------------------------------------------
Nummer:    0307/252.0
Autor:     Poch; Seiler  
Titel:     Taschenbuch der Telekom Praxis
Jahr:      
Verlag:    
ISBN:      
Standort:  bib
Inventur:  99
Verliehen:
-------------------------------------------------------------------------------

nun würde ich diese datensätze, es sind so ungefähr 1200, in eine mysql tabelle überführen.
die namen der spalten sind ja schon aus der txt vorgegeben.
nun mit fgets() könnte ih ja auch die ganze datei zeilenweise einlesen und zum beispiel in ein array der form

allerdings möchte ihc ja nur die teile der datei haben die nach dem doppelpunkt sind und keine leerzeichen, allerding müssen leerzeichen in den datenfelden, also zum beispiel im titel, erhalten bleiben.
nach jeder zeile die mit ---- gefüllt ist würde ich dann eine neue tabellen zeile anfangen lassen..

hat jemand iene idee und kann mir dabei helfen, denn cih habe mich unter php noch sehr wenig mit dateibearbeitung aus einander gesetzt.
mfg
 
Dann schau dir doch mal die String-Funktionen an.

Damit kannst du eine eingelesene Datei so manipulieren wie du magst. Das von dir beschriebene sollte kein Problem sein.
Bei Fragen meld dich einfach noch mal ...


grüße, Ronin
 
mal als beispiel:
PHP:
<?
//Einlesen
$file = fopen("datei.txt", "r");
$data = "";
while(!feof($file)){
  $data .= fgets($file, 1024);
}
fclose($file);

//In die einzelnen Bücher aufteilen
$books = explode("-------------------------------------------------------------------------------",$data);

//Verbindung zur Datenbank herstellen
$con = mysql_connect...
select_database...

//In einzelne Felder aufteilen
foreach($books as $book){
  $rows = explode("\n", $book);

  $tmp = explode(":",$rows[0])
  $nummer = trim($tmp[1]);
  $tmp = explode(":",$rows[1])
  $autor = trim($tmp[1]);
  $tmp = explode(":",$rows[2])
  $titel = trim($tmp[1]);
  $tmp = explode(":",$rows[3])
  $jahr = trim($tmp[1]);
  $tmp = explode(":",$rows[4])
  $verlag = trim($tmp[1]);
  $tmp = explode(":",$rows[5])
  $isbn = trim($tmp[1]);
  $tmp = explode(":",$rows[6])
  $standort = trim($tmp[1]);
  $tmp = explode(":",$rows[7])
  $inventur = trim($tmp[1]);
  $tmp = explode(":",$rows[8])
  $verliehen = trim($tmp[1]);


  //In Tabelle eintragen
  if(!mysql_query("INSERT INTO `tabelle` (nummer, autor...) VALUES ('$nummer', '$autor'...)")){ //Noch die restlichen Felder eintragen
    die("Fehler beim eintragen des Buches $titel von $autor.\n<br>Fehler: ".mysql_error());
  }
}
echo "Fertig!";
?>

sollte irgendwo ein ":" vorkommen, z.b. im buchtitel, hast du ein problem. dann musst du den code ein bissl verändern, dass der das array $tmp ab dem ersten index wieder zusammenfügt...

de.php.net/trim
de.php.net/explode
 
Zurück