 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, Deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
28.02.2005, 16:36
|
#1
|
|
TP-Senior
Registriert seit: May 2002
Ort: Saarbrücken
|
Import Skript CSV->mySQL
Hallo Leuts,
ich habe hier ein Problem was mir echt zu hoch ist irgendwie ...
Also ich importiere eine Textdatei in eine mySQL-Datenbank:
PHP-Code:
$fp = fopen ($dateiname, "r"); #öffnen
while (!feof($fp)) { # ende?
$zeile = fgets($fp,1024); # einlesen
$zeile = chop ($zeile);
list ($IDproduct,
$ID_Hauptgruppe,
$Name_Hauptgruppe,
$ID_Untergruppe,
$Name_Untergruppe,
$BestellNr,
$Name,
$Text,
$Preis_Beutel,
$Preis_Beutel_2,
$Preis_Beutel_3,
$Preis_Blister,
$IDgruppe,
$IDuntergruppe
) = explode (";",$zeile); // Felder aufspalten
$zeile = "'".str_replace(",","','",strstr($zeile,","))."'";
$Preis_Beutel = str_replace(",",".",$Preis_Beutel);
$Preis_Beutel_2 = str_replace(",",".",$Preis_Beutel_2);
$Preis_Beutel_3 = str_replace(",",".",$Preis_Beutel_3);
$Preis_Blister = str_replace(",",".",$Preis_Blister);
$sql = "INSERT INTO $produkte (IDproduct,BestellNr,Name,Text,Preis_Beutel,Preis_Beutel_2,Preis_Beutel_3,Preis_Blister,IDgruppe,IDuntergruppe) VALUES ('IDproduct', '$BestellNr', '$Name', '$Text', '$Preis_Beutel', '$Preis_Beutel_2', '$Preis_Beutel_3', '$Preis_Blister' ,'$ID_Hauptgruppe','$ID_Untergruppe')";
$result = mysql_query ($sql,$db);
soweit funktioniert das auch wunderbar.
In ein paar Datensätzen ist die Artikelbeschreibung ($Text) jedoch formatiert, d.h. Tabstops und/oder Returns etc. ... und genau bei diesen Datensätzen steigt der Importvorgang komplett aus und ab der Zeile wird dann nur noch Müll importiert. Warum datt denn? Irgendwie werde ich da nicht schlau draus ..
Wäre Weltklasse wenn mir jemand einen Tipp geben könnte wie ich das hinbekommen könnte ....
Gruß Frank
|
|
|
28.02.2005, 16:54
|
#2
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
in der gerade erschienen Version von MySQLDumper ist CSV-Import drin, kannst Du Dir ja mal anschauen.
Es liegt wahrscheinlich an den Steuerzeichen.
Wandel die nach dem Schema um:
$line=str_replace('\\r', "\015",$line);
$line=str_replace('\\n', "\012",$line);
$line=str_replace('\\t', "\011",$$line);
Geändert von steffenk (28.02.2005 um 16:59 Uhr).
|
|
|
28.02.2005, 19:44
|
#3
|
|
TP-Senior
Registriert seit: May 2002
Ort: Saarbrücken
|
Hallo St@eff.en,
danke für den Tipp.
Ich habe noch etwas rumgespielt und es liegt in jedem Fall an den Sonderzeichen, sobald die Zeile mit den Umbrüchen dran kommt ist Sense ...
Den Code von dir habe ich mal eingebaut, leider immer noch das gleiche Drama, $zeile = str_replace ("\r\n","<br>",$zeile); bringt auch nix.
Deprimiert,
Frank 
|
|
|
01.03.2005, 00:49
|
#4
|
|
TP-Special Mod
Registriert seit: Feb 2005
Ort: Haan / NRW
|
beim Auswerten kannst Du auch mit rtrim($zeile) die Umbrüche eliminieren.
Ersetze chop mal durch rtrim
ich habs mal umgeschrieben, aber ungeprüft:
Code:
while (!feof($fp)) { # ende?
$zeile = fgets($fp,1024); # einlesen
$zeile = rtrim($zeile);
$arr=explode (";",$zeile); // Felder aufspalten
$sql = "INSERT INTO $produkte (IDproduct,BestellNr,Name,Text,
Preis_Beutel,Preis_ Beutel_2,Preis_Beutel_3,Preis_Blister,IDgruppe,IDuntergruppe)
VALUES (
'$arr[0]','$arr[1]','$arr[2]','$arr[3]','$arr[4]','$arr[5]',
'$arr[6]','$arr[7]',".str_replace(",",".",$arr[8]).",".str_replace(",",".",$arr[9]).",".str_replace(",",".",$arr[10]).",
".str_replace(",",".",$arr[11]).",'$arr[12]','$arr[13]');
)";
$result = mysql_query ($sql,$db);
}
Du musst halt noch bei den Zahlen die ticks entfernen.
Ausserdem hattest Du bei den Feldnamen komischerweise spaces dazwischen
Geändert von steffenk (01.03.2005 um 01:03 Uhr).
|
|
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
Thema durchsuchen |
|
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
Alle Zeitangaben in WEZ +2. Es ist jetzt 07:30 Uhr.
|
 |