Top-Themen

Aktuelle Themen (A bis Z)

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

MySQL Adressbuch in Outlook importieren (Probleme mit Zeilenumbruch in .CSV)

Frage Entwicklung PHP

Mitglied: SamTrex

SamTrex (Level 1) - Jetzt verbinden

23.09.2009, aktualisiert 21.10.2009, 4501 Aufrufe, 5 Kommentare

Hallo zusammen,
mein Problem scheind eigentlich ganz simpel zu sein, doch irgenwie auch wieder nicht.

Folgendes:
Ich habe mir ein Adressbuch in einer MySQL Tabelle erstellt. Dieses möchte ich jetzt gerne nach Outlook 2003 importieren. - Soweit die Theorie...
In Outlook gibt es die Möglichkeit Adressbücher aus .CSV Dateien zu importeieren. (Windows CSV "," getrennt)

Im Header (1. Zeile) befinden sich die Datenfeldnamen - bei Outlook 90 Stück im Stil von: "Anrede","Vorname", ....
Danach folgen pro Zeile ein Adressbucheintrag.

Alles kein Problem. Jetzt gibt es bestimmt mehrere Möglichkeiten um ans Ziel zu kommen.
Nach ein bisschen Googlen habe ich dann SELECT * INTO OUTFILE gefunden und dies erstmal in PHPMyAdmin ausprobiert.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.

Daher habe ich mir jetzt etwas kleines geschrieben:

01.
// Das sind die Datenheader von Outlook! 
02.
// "Anrede","Vorname","Weitere Vornamen","Nachname","Suffix","Firma","Abteilung","Position","Straße geschäftlich","Straße geschäftlich 2","Straße geschäftlich 3"
03.
// "Ort geschäftlich","Region geschäftlich","Postleitzahl geschäftlich","Land geschäftlich","Straße privat","Straße privat 2","Straße privat 3","Ort privat"
04.
// "Region privat","Postleitzahl privat","Land privat","Weitere Straße","Weitere Straße 2","Weitere Straße 3","Weiterer Ort","Weitere Region","Weitere Postleitzahl"
05.
// "Weiteres Land","Telefon Assistent","Fax geschäftlich","Telefon geschäftlich","Telefon geschäftlich 2","Rückmeldung","Autotelefon","Telefon Firma","Fax privat"
06.
// "Telefon privat","Telefon privat 2","ISDN","Mobiltelefon","Weiteres Fax","Weiteres Telefon","Pager","Haupttelefon","Mobiltelefon 2","Telefon für Hörbehinderte"
07.
// "Telex","Abrechnungsinformation","Benutzer 1","Benutzer 2","Benutzer 3","Benutzer 4","Beruf","Büro","E-Mail-Adresse","E-Mail-Typ","E-Mail: Angezeigter Name"
08.
// "E-Mail 2: Adresse","E-Mail 2: Typ","E-Mail 2: Angezeigter Name","E-Mail 3: Adresse","E-Mail 3: Typ","E-Mail 3: Angezeigter Name","Empfohlen von","Geburtstag"
09.
// "Geschlecht","Hobby","Initialen","Internet-Frei/Gebucht","Jahrestag","Kategorien","Kinder","Konto","Name Assistent","Name des/der Vorgesetzten","Notizen"
10.
// "Organisations-Nr.","Ort","Partner","Postfach geschäftlich","Postfach privat","Priorität","Privat","Regierungs-Nr.","Reisekilometer","Sprache","Stichwörter"
11.
// "Vertraulichkeit","Verzeichnisserver","Webseite","Weiteres Postfach" 
12.
 
13.
 
14.
// Hier werden diese als erste Zeile in die Variable $NDS geschrieben		 
15.
	$NDS  = '"Anrede","Vorname","Weitere Vornamen","Nachname","Suffix","Firma","Abteilung","Position","Straße geschäftlich","Straße geschäftlich 2","Straße geschäftlich 3","Ort geschäftlich","Region geschäftlich","Postleitzahl geschäftlich","Land geschäftlich","Straße privat","Straße privat 2","Straße privat 3","Ort privat","Region privat","Postleitzahl privat","Land privat","Weitere Straße","Weitere Straße 2","Weitere Straße 3","Weiterer Ort","Weitere Region","Weitere Postleitzahl","Weiteres Land","Telefon Assistent","Fax geschäftlich","Telefon geschäftlich","Telefon geschäftlich 2","Rückmeldung","Autotelefon","Telefon Firma","Fax privat","Telefon privat","Telefon privat 2","ISDN","Mobiltelefon","Weiteres Fax","Weiteres Telefon","Pager","Haupttelefon","Mobiltelefon 2","Telefon für Hörbehinderte","Telex","Abrechnungsinformation","Benutzer 1","Benutzer 2","Benutzer 3","Benutzer 4","Beruf","Büro","E-Mail-Adresse","E-Mail-Typ","E-Mail: Angezeigter Name","E-Mail 2: Adresse","E-Mail 2: Typ","E-Mail 2: Angezeigter Name","E-Mail 3: Adresse","E-Mail 3: Typ","E-Mail 3: Angezeigter Name","Empfohlen von","Geburtstag","Geschlecht","Hobby","Initialen","Internet-Frei/Gebucht","Jahrestag","Kategorien","Kinder","Konto","Name Assistent","Name des/der Vorgesetzten","Notizen","Organisations-Nr.","Ort","Partner","Postfach geschäftlich","Postfach privat","Priorität","Privat","Regierungs-Nr.","Reisekilometer","Sprache","Stichwörter","Vertraulichkeit","Verzeichnisserver","Webseite","Weiteres Postfach"'; 
16.
	$NDS .= '/n'; 
17.
 
18.
	mysql_connect($dbsvr, $dbuser, $dbpass); 
19.
	mysql_select_db($dbname); 
20.
	$RS = mysql_query("SELECT * FROM adressbook ORDER BY status, name"); 
21.
 
22.
// In dieser Schleife werden die Datenfelder aus meinem Adressbuch in Outlook Datenfelder geschrieben / pro Datensatz 
23.
 
24.
	while ($DS = mysql_fetch_assoc($RS)) 
25.
26.
		$NDS .= '"",'; //Anrede 
27.
		$NDS .= '"' . $DS["vorname"] . '",'; //Vorname 
28.
		$NDS .= '"",'; //Weitere Vornamen 
29.
		$NDS .= '"' . $DS["name"] . '",'; //Nachname 
30.
		$NDS .= '"",'; //Suffix	Firma 
31.
		$NDS .= '"",'; //Abteilung 
32.
		$NDS .= '"",'; //Position 
33.
		$NDS .= '"' . $DS["strasse2"] . '",'; //Straße geschäftlich 
34.
		$NDS .= '"",'; //Straße geschäftlich 2 
35.
		$NDS .= '"",'; //Straße geschäftlich 3 
36.
		$NDS .= '"' . $DS["ort2"] . '",'; //Ort geschäftlich 
37.
		$NDS .= '"",'; //Region geschäftlich 
38.
		$NDS .= '"' . $DS["plz2"] . '",'; //Postleitzahl geschäftlich 
39.
		$NDS .= '"",'; //Land geschäftlich 
40.
		$NDS .= '"' . $DS["strasse"] . '",'; //Straße privat 
41.
		$NDS .= '"",'; //Straße privat 2 
42.
		$NDS .= '"",'; //Straße privat 3 
43.
		$NDS .= '"' . $DS["ort"] . '",'; //Ort privat 
44.
		$NDS .= '"",'; //Region privat 
45.
		$NDS .= '"' . $DS["plz"] . '",'; //Postleitzahl privat 
46.
		$NDS .= '"",'; //Land privat 
47.
		$NDS .= '"",'; //Weitere Straße 
48.
		$NDS .= '"",'; //Weitere Straße 2 
49.
		$NDS .= '"",'; //Weitere Straße 3 
50.
		$NDS .= '"",'; //Weiterer Ort 
51.
		$NDS .= '"",'; //Weitere Region 
52.
		$NDS .= '"",'; //Weitere Postleitzahl 
53.
		$NDS .= '"",'; //Weiteres Land 
54.
		$NDS .= '"",'; //Telefon Assistent 
55.
		$NDS .= '"' . $DS["fax2"] . '",'; //Fax geschäftlich 
56.
		$NDS .= '"' . $DS["tel3"] . '",'; //Telefon geschäftlich 
57.
		$NDS .= '"' . $DS["tel4"] . '",'; //Telefon geschäftlich 2 
58.
		$NDS .= '"",'; //Rückmeldung 
59.
		$NDS .= '"",'; //Autotelefon 
60.
		$NDS .= '"",'; //Telefon Firma 
61.
		$NDS .= '"' . $DS["fax"] . '",'; //Fax privat 
62.
		$NDS .= '"' . $DS["tel"] . '",'; //Telefon privat 
63.
		$NDS .= '"",'; //Telefon privat 2 
64.
		$NDS .= '"",'; //ISDN 
65.
		$NDS .= '"' . $DS["tel2"] . '",'; //Mobiltelefon 
66.
		$NDS .= '"",'; //Weiteres Fax 
67.
		$NDS .= '"",'; //Weiteres Telefon 
68.
		$NDS .= '"",'; //Pager 
69.
		$NDS .= '"",'; //Haupttelefon 
70.
		$NDS .= '"",'; //Mobiltelefon 2 
71.
		$NDS .= '"",'; //Telefon für Hörbehinderte 
72.
		$NDS .= '"",'; //Telex 
73.
		$NDS .= '"",'; //Abrechnungsinformationen 
74.
		$NDS .= '"",'; //Benutzer 1 
75.
		$NDS .= '"",'; //Benutzer 2 
76.
		$NDS .= '"",'; //Benutzer 3 
77.
		$NDS .= '"",'; //Benutzer 4 
78.
		$NDS .= '"",'; //Beruf 
79.
		$NDS .= '"",'; //Büro 
80.
		$NDS .= '"' . $DS["email"] . '",'; //E-Mail-Adresse 
81.
		$NDS .= '"",'; //E-Mail-Typ 
82.
		$NDS .= '"' . $DS["email"] . '",'; //E-Mail: Angezeigter Name 
83.
		$NDS .= '"' . $DS["email2"] . '",'; //E-Mail 2 Adresse 
84.
		$NDS .= '"",'; //E-Mail 2 Typ 
85.
		$NDS .= '"' . $DS["email2"] . '",'; //E-Mail 2 Angezeigter Name 
86.
		$NDS .= '"' . $DS["email3"] . '",'; //E-Mail 3 Adresse 
87.
		$NDS .= '"",'; //E-Mail 3 Typ 
88.
		$NDS .= '"' . $DS["email3"] . '",'; //E-Mail 3 Angezeigter Name 
89.
		$NDS .= '"",'; //Empfohlen von 
90.
		$NDS .= '"' . $DS["geb"] . '",'; //Geburtstag 
91.
		$NDS .= '"",'; //Geschlecht 
92.
		$NDS .= '"",'; //Hobby 
93.
		$NDS .= '"",'; //Initialen 
94.
		$NDS .= '"",'; //Internet-Frei/Gebucht 
95.
		$NDS .= '"",'; //Jahrestag 
96.
		$NDS .= '"' . $DS["status"] . '",'; //Kategorien 
97.
		$NDS .= '"",'; //Kinder 
98.
		$NDS .= '"",'; //Konto 
99.
		$NDS .= '"",'; //Name Assistent 
100.
		$NDS .= '"",'; //Name des/der Vorgesetzten 
101.
		$NDS .= '"' . $DS["notes"] & ', ' & $DS["notes2"] . '",'; //Notizen 
102.
		$NDS .= '"",'; //Organisations-Nr. 
103.
		$NDS .= '"",'; //Ort 
104.
		$NDS .= '"",'; //Partner 
105.
		$NDS .= '"",'; //Postfach geschäftlich 
106.
		$NDS .= '"",'; //Postfach privat 
107.
		$NDS .= '"",'; //Priorität 
108.
		$NDS .= '"",'; //Privat 
109.
		$NDS .= '"",'; //Regierungs-Nr. 
110.
		$NDS .= '"",'; //Reisekilometer 
111.
		$NDS .= '"",'; //Sprache 
112.
		$NDS .= '"",'; //Stichwörter 
113.
		$NDS .= '"",'; //Vertaulichkeit 
114.
		$NDS .= '"",'; //Verzeichnisserver 
115.
		$NDS .= '"' . $DS["hp"] . '",'; //Webseite 
116.
		$NDS .= '""';  //Weiteres Postfach	 
117.
		$NDS .= '/n'; 
118.
119.
 
120.
// Der komplette String wird dann in die Datei geschrieben 
121.
 
122.
$dlfile = fopen("testfile.csv", w); 
123.
fwrite($dlfile, $NDS);	 
124.
fclose($dlfile);
So, das ganze funktioniert soweit ganz gut. Allerdings habe ich in der .csv keine Zeilenumbrüche!!!
Ich habe gegoogled bis ich schwarz war. Alles was ich gefunden habe ist: Hänge ein "/n" oder ein "/r/n" an den String....
Wie Ihr seht habe ich das getan. Wenn ich die Datei in Notepad öffne habe ich eine einzige lange Zeile die Notepad von sich aus irgendwann umbricht.
Öffne ich sie in meinem favorisierten Editor (EvolvED) habe ich nur eine ellen lange Zeile.

Kann mir da wer weiterhelfen? Ich kapier das einfach nicht ....
Übrigens, kann ich statt die Datei nur zu erstellen diese nicht auch "nicht" schreiben und den String direkt zum download anbieten? Über "header content-type"???

Bin für jeden Rat dankbar....

MfG Sam
Mitglied: 76109
23.09.2009 um 00:33 Uhr
Hallo Sam!

Versuch mal anstatt "/r/n" das hier "\r\n".

Gruß Dieter
Bitte warten ..
Mitglied: nxclass
23.09.2009 um 08:35 Uhr
Nach ein bisschen Googlen habe ich dann SELECT * INTO OUTFILE gefunden und dies erstmal in PHPMyAdmin ausprobiert.
Tolle Sache, leider stimmen die Datenfelder meines Adressbuches nicht mit Outlook überein.

wieso erstellst Du dir dann nicht einfach eine Temp.Tabelle und exportierst diese ?
01.
CREATE TEMPORARY TABLE IF NOT EXISTS 'export' 
02.
SELECT 
03.
  '' AS 'Anrede', 
04.
  `vorname` AS 'Vorname', 
05.
/* usw. */ 
06.
FROM `adressbook` ORDER BY `status`, `name`; 
07.
 
08.
SELECT * INTO OUTFILE 'wo/auch/immer' 
09.
/* ggf. noch 
10.
FIELDS TERMINATED BY ',' 
11.
FIELDS ENCLOSED BY '"' 
12.
LINES TERMINATED BY '\n' 
13.
*/ 
14.
FROM `export`;
Bitte warten ..
Mitglied: SamTrex
23.09.2009 um 18:18 Uhr
Danke euch für die schnelle Hilfe!

@Dieter
Wenn ich so etwas sehe kann ich echt verzweifeln... - nur / & \ vertauscht...
Ich habe als erstes das '/n' gegen '/r/n' getauscht. - Das funktioniert auch nicht !!! Es darf kein ' sondern es muß ein " sein!
Muß ich auch sonst irgendwo darauf achten " statt ' zu nehmen? In der "Füllung" des Headers habe ich ja meine lange Zeichenkette die " beinhaltet in ' gekapselt.
Wenn ich die ' als " geschrieben habe bekam ich eine Fehlermeldung....

@nxclass
Interesanter Vorschlag. Ich bin noch sehr neu auf dem Gebiet PHP/MySQL, die Möglichkeit einer temporären Tabelle kannte ich noch gar nicht.
Ich werde mir das auf jeden Fall mal näher ansehen.

MfG
Sam
Bitte warten ..
Mitglied: nxclass
23.09.2009 um 19:31 Uhr
Beachte die doppelten Anführungszeichen zu benutzen! : "\n" nicht '\n'
PHP parst nur die Strings mit "

zB. echo '$var' sollte auch nicht gehen - nur echo "$var"
Bitte warten ..
Mitglied: SamTrex
23.09.2009 um 19:37 Uhr
Danke, gut zu wissen!

MfG
Sam
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
CSV-Datei nach Excel importieren
Frage von mrvfbnummer2Batch & Shell5 Kommentare

Hallo Leute, ich möchte CSV-Dateien in eine Excel-Datei mit PowerSell importieren. Ich habe bereits viel ausprobiert aber habe noch ...

VB for Applications
csv Dateien als Text importieren
gelöst Frage von BacchidaVB for Applications7 Kommentare

Hallo :) ich habe ein Makro geschrieben, das .csv Dateien importiert. Nun habe ich folgendes Problem: In den importierten ...

PHP
Txt Datei in mysql importieren
gelöst Frage von dax4funPHP5 Kommentare

Hi, Leute habe mehrere txt Dateien auf einem FTP Server und möchte diese Daten in eine mysql DB auf ...

Datenbanken
MySQL Datenbank in MSSQL importieren
Frage von MaffiDatenbanken6 Kommentare

Hallo, ich habe eine MySQL Datenbank und würde Sie gerne in MSSQL EXPRESS importieren, ich nutze das "Microsoft SQL ...

Neue Wissensbeiträge
MikroTik RouterOS

Mikrotik - Lets Encrypt Zertifikate mit MetaROUTER Instanz auf dem Router erzeugen

Anleitung von colinardo vor 13 StundenMikroTik RouterOS4 Kommentare

Einleitung Folgende Anleitung ist aus der Lage heraus entstanden das ein Kunde auf seinem Mikrotik sein Hotspot Captive Portal ...

Sicherheit

Sicherheitslücke in HP-Druckern - Firmware-Updates stehen bereit

Information von BassFishFox vor 13 StundenSicherheit1 Kommentar

Ein weiterer Grund, dass Drucker keinerlei Verbindung nach "auswaerts" haben sollen. Unter Verwendung spezieller Malware können Angreifer aus der ...

Administrator.de Feedback

Entwicklertagebuch: Die Startseite wurde überarbeitet

Information von admtech vor 16 StundenAdministrator.de Feedback9 Kommentare

Hallo Administrator User, mit dem Release 5.7 haben wir unsere Startseite überarbeitet und die Beiträge und Fragen voneinander getrennt. ...

Vmware

VMware Desktopprodukte sind verwundbar

Information von Penny.Cilin vor 21 StundenVmware

Die VMware-Anwendungen zum Umgang mit virtuellen Maschinen Fusion, Horizon Client und Workstation sowie die Plattform NSX sind verwundbar. Davon ...

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Frage von ahstaxVisual Studio24 Kommentare

Hallo, ich möchte gerne ein vb.net-Tool schreiben, das am Ende eine Outlook-E-Mail erzeugt. Grundsätzlich ist mir klar, wie das ...

Windows Server
RDP macht Server schneller???
Frage von JaniDJWindows Server16 Kommentare

Hallo Community, wir betrieben seit geraumer Zeit diverse virtuelle Maschinen und Server mit Windows Server 2012. Leider haben wir ...

Windows Netzwerk
Netzwerk Neustrukturierung
Frage von IT-DreamerWindows Netzwerk16 Kommentare

Hallo verehrte Community und Admins, bei uns im Haus steht eine Neustrukturierung an. Dafür benötige ich von euch ein ...

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Frage von AkcentWindows 1015 Kommentare

Hallo, habe hier einen Windows 10 Rechner der von einem User umgefallen wurde (Beine übers Knie, an den PC ...