CSV Datei via PHP in Mysql Laden

Gunah

Erfahrenes Mitglied
Halihallo,

Ich habe folgendes Problem.

ich habe 2 mysql-Tabellen in die das Importiert werden muss bzw. aus der einen müssen variablen mit zu dem anderen gepackt werden damit die umsetzung richtig klappt....

so ich habe folgende mysql tabellen:
- get (tabelle)
id;name;catergory1;category2
und die andere
- cat
id;catname


die tabelle get sieht mit inhalt so aus:
id;name;category1;category
1;Klaus;1;5

also brauche ich dafür die funktion "Left Join"

das importieren soll via cvs datei laufen...


MfG Gunah

PS: hoffe das es verständlich geschrieben ist
 
PS: hoffe das es verständlich geschrieben ist
Nein ;)

Also du solltest folgendes tun:

1. mit fopen() die Datei öffnen
2. mit einer while-Schleife und fgetcsv() die Datei auswerten
3. in der while-Schleife die Daten aus der CSV-Datei in die SQL-Datenbank schreiben.

Das ganze sieht dann so aus:
PHP:
$handle = fopen("deine-datei.csv","r");
while ( ($data= fgetcsv ($handle, 1000, ';') ) !== FALSE ) {
mysql_query("INSERT INTO `plaetze` ( `id` , `name` , `catergory1` , `catergory2`  ) VALUES ('', '$data[0]', '$data[1]', '$data[2]', '$data[3]')")OR die("Konnte Eintrag nicht Schreiben.<br>Fehlermeldung: ".mysql_error());
}
Wenn du jetzt in die "get"-Tabelle auch noch was rein schreiben willst dann füge eben eine zweite mysql_query hinzu.
 
Zuletzt bearbeitet:
danke schonmal
habe aber was vergessen zuzuschreibe vorhin :(

ich habe jetzt nur noch folgendes Problem in der Ersten Zeile der CSV datei sollen die SQL Spalten angeben sein... ich weiss nur leider keine umsetzung... hab bisher nicht das richtige gefunden...

danke schonmal im vorraus ;)

MfG Gunah
 
danke musste nur einwenig verändern da in der
while ein Fehler ist und zwar in dem abschnitt $data 0 fgetcsv
habe es dann so gemacht:
Code:
$handle = fopen("datei.csv","r");
while ( ($data= fgetcsv ($handle, 1000, ';') ) !== FLASE ) {
if(empty($data['9'])) $data['9']='0';
if(!empty($data['3'])) echo("INSERT INTO plaetze ( id , name , catergory1 , catergory2  ) VALUES ('', '$data[1]', '$data[2]', '$data[3]', '$data[4]', '$data[5]', '$data[6]', '$data[7]', '$data[8]', '$data[9]', '$data[10]')");
    }

nur es will immer neue Zeilen hinzufügen wo keine Vorhanden sind... weil hab mir die csv mit notpad angeguckt und da is alles iO, d.h. es kommt zum TimeOut von PHP, gibts ne möglichkeit, die zeilen zu zählenlassen und dann darstellen weil sonst nur fehlermeldungen kommen oder ein teil nicht importiert werde.

PS: mit echo ist erstmal nur zum testen, und habe jetzt mehr spalten ich weiss das ich die noch oben beim insert anpassen muss...

MfG Gunah
 
Moin,

der Code haut hinten und vorn nicht hin Jungs *Seufz*
PHP:
while ( ($data= fgetcsv ($handle, 1000, ';') ) !== FALSE ) {
}
Ansonsten bricht die While Schleife nie ab! Und es kommt zur max_exec Time ;)
Ich hoffe du passt den Rest wirklich noch an, weil die Kontrollstrukturen durch deine veränderte csv Datei nicht mehr stimmen ;)
 
Uups,

da ist mir oben ein Fehler unterlaufen beim Kopieren oder so.
Ich habe den Quelltext oben ausgebessert und jetzt sollte erlaufen - bei mir tut er es jedenfalls.

Hier nochmals der richtige Code:
PHP:
$handle = fopen("deine-datei.csv","r");
while ( ($data= fgetcsv ($handle, 1000, ';') ) !== FALSE ) {
mysql_query("INSERT INTO `plaetze` ( `id` , `name` , `catergory1` , `catergory2`  ) VALUES ('', '$data[0]', '$data[1]', '$data[2]', '$data[3]')")OR die("Konnte Eintrag nicht Schreiben.<br>Fehlermeldung: ".mysql_error());
}
 
omg hätte mir natürlich auch aufallen müssen arrg...

aber danke an euch jungs ;)

Funktioniert supper :D
 
nehme man es einfach als Postives Beispiel für alle anderen die einfach Blind Code abschreiben :D Bissel mitdenken ist unter Umständen angebracht *lach* Hättest einfach sagen sollen das es Absicht war dwex, so als Erzieherische Maßnahme ;)
 
hmm aber es waren am anfang 2 Fehler drinne ein hab ich gefunden nur bei dem anderen *pfeif* *gg*
$data 0 fgetcsv
stand vorher dor
 
Zurück