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

Automatisches Importscript für einen Onlineshop

Mitglied: illy79

illy79 (Level 1) - Jetzt verbinden

07.01.2012 um 15:34 Uhr, 6090 Aufrufe, 11 Kommentare

Wäre es möglich ein php Script zu schreiben das aus CSV Dateien einen Import in einen XTC Modified macht

Hallo,

erstmal ein frohes neues Jarh allen.

es geht darum das Script sollte sich aus 5 CSV Dateien herunterladen, in eine Importdatei wandeln und dabei diverse Preise berechnen und dann per cron regelmäßig ausgeführt werden.

Ist dies überhaupt machbar?

Greetz illy
Mitglied: nxclass
08.01.2012 um 13:57 Uhr
Ist dies überhaupt machbar?
sicher - so einfach wie Kuchen essen
Bitte warten ..
Mitglied: illy79
09.01.2012 um 07:21 Uhr
Hi,

na jetzt ist mir alles klar, wenn ich schon Probleme mit dem Kuchen essen habe

Würdest Du mir dabei helfen? Leider habe ich gar keine Ahnung vom php.

Greetz illy
Bitte warten ..
Mitglied: nxclass
09.01.2012 um 09:12 Uhr
Würdest Du mir dabei helfen?
sicher

Leider habe ich gar keine Ahnung vom php
das solltest Du aber jetzt ändern, da so ein Import Script gewartet werden muss. Da ich dein XTC auch nicht kenne "kann ich Dir auch nur die Richtung zeigen ... durchgehen musst Du alleine"

Mal ein paar Tipps:
Die Datenbank (MySQL ? ) ist ein sehr mächtiges Werkzeug - wenn immer möglich solltest Du die Daten in eine temporäre Tabelle einlesen und den Rest von der DB erledigen lassen.
Das einlesen der CVS Dateien kann ebenfalls aus der DB erfolgen, muss dann nur von PHP aus angestoßen werden.

Oder: aus PHP mit ftp_get() mit fgetcsv() oder file_get_contents() die Dateien vom FTP Server holen.
Bitte warten ..
Mitglied: illy79
09.01.2012 um 12:28 Uhr
erstmal Danke das mir helfen willst. PHP kenne ich micht nicht aus weil ich nur gelernter KFZ-Mech bin, aber denke ich verstehe Programme anhand des Codes komischerweise recht schnell und gut

zu den Daten XTC Modified Shop, MySQL Datenbank.

Würde sagen fangen wir erstmal von vorne an csv Dateien liegen auf einem http Server. Gibts ftp_get auch als http Version?

Das mit dem Einlesen in eine seperate DB erspart auch noch viel Arbeit
Bitte warten ..
Mitglied: nxclass
09.01.2012 um 13:18 Uhr
Gibts ftp_get auch als http Version?
da kannst du file_get_contents() benutzen - und einfach die URL angeben.
01.
<?php 
02.
$data = file_get_contents('http://server.de/datei.csv'); 
03.
 
04.
// debug 
05.
echo $data;
Einlesen in eine seperate DB
Wenn dann gleich in die Datenbank der XTC Anwendung - Temp. Tabellen sind nur für die Session der MySql Verbindung im Speicher präsent, und man kann dann mit einer SQL Anweisung die Berechnungen durchführen und die Daten aktualisieren.
Bitte warten ..
Mitglied: illy79
09.01.2012 um 19:27 Uhr
Aha. Ok und die Daten muss man zwischenspeichern oder kann man die Ausgabe direkt in die Datenbank geben? Wäre es vielleicht besser erst die Dateien zwischenzuspeichern? Teilweise sind Sie 95 MB groß und wenn es dann zwischenzeitlich abbricht?
Bitte warten ..
Mitglied: nxclass
10.01.2012 um 09:55 Uhr
besser erst die Dateien zwischenzuspeichern?
die temp. Tabelle besteht nur solange wie das Script läuft ( je Session ) - d.h. wenn beim füllen und einlesen der Daten ein Fehler passiert ist diese temp. Tabelle eh weg.

Sollte dann beim Import der Daten in die Tabellen des XTC ein Fehler auftreten, muss ein rollback gemacht werden.
Sollte der Datenbankserver beim Import abstürzen sollte der Server Admin Hintern verkloppt werden.
Bitte warten ..
Mitglied: illy79
10.01.2012 um 10:46 Uhr
hmm. eigentlich wollte ich nach dem Script ein Importscript starten, oder meinst Du wir kriegen das hin direkt Artikel in die Datenbank neu anlegen?

01.
<?php  
02.
$data = file_get_contents('http://haendler.csv');  
03.
 
04.
explode(";", data$) 
05.
echo "Teil1:";$data[1];"       Teil2:";$data[2];"        Teil3:";$data[3];"       Teil4:";$data[4]; 
06.
 
07.
// debug 
Hab mal versucht die Eingabe zu splitten. Ist dies so richtig?
Bitte warten ..
Mitglied: nxclass
10.01.2012 um 14:21 Uhr
versucht die Eingabe zu splitten
Ich würde die CSV Datei auf dem MySql Server ablegen - file_put_contents() - und dann mit dem SQL Befehl LOAD DATA INFILE ( http://dev.mysql.com/doc/refman/5.0/en/load-data.html ) in eine vorher erstellte Temporäre Tabelle ( http://dev.mysql.com/doc/refman/5.1/de/create-table.html ) laden.
Dazu musst du den Inhalt der CSV Datei kennen (Namen und Position der Felder) und deren enclosure und escape Zeichen

zum "manuellen" einlesen einer CSV Datei würde ich fgetcsv() ( http://php.net/manual/en/function.fgetcsv.php ) benutzen.

EDIT: ggf. hab ich heute Abend mal etwas Zeit Dir ein Beispiel Code zu bauen
Bitte warten ..
Mitglied: nxclass
22.01.2012 um 13:21 Uhr
gut das Du die PM geschrieben hast, hatte es völlig vergessen - nun mal etwas Code für Dich zu lesen:
01.
<?php 
02.
 
03.
define('PATH_CSV_IMPORT', '.'); 
04.
// anhand der CSV Daten festlegen 
05.
define('CSV_DELIMITER', "\t"); 
06.
define('CSV_ENCLOSURE', '"'); 
07.
 
08.
/** 
09.
 * Enter description here ... 
10.
 */ 
11.
class Your_Library_Import 
12.
13.
	/** 
14.
	 * Enter description here ... 
15.
	 * @var PDO 
16.
	 */ 
17.
	private $_db; 
18.
	 
19.
	/** 
20.
	 * Enter description here ... 
21.
	 * @throws Exception 
22.
	 */ 
23.
	public function __construct() 
24.
25.
		try  { 
26.
			$this->_db = new PDO('mysql:dbname=xtc;host=127.0.0.1', 'user', 'password'); 
27.
		} catch(PDOException $e) { 
28.
			throw new Exception('konnte nicht mit der Datenbank verbinden', null, $e); 
29.
30.
		 
31.
		try { 
32.
			$this->_createTempTable() 
33.
				 ->_readCsv( PATH_CSV_IMPORT.PATH_SEPARATOR.'deineDatei.csv' ) 
34.
			 	 ->_transferData(); 
35.
		} catch (Exception $e) { 
36.
			throw new Exception('Fehler beim Importvorgang', null, $e); 
37.
38.
39.
	 
40.
	/** 
41.
	 * Enter description here ... 
42.
	 * @throws Exception 
43.
	 * @return Your_Library_Import 
44.
	 */ 
45.
	private function _createTempTable() 
46.
47.
		$sql = <<<__SQL__ 
48.
CREATE TEMPORARY TABLE IF NOT EXISTS `__tempTable` ( 
49.
/*  hier deine Spalten definitionen anhand der CSV Datei angeben */ 
50.
51.
__SQL__; 
52.
		if (!$this->_db->exec( $sql )) { 
53.
			throw new Exception( 'Fehler beim erstellen der temp. Tabelle'."\n".print_r($this->_db->errorInfo(),true), null, $e ); 
54.
55.
		return $this; 
56.
57.
	 
58.
	/** 
59.
	 * Enter description here ... 
60.
	 * @param string $filename		Pfad und Dateiname der CSV Datei 
61.
	 * @throws Exception 
62.
	 * @return Your_Library_Import 
63.
	 */ 
64.
	private function _readCsv( $filename ) 
65.
66.
		if (!file_exists($filename) || !is_readable($filename)) { 
67.
			throw new Exception('Datei ('.$filename.') existiert nicht oder ist nicht lesbar'); 
68.
69.
		 
70.
		if ($handle = fopen($filename, 'r')) { 
71.
			$sql = <<<__SQL__ 
72.
INSERT INTO `__tempTable` ( /* deine Spaltennamen */ ) VALUES ( ?, ?, ? /* etc */) 
73.
__SQL__; 
74.
			try { 
75.
				$statement = $this->_db->prepare( $sql ); 
76.
			} catch (PDOException $e) { 
77.
				throw new Exception( 'Fehler beim INSERT prepare'."\n".print_r($this->_db->errorInfo(),true), null, $e); 
78.
79.
			while ($dataRow = fgetcsv($handle, null, CSV_DELIMITER, CSV_ENCLOSURE)) { 
80.
				/* ggf noch die Daten aufbereiten damit diese zum INSERT Befehl passen */ 
81.
				if (!$statement->execute( $dataRow )) { 
82.
					throw new Exception('Fehler beim INSERT'."\n".print_r($this->_db->errorInfo(),true)); 
83.
84.
85.
86.
		 
87.
		return $this; 
88.
89.
	 
90.
	/** 
91.
	 * Enter description here ... 
92.
	 * @throws Exception 
93.
	 * @return Your_Library_Import 
94.
	 */ 
95.
	private function _transferData() 
96.
97.
		$sql = <<<__SQL__ 
98.
/* Deine SQL Anweisungen um die Daten aus der temp Tabelle in die Live-Daten-Tabellen zu übertragen */  
99.
__SQL__; 
100.
		try { 
101.
			$this->_db->exec($sql); 
102.
		} catch (PDOException $e) { 
103.
			throw new Exception('Fehler beim Importvorgang'."\n".print_r($this->_db->errorInfo(),true), null, $e); 
104.
105.
		return $this; 
106.
107.
}
Für mehr Details was die SQL Anfragen angeht, musst Du mal mehr Informationen zu deinen CSV Dateien und den Zieltabellen bereitstellen.
Bitte warten ..
Mitglied: illy79
22.01.2012 um 17:32 Uhr
Diese 5 Dateien habe ich von Händler zum Download. Leider gibts es keine fertige Datei.

1 Artikelnummer / Bestand / Artikel UVP ink. MwSt ) / Artikel-Shoppreis Ink. MwSt.
2 Artikelnummer / EAN CODE / Artikel Überschrift / Artikel Kurzbeschreibung / Artikel-Langbeschreibung / Artikel Bild 1 / Artikel Bild 2...
3 Artikelnummer / EAN CODE / Artikel Überschrift / Artikel Kurzbeschreibung / Artikel-Langbeschreibung / Artikel Kategorie
4 Artikelnummer / EAN CODE / Artikel Fahrzeughersteller Zuordnung / Artikel Fahrzeugmodell Zuordnung
5 ArtNr/EAN/Händler Einkaufspreis A-netto/Händler Einkaufspreis-B-netto

Die sind per Semikolon getrennt heißen preisliste1.csv - bis preisliste5.csv, den Link darf ich nicht posten, wegen Vereinbarung vom Händler.
Kann man auch einen http Pfad auf einem Server vom Händler benutzen damit man nicht downloaden muss?

Allerdings sollte man noch einen VK Preis aus Einkaufspreis A oder B netto kalkulieren können.
A oder B hängt vom Umsatz aus den ich hoffentlich machen werde. Kalkulation sollte mehrere anpassbare Stufen haben, z.B:
< 50 - EK+20€ + 40%
< 100 - EK+50€ + 30%
< 300 - EK+70€ + 20 %
< 500 - EK+100€ + 10%
größer 500 - EK+150€ + 5%

Das Originalscript vom Shop habe ich Dir per PM zugesendet. Kann man damit was anfangen?
Bitte warten ..
Ähnliche Inhalte
E-Business

Onlineshop und Warenwirtschaftssystem: API selbst programmieren?

Frage von scheuffeleE-Business8 Kommentare

Hallo! Wir haben ein älteres Warenwirtschaftssystem im Einsatz, dass noch vor der großen E-Commerce-Welle eingekauft wurde. Für unseren neuen ...

Datenbanken

Befehl für SQL Server 2012 - Importscript bei Create Table verallgemeinern

Frage von toxduebelDatenbanken7 Kommentare

Hallo zusammen, Ausgangssituation: Ich habe einen SQL Server und lasse dort nächtlich die Daten von einer Oracle Tabelle über ...

Windows 10

Win10: automatische Benachrichtigung nach extern über automatische Updates und Neustarts

gelöst Frage von StefanMUCWindows 105 Kommentare

Hallo, in den letzten Tagen sind mir 2 Windows-10-Rechner nach automatischen Updates und damit verbundenem, max. ein paar Tage ...

Drucker und Scanner

Automatisch Drucken

Frage von manu90Drucker und Scanner7 Kommentare

hi zusammen, wir haben einen Tintenstrahldrucker im Einsatz der läuft immer Gefahr, dass die Tinten eintrocknen weil der nicht ...

Neue Wissensbeiträge
Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 1 TagWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 1 TagSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Datenschutz

Behörden ignorieren Sicherheitsbedenken gegenüber Windows 10

Information von Penny.Cilin vor 2 TagenDatenschutz8 Kommentare

Hallo, passend zum Thema Ablösung LIMUX in München ein Beitrag bei Heise (siehe Link folgend). Behörden ignorieren Sicherheitsbedenken gegenüber ...

Sicherheit
Information Security Hub Munich airport
Information von brammer vor 2 TagenSicherheit

Hallo, Neues Center für Cyber Kriminalität am Münchener Flughafen brammer

Heiß diskutierte Inhalte
DSL, VDSL
Mindestgeschwindigkeiten DSL Telekom
Frage von justlukasDSL, VDSL13 Kommentare

Hallo zusammen, Seit diesem Jahr habe ich Verständnisprobleme mit dem Verhalten der Telekom. Wir haben seit einem Jahr VDSL ...

Switche und Hubs
LANCOM-Switch: Probleme (no link) mit SFP-Modulen?
Frage von THETOBSwitche und Hubs10 Kommentare

Hi zusammen, ich habe folgendes Problem: Und zwar habe ich an einem Standort drei Switche verbaut - LANCOM GS-2326P+, ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall10 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)8 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...