fgetcsv und Datum konvertieren

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

  • fgetcsv und Datum konvertieren

    Hallo,

    ich habe ne csv Datei und möchte diese per PHP gerne in ein txt File konvertieren die ein anderes Format aufweist
    Jetzt lese ich das Ganze mit fgetcsv ein und erhalte ein Array.

    in der ersten Zeile steht die Spaltenzuordnung die soll gefiltert werden und nicht in der txt datei erscheinen.

    ab zeile 2 sieht es dann folgendermassen aus

    7-Sep-04,19.24,19.36,19.04
    6-Sep-04,19.20,19.45,19.06
    usw.

    nun folgendes. das Datum soll umgewandelt werden in folgendes Format 07.09.04 mit welchem Befehl mach ich das am besten ?
    Bei den Werten sollen die Punkte sollen in Kommas geändert werden.


    Danke erstmal

  • #2
    Re: fgetcsv und Datum konvertieren

    das Datum soll umgewandelt werden in folgendes Format 07.09.04 mit welchem Befehl mach ich das am besten ?
    du könntest schauen, ob strtotime das format "7-Sep-04" frisst - sollte eigentlich.
    dann hast du einen timestamp, und kannst den mit date() wieder wie gewünscht ausgeben lassen.

    Bei den Werten sollen die Punkte sollen in Kommas geändert werden.
    str_replace()
    I don't believe in rebirth. Actually, I never did in my whole lives.

    Kommentar


    • #3
      mit str_replace die punkte durch kommas ersetzen

      mit str_replace die bindestriche durch punkte ersetzen

      wenn das datum umbedingt zweistellig sein muss, dann:
      strpos, substr, strtotime und date geschickt kombinieren (selbst denken macht klug )
      Ich denke, also bin ich. - Einige sind trotzdem...

      Kommentar


      • #4
        fantastisch klingt schonmal sehr gut und wie kann die erste zeile gekappt werden ?

        Kommentar


        • #5
          indem du eine hilfsvariable benutzt, die dir die nummer des aktuell gelesenen eintrags angibt?
          PHP-Code:
          $i 1;
          while (
          $data fgetcsv() and $i++ > ) {
          dein code

          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            also strtotime funktioniert schonmal nur das ich ne fehlermeldung bekomme

            $datum = strtotime("$zeile[0]") ;
            $datum1 = date("d.m.y",$datum) ;

            echo "$datum1";

            er gibt also das richtige datum aus aber hier die fehlermeldung

            Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970 in C:\Apache\apachefriends\xampp\htdocs\00BF43FD.php on line 11

            Zeile 11 ist $datum1 ....

            das mit der variable funktioniert nicht, da er dann nichts ausgibt, da i=1 ist und er erst bei i>1 anfängt. Die while schleife wird aber dann nicht nochmal durchlaufen.

            Kommentar


            • #7
              Original geschrieben von rodemkay
              Warning: date() [function.date]: Windows does not support dates prior to midnight (00:00:00), January 1, 1970
              dürfte daran liegen, dass strtotime -1 zurückgegeben hat, also wohl doch nicht so wie gewünscht funktioniert an der stelle (oder $zeile[0] enthält nicht das erwartete)
              I don't believe in rebirth. Actually, I never did in my whole lives.

              Kommentar


              • #8
                hm das wird wohl an der ersten zeile liegen, die ich ja sowieso nicht ausgeben wollte.

                gibt es denn keine möglichkeit den filepointer beim fopen auf die 2. zeile zu setzen ?

                Kommentar


                • #9
                  Original geschrieben von rodemkay
                  gibt es denn keine möglichkeit den filepointer beim fopen auf die 2. zeile zu setzen ?
                  warum "überliest" du die erste zeile denn nicht einfach?

                  wie das beispielsweise gehen könnte, hat dir doch mrhappiness schon gesagt ...
                  I don't believe in rebirth. Actually, I never did in my whole lives.

                  Kommentar


                  • #10
                    Original geschrieben von rodemkay
                    .....

                    das mit der variable funktioniert nicht, da er dann nichts ausgibt, da i=1 ist und er erst bei i>1 anfängt. Die while schleife wird aber dann nicht nochmal durchlaufen.
                    weil es leider nicht funktioniert ich habe allerdings noch keine möglichkeit gefunden per z.b. filepointer die 1. zeile zu überspringen

                    Edit: lese jetzt mit fgets die erste zeile ein so das der filepointer auf der 2 zeile steht, erst dann kommt die schleife. *freu*

                    jetzt das nächste problem die letzte zeile soll gelöscht werden, wie ich den zeiger auf die letzte zeile setze weiss ich mit a+ aber wie ich dann eine zeile zurück gehe weiss ich nicht .
                    Zuletzt geändert von rodemkay; 29.09.2004, 08:12.

                    Kommentar


                    • #11
                      Hm... warum nicht einfach mit file in ein Array einlesen, dann kannst du nach Lust und Laune navigieren

                      Kommentar


                      • #12
                        nunja weil es mit fgetcsv so praktisch ist eine csv einzulesen, bei file müsste ich die zeilen dann wieder mühsam auseinander klamüsern.



                        aber ich weiss wie ich es jetzt mache mit file die anzahl der zeilen lesen und dann mit fgetcsv kombinieren

                        danke

                        Kommentar


                        • #13
                          du kannst mit explode genauso gut, Komma separierte Strings in Array umwandeln und wie gewohnt weiter machen

                          Kommentar


                          • #14
                            wenn du's schon gelesen hast mit file, dann mach doch
                            PHP-Code:
                            $inhalt file('dateiname');
                            foreach (
                            $inhalt as $zeilen => $werte)
                              
                            $inhalt[$zeilen] = explode(','$werte);
                            $zeilen++;
                            echo 
                            'Anzahl Zeilen: '.$zeilen
                            so sparst du dir das doppelte einlesen
                            Ich denke, also bin ich. - Einige sind trotzdem...

                            Kommentar


                            • #15
                              hm habe es erstmal so gemacht das ich eben einmal mit file zähle und fgetcsv werte einlese. ist zwar doppelt gemoppelt, aber so verstehe ich das script. ich denke wenn ich damit fertig bin kann ich zwecks vereinfachung damit beginnen. aber bin halt anfänger und momentan möchte ich nichts einbauen, was ich nicht selber kapiert habe.

                              trotzdem danke schonmal ihr habt mir sehr geholfen. werde mich sowieso noch öfter melden müssen.

                              Kommentar

                              Lädt...
                              X