PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   PHP für Fortgeschrittene und Experten (http://www.selfphp.de/forum/forumdisplay.php?f=13)
-   -   Dateiimport zu mysql (http://www.selfphp.de/forum/showthread.php?t=5522)

Lars_oha 13.09.2003 22:04:15

Dateiimport zu mysql
 
So, hab da mal ne andere Frage.

Ich habe eine csv-Datei der so aus sieht:

Zitat:

2003;10;Album;Another World;Mike Koglin feat. Marine;
2003;4;Album;Back In Time;Time Travellers;
2003;8;Album;Darkside Of My Dreams;Nightwatchers;
.
.
.
Und eine sql-tabelle mit folgenden Spalten:

Zitat:

ID, jahr, nr, album, interpret, titel
Die Einträge in der *.csv sollen jetzt in die DB eingetragen werden, aber wie?

c4 14.09.2003 07:36:27

Es gibt glaube ich eine Datei, die bei mySQL dabei ist, mit der man solche Dateien einlesen kann.

Ist mir aber entfallen.

Darum so:
PHP-Code:

<?php
$f
=file('csv.txt');
for (
$i=0$i<count($f); $i++) {
 
$t=explode(';'$f[$i]);
 
mysql_query("INSERT INTO tabelle (jahr, nr, album, interpret, titel)
              VALUES ('$f[0]', '$f[1]', '$f[2]', '$f[3]', '$f[4]');"
) or die(mysql_error());
}
?>

Alles klarofix? :)

Lars_oha 14.09.2003 15:07:12

Besten dank.

Jetzt nur noch eine Frage. Wie wähle ich die Datei aus die irgendwo auf dem PC liegt und dann in die DB geschrieben werden soll?

Momentan bekomme ich noch diese Fehlermeldung:

Zitat:

Warning: file(mp3tag.csv) [function.file]: failed to create stream: No such file or directory in E:phpmp3mp3mp3_load.php on line 9
Ist ja auch klar, weil die Datei nicht in dem Verzeichnis liegt.

Und zum zweiten Problem. Wenn die Datei in dem Verzeichnis liegt werden auch die Daten in die DB geschrieben, aber irgendwie total falsch.Aussehen tut das in der DB so:

Zitat:

Bearbeiten Löschen 000001 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000002 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000003 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000004 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000005 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000006 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000007 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000008 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000009 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000010 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000011 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000012 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000013 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000014 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000015 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000016 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000017 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000018 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000019 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future
Bearbeiten Löschen 000020 2003 2003 2003;8;CD2;Darkside Of My Drea 2003;5;CD2;Do Not Attempt;Kayl 2003;12;CD2;Drum & Bass;Future

Und zum vergleich die *.csv.

Zitat:

2003;10;Album;Another World;Mike Koglin feat. Marine;
2003;4;Album;Back In Time;Time Travellers;
2003;8;Album;Darkside Of My Dreams;Nightwatchers;
.
.
.

Was mache ich da falsch? Der Code sieht jetzt so aus.

PHP-Code:

<?php
include ("config.php");
$verbindung = @mysql_connect("$host","$name","$pw");
if (!
$verbindung)
{
    echo 
"Zur Zeit ist keine Verbindung zur Datenbank möglichn";
    exit;
}
$f=file('mp3tag.csv');
for (
$i=0$i<count($f); $i++) {
 
$t=explode(';'$f[$i]);
 
mysql_query("INSERT INTO musik.mp3 (jahr, nr, album, interpret, titel)
              VALUES ('$f[0]', '$f[1]', '$f[2]', '$f[3]', '$f[4]');"
) or die(mysql_error());
}
?>


c4 14.09.2003 15:10:25

hehe. Ups! :)

In der mySQL-Abfrage muss das so lauten:
VALUES ('$t[0]', '$t[1]', '$t[2]', '$t[3]', '$t[4]')

Lars_oha 14.09.2003 15:14:28

Boahhhh neee, jetzt auch noch das:

Zitat:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'VALUES ('2003', '10', 'CD2', 'Another World', 'Mike Koglin feat
Hab ich jetzt eine zu alte mysql Version?

c4 14.09.2003 15:18:32

Ruhig bleiben - wäre doch langweilig, wenn's beim ersten Versuch klappen würde.

Zeig mal das komplette mysql_query()-Ding und dazu eine Auflistung der Feldtypen dieser Tabelle.
Zahlen dürfen in der Abfrage nicht in ' stehen, Zeichenketten dagegen müssen es.

Lars_oha 14.09.2003 15:21:35

Du meinst jetzt das

PHP-Code:

<?php
include ("config.php");
$verbindung = @mysql_connect("$host","$name","$pw");
if (!
$verbindung)
{
    echo 
"Zur Zeit ist keine Verbindung zur Datenbank möglichn";
    exit;
}
$f=file('mp3tag.csv');
for (
$i=0$i<count($f); $i++) {
 
$t=explode(';'$f[$i]);
 
mysql_query("INSERT INTO musik.mp3 (jahr, nr, album, interpret, titel)
              VALUES VALUES ('$t[0]', '$t[1]', '$t[2]', '$t[3]', '$t[4]');"
) or die(mysql_error());
}
?>

und das?
PHP-Code:

DROP TABLE IF EXISTS `mp3`;
CREATE TABLE `mp3` (
  `
IDmediumint(6unsigned zerofill NOT NULL auto_increment,
  `
jahrsmallint(4) default NULL,
  `
nrsmallint(3unsigned zerofill default NULL,
  `
albumvarchar(30) default NULL,
  `
interpretvarchar(30) default NULL,
  `
titelvarchar(30) default NULL,
  
PRIMARY KEY  (`ID`)
TYPE=MyISAM


c4 14.09.2003 15:25:09

Jo, genau das meinte ich.

Versuch das mal:
VALUES ($t[0], $t[1], '$t[2]', '$t[3]', '$t[4]')
Übrigens steht bei Dir 2 mal VALUES -> 1 weg!

Lars_oha 14.09.2003 15:29:16

Supa, das funzt.

Das Zahlen nicht in ' stehen dürfen, da hätte ich auch selbst drauf kommen können.


Und wie funzt das, das der User eine Datei auf seiner Platte aussuchen kann die in die DB geschrieben werden soll? Das ich da nen Upload irgendwie brauche ist klar, aber wie?

ne menge Fragen, weil soweit bin ich dann doch noch nicht. :D

c4 14.09.2003 15:31:28

Zum Thema Upload kann ich nur die Suchfunktion des Boards empfehlen, denn das Thema Upload wurde schon oft genug durch die Mangel genommen. :)


Alle Zeitangaben in WEZ +2. Es ist jetzt 09:22:14 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.