Hallo liebe Community,
Situation:
Ich lade von meinem Lieferanten täglich mittels cronjob eine Lagerbestandsliste auf meinen Server. Die Datei ist im csv-Format und endet in jeder Zeile mit einem ';' (Semikolon) und hat KEINE Feldüberschriften.:
SB-334;1234567890;100;
TK-765;9876543210;30;
...
Da ich diese Liste gerne dazu nutzen würde automatisch mit einem Cronjob meine Shop-Datenbank mit neuen Lagerbeständen zu updaten, müsste doch erst einmal eine Zeile mit den Feldüberschriften in die erste Zeile der Datei UND dann das letzte Semikolon weg, damit ich es als Array mit fgetcsv laden kann, oder?
Nächste Frage:
Wie bekomme ich es hin, dass ich die Datei dann in meiner SQL-Datenbank als Update in die Tabelle "Artikel" geladen bekomme?
Ich müsste doch ins php-script ein SQL-Befehl mit Update auf die "Artikel"-Tabelle der Datenbank mit den Feldern "oxartnum", "oxean", und "oxstock" machen, oder?
Wie geht so etwas?
Den Teil mit den Feldnamen habe ich schon einigermaßen hinbekommen. Allerdings hat der Array danach leider immer ein Feld (letztes Semikolon) zuviel.
Situation:
Ich lade von meinem Lieferanten täglich mittels cronjob eine Lagerbestandsliste auf meinen Server. Die Datei ist im csv-Format und endet in jeder Zeile mit einem ';' (Semikolon) und hat KEINE Feldüberschriften.:
SB-334;1234567890;100;
TK-765;9876543210;30;
...
Da ich diese Liste gerne dazu nutzen würde automatisch mit einem Cronjob meine Shop-Datenbank mit neuen Lagerbeständen zu updaten, müsste doch erst einmal eine Zeile mit den Feldüberschriften in die erste Zeile der Datei UND dann das letzte Semikolon weg, damit ich es als Array mit fgetcsv laden kann, oder?
Nächste Frage:
Wie bekomme ich es hin, dass ich die Datei dann in meiner SQL-Datenbank als Update in die Tabelle "Artikel" geladen bekomme?
Ich müsste doch ins php-script ein SQL-Befehl mit Update auf die "Artikel"-Tabelle der Datenbank mit den Feldern "oxartnum", "oxean", und "oxstock" machen, oder?
Wie geht so etwas?
Den Teil mit den Feldnamen habe ich schon einigermaßen hinbekommen. Allerdings hat der Array danach leider immer ein Feld (letztes Semikolon) zuviel.
PHP-Code:
<?php
function csv_to_array($filename='lager_csv_relativ.csv', $delimiter=';', $fieldnames='oxartnum;oxean;oxstock;')
{
if(!file_exists($filename) || !is_readable($filename))
return FALSE;
if(strlen($fieldnames) > 0) {
$header = explode(";",$fieldnames);
} else {
$header = NULL;
}
$data = array();
if (($handle = fopen($filename, 'r')) !== FALSE)
{
while (($row = fgetcsv($handle, 0, $delimiter)) !== FALSE)
{
if(!$header)
$header = $row;
else
$data[] = array_combine($header, $row);
}
fclose($handle);
}
return $data;
}
print_r(csv_to_array('lager_csv_relativ.csv'));
?>
Kommentar