Ankündigung

Einklappen
Keine Ankündigung bisher.

cronjob, sql-datenbank update, csv-datei hat zu viele Semikolon

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • cronjob, sql-datenbank update, csv-datei hat zu viele Semikolon

    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.

    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($handle0$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'));
    ?>

  • #2
    Das letzte Feld kannst du ja einfach ignorieren, warum stellt das ein Problem dar?

    Kommentar


    • #3
      Wie geht so etwas?
      Eigentlich sind das schon konzeptionelle Fragen und scheinen eine Menge Lernbedarf nach sich zu ziehen.
      Gehört wohl eher nicht ein Forum.
      Siehe https://www.php.de/articles/regeln-u...inungsumfragen

      Oder konkretisiere deine Frage, beschränke dich auf ein Thema zum Beispiel Datenbank update. Zeige dann dazu aber auch deine Tabelle als Create Statement und als TEXT nicht als Bild oder Link.

      Kommentar

      Lädt...
      X