[Script] CSV-Dateien ändern lassen...

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

  • [Script] CSV-Dateien ändern lassen...

    Hallo, ich suche ein bestimmtest Script, oder jemanden der mir sagen kann, ob mein Vorhaben überhaupt möglich ist.

    Ich habe vor einen Shop zu betreiben. Es geht dabei um Reifen usw. Nun möchte ich meinen Artikelstamm täglich einlesen lassen. 15000 Artikel per Hand wird wohl zu krass. Zumal sich die Artikel und deren Preise täglich ändern.
    Mein Großhändler kann mir nur eine CSV Datei anbieten. Nur hat diese leider nicht die richtige "Form".

    Ich möchte dazu mal ein Beispiel nennen:

    In der CSV Datei sind die Produkte wie folgt angegeben (Beispiel):

    "Dunlop";"195/55 ZR 16 SP 2000t (Sommerreifen)";"EK-Preis";"VK-Preis";"Lagerbestand";"Aussenlagerbestand
    nächste Zeile
    usw
    usf

    Das Problem ist die Spalte "195/55 ZR 16 SP 2000t (Sommerreifen)" die sollte nämlich eigentlich so aussehen:

    "195";"55";"Z";"R";"16";"SP 2000t";"Sommerreifen"

    Mit einem normalen Texteditor kann ich mit Suchen und Ersetzen natürlich alles einzeln ändern lassen. Aber auf dauer ist das kein Zustand. Meine Frage deshalb:

    Kann man ein script erstellen, welches mir meine csv datei online automatisch in diese Form bringen kann? Ich will Sie später einfach per Knopfdruck runterladen können, umändern lassen und in die dB schreiben.

    Hat irgendjemand dazu ne Idee?

  • #2
    naja, wenn diese bezeichnung einer logischen regel folgt, ist ein einfacher regulärer ausdruck das, was du brauchst, zB preg_split() + das tutorial über reguläre ausdrücke
    Kissolino.com

    Kommentar


    • #3
      du kannst z.B. die Datei mit PHP einlesen, die Spalte explizit untersuchen, mit explode oder RegEx auseinander pflücken und somit auf das richtige Format bringen, entweder in einer neuen Datei schreiben und in einem Rutsch importieren, oder direkt zeilenweise dann in die DB schreiben.

      Kommentar


      • #4
        also ich hab hier mal ein bisschen gesucht, und dachte eventuell an so was:

        http://www.php-resource.de/forum/sho...&highlight=csv

        eben einfach mit mehreren übersetzungsargumenten.

        Kommentar


        • #5
          du hast aber in deinem Fall ein spezifisches Problem, weil du aus:

          - 195/55 -> "195";"55",
          - ZR -> "Z";"R" und
          - SP 2000t -> "SP 2000t"

          machen willst. Daher ist es nicht einfach.

          Für den Anfang kannst du schon mal das nehmen:
          PHP-Code:
          $str "195/55 ZR 16 SP 2000t (Sommerreifen)";
          $keywords preg_split("/[\s,\/()]+/"$str);
          echo 
          '<pre>';
          print_r($keywords);
          echo 
          '</pre>'
          weitere Aufsplittung bzw. Umwandlung kannst du selbst mal überlegen.

          da das Forum Zeichen verschluckt, hier nochmals: $keywords = preg_split("/[\s,\/()]+/", $str);

          Kommentar


          • #6
            öhm, nun mal eine vielleicht etwas dumme frage

            So funktioniert es:

            $inhalt[$i] = ''. str_replace('WERT1', 'N_WERT1', trim($inhalt[$i])). '';

            mit der Zeile kann ich jedes Argument einzeln so umschreiben, dass ich später den datensatz in der richtigen reihenfolge da stehen habe...

            Nur meine (dümmliche) Frage: Wie wiederhole ich diese Zeile so, dass ich mehrere einzelne Zeichenketten umbenennen kann?

            Kommentar


            • #7
              ich weiß zwar nicht, was du machen willst, aber str_replace kann auch mit Array als Argument arbeiten.

              Kommentar


              • #8
                also gehen wir nochmal davon aus:

                "WERT1";"WERT2";"WERT3";"WERT4"

                soll verändert werden in:

                N_WERT1;N_WERT2;N_WERT3;N_WERT4

                um das zu realisieren hab ich mich eines Bereits hier geposteten scriptes Bedient um "WERT1" in N_WERT1 umzuschreiben. Und zwar so:

                $inhalt[$i] = str_replace('"WERT1"', 'N_WERT1', trim($inhalt[$i])) ;

                meine Frage:
                Wie bekomm ich jetzt noch im selben script WERT2,3 und 4 umgeschrieben?


                Mit dieser Zeile kann ich die Werte so umschreiben wie ich sie brauche. Hab ich schon probiert. Nur muß ich den Befehl einfach mehrmals widerholen...und ich weiß nicht wie...(omg bin ich schlecht)

                Kommentar


                • #9
                  Bitte keine unaufgeforderte eMail an mich senden. Beim nächsten Mal werde ich nicht mehr antworten
                  ...aber ich muß dich leider nochmal auf diesem weg nerven... ich komme einfach nicht weiter. Ich hab auch ehrlich gesagt nich so viel ahnung von dem was ich da tue...
                  Also: Ich benutze momentan das:
                  PHP-Code:
                  set_time_limit(0);
                  $inhalt file('datei.csv');
                  for(
                  $i=0$i<count($inhalt); $i++)
                    
                  $inhalt[$i] = '"'str_replace('xyz''abc'trim($inhalt[$i])). '"';
                  $fp fopen('neuedatei.csv''w');
                  fputs($fpimplode("\n"$inhalt));
                  fclose($fp); 
                  um die Datensätze zu ändern. Das funktioniert auch wunderbar, nur wie kann ich diesen befehl einfach nur wiederholen:
                  PHP-Code:
                    $inhalt[$i] = '"'str_replace('xyz''abc'trim($inhalt[$i])). '"'
                  so das ich mehrere Datensätze aufeinmal umbenennen kann?
                  Sorry, aber ich kenn mich damit wirklich nicht gut aus. Hab bis jetzt nur an foren "Gebastelt"...

                  Gruß Kai
                  Ich bin jetzt etwas faul, daher schau dir mal den Code an:
                  PHP-Code:
                  // ... code von vorigen Posting von mir 
                  // ...
                  $str '"'.$keywords[0].'";"'.$keywords[1].'";"'.$keywords[2]{0}.
                         
                  '";"'.$keywords[2]{1}.'";"'.$keywords[3].'";"'.$keywords[4].
                         
                  ' '.$keywords[5].'";"'.$keywords[6].'"';
                  echo 
                  $str

                  Kommentar

                  Lädt...
                  X