Ankündigung

Einklappen
Keine Ankündigung bisher.

csv auslesen - datum aufbereiten

Einklappen

Neue Werbung 2019

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

  • csv auslesen - datum aufbereiten

    hallo zusammen,

    ich habe folgendes Problem.

    Ich lese ein csv-Datei per fgetcsv() ein und möchte dann die Daten in einer MySQL DB ablegen.

    In der cvs-Datei liegt das Datum so vor: Jan 10 2019 13:02

    Dieser Test hat soweit funktioniert:

    PHP-Code:
    $input 'Jan 10 2019 12:57 '
    echo(
    "<br>variablentyp input: " gettype($input) . " inhalt: **" $input "**<br><br>");
    $date strtotime($input); 
    echo(
    "variablentyp date: " gettype($date) . " inhalt: **" $date "**<br><br>");
    echo (
    "Datum: " $date "<br>"); 
    echo 
    date('d m Y H:i:s'$date); 
    HTML-Code:
    variablentyp input: string inhalt: **Jan 10 2019 12:57 **
    
    variablentyp date: integer inhalt: **1547121420**
    
    Datum: 1547121420
    10 01 2019 12:57:00
    Wenn ich jetzt aber das Datum aus der csv Datei verwende funktioniert es nicht:

    PHP-Code:
    $input $column[10]; 
    echo(
    "<br>variablentyp input: " gettype($input) . " inhalt: **" $input "**<br><br>");
    $date strtotime($input); 
    echo(
    "variablentyp date: " gettype($date) . " inhalt: **" $date "**<br><br>");
    echo (
    "Datum: " $date "<br>"); 
    echo 
    date('d m Y H:i:s'$date); 
    Das kommt dabei raus:

    HTML-Code:
    variablentyp input: string inhalt: **Jan 10 2019 12:57 **
    
    variablentyp date: boolean inhalt: ****
    
    Datum:
    01 01 1970 01:00:00
    Warum bekomme ich jetzt einen "boolean" Wert?

    Die Variable $column[10] wird doch korrekt als string erkannt?
    Wo liegt mein Fehler?

    Vielen Dank.



  • #2
    mach mal var_dump($column[10]); es kann sein dass da ein \n oder so drin steht
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

    Kommentar


    • #3
      vielen dank, aber leider nein:

      HTML-Code:
      string(19) "Jan 10 2019 12:57 "
      variablentyp input: string inhalt: **Jan 10 2019 12:57 **
      
      variablentyp date: boolean inhalt: ****
      
      Datum:
      01 01 1970 01:00:00

      Kommentar


      • #4
        Zitat von werner20 Beitrag anzeigen
        vielen dank, aber leider nein:

        [HTML]string(19) "Jan 10 2019 12:57 "
        Was heißt da "nein"? Da sollen 19 Zeichen in dem String sein, man sieht 18 davon, also gibts noch ein unsichtbares Zeichen. Mal davon abgesehen, dass 12:57 anscheinend noch ein Leerzeichen folgt

        Kommentar


        • #5
          Da hast Du natürlich Recht.

          Ich hatte auch schon versucht per rtrim() das rechte Leerzeichen zu löschen. Aber ohne Erfolg.

          In meinem "Test" hatte ich extra auch ein Leerzeichen (auch mehrere) gesetzt. Da funktioniert es trotzdem.

          Kommentar


          • #6
            Vielleicht ist es auch gar kein Leerzeichen. Schau doch mal nach, welche Zeichen da überhaupt drin sind.

            https://www.php.net/manual/de/function.bin2hex.php

            Kommentar


            • #7
              Vielen Dank. Das schaue ich mir gleich noch an.

              Ich hab auf die schnelle mir nochmal die csv Datei angeschaut. Nach dem Datum (inkl. Uhrzeit) ist ein Leerzeichen. Wenn ich in der csv Datei das Leerzeichen entferne funktioniert es.

              Jetzt muss ich schauen, wie ich per php das gelöst bekomme, da ich nicht immer die csv ändern kann.

              Kommentar


              • #8
                versuchs mal mit https://www.php.net/manual/de/function.trim.php

                Kommentar


                • #9
                  Ich glaub, ich hab einen Anhaltspunkt. Das Datum war in der letzten Spalte der csv Datei. Wenn ich eine weitere Spalte einfüge, funktioniert es - egal ob mit oder ohne einem zusätzlichen Leerzeichen am Ende.

                  Jetzt muss ich es nur noch hinbekommen, dass es auch funktioniert, wenn das Datum in der letzten Spalte steht, da ich keinen Einfluss auf den Export der csv Datei habe.

                  Kommentar


                  • #10
                    Zitat von werner20 Beitrag anzeigen
                    In meinem "Test" hatte ich extra auch ein Leerzeichen (auch mehrere) gesetzt. Da funktioniert es trotzdem.
                    Leerzeichen stören strtotime nicht, schreibst du doch auch selbst.
                    Ich empfehle dir mache das was hellbringer #6 vorschlägt von deinen $input und stelle das Ergebnis hier rein. Irgendwas probieren ohne die Ursachen zu kennen bringt nichts.
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      Meinst Du so:

                      PHP-Code:
                      $input $column[10];
                      $input bin2hex($input);
                      $input2 hex2bin($input);
                      echo(
                      "<br>variablentyp input: **" gettype($input) . "** inhalt: **" $input "**<br><br>");
                      echo(
                      "<br>variablentyp input2: **" gettype($input2) . "** inhalt: **" $input2 "**<br><br>");
                      $date strtotime($input);
                      echo(
                      "variablentyp date: **" gettype($date) . "** inhalt: **" $date "**<br><br>");
                      echo (
                      "Datum: " $date "<br>"); 
                      Ergebnis:
                      HTML-Code:
                      variablentyp input: **string** inhalt: **4a616e20313020323031392031323a353720**
                      
                      
                      variablentyp input2: **string** inhalt: **Jan 10 2019 12:57 **
                      
                      variablentyp date: **boolean** inhalt: ****
                      
                      Datum:
                      
                      
                      
                      variablentyp input: **string** inhalt: **4a616e20313020323031392031333a303120**
                      
                      
                      variablentyp input2: **string** inhalt: **Jan 10 2019 13:01 **
                      
                      variablentyp date: **boolean** inhalt: ****
                      
                      Datum:

                      Kommentar


                      • #12
                        versuchs mal so


                        $input = (string)$column[10];
                        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                        Kommentar


                        • #13
                          Vielen Dank. Hat funktioniert.

                          PHP-Code:
                                      $input = (string)$column[10];
                                      echo(
                          "<br>variablentyp input: **" gettype($input) . "** inhalt: **" $input "**<br><br>");
                                      
                          $date strtotime($input); 
                                      echo(
                          "variablentyp date: **" gettype($date) . "** inhalt: **" $date "**<br><br>");
                                      echo (
                          "Datum: " $date "<br>"); 
                                      echo 
                          date('d m Y H:i:s'$date); 
                          HTML-Code:
                          variablentyp input: **string** inhalt: **Jan 10 2019 12:57 **
                          
                          variablentyp date: **integer** inhalt: **1547121420**
                          
                          Datum: 1547121420
                          10 01 2019 12:57:00
                          Vielen Dank nochmals an alle!

                          Kommentar


                          • #14
                            BlackScorp Erklär mir mal was dies

                            Zitat von BlackScorp Beitrag anzeigen
                            versuchs mal so
                            $input = (string)$column[10];
                            bringen soll wenn dies hier aus #1

                            PHP-Code:
                            $input $column[10];
                            echo(
                            "<br>variablentyp input: " gettype($input) . " inhalt: **" $input "**<br><br>"); 
                            Das kommt dabei raus:
                            HTML-Code:
                            variablentyp input: string inhalt: **Jan 10 2019 12:57 **
                            als type schon "string" liefert ?
                            PHP-Klassen auf github

                            Kommentar


                            • #15
                              Zitat von jspit Beitrag anzeigen
                              BlackScorp Erklär mir mal was dies
                              bringen soll wenn dies hier aus #1
                              Naja ich vermute dass php dann alle komischen UTF8 steuerungszeichen rauslöscht wenn es nach String konvertiert der TE hat doc geschrieben dass es jetzt "funzt"
                              apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                              Kommentar

                              Lädt...
                              X