Datum/Zeitauslesung aus einer DB

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

  • Datum/Zeitauslesung aus einer DB

    Hallo PHP/MYSQL-User,

    ich habe einen Unix-Timestamp in meiner Datenbank implentiert
    und möchte dieses beim Auslesen direkt in eine Datum/Zeitanzeige umwandeln - wie realisiere ich dieses, da die Daten 1:1 in einer Tabelle ausgegeben werden und ich diese Funktion im Script nicht einbinden kann ?

    Abfrage :

    $sql = "SELECT time FROM pphl_39585_logs";

    Desweiteren würde mich interessieren, wie ich die Ausgabe in mehrere Seiten aufteilen kann.

    Ein frohes und gesegnetes Weihnachtsfest

    wünscht Manuela

  • #2
    du musst den timestamp in eine leserliche form wandeln.

    FROM_UNIXTIME(unix_timestamp)
    Returns a representation of the unix_timestamp argument as a value in 'YYYY-MM-DD HH:MM:SS' or YYYYMMDDHHMMSS format, depending on whether the function is used in a string or numeric context:
    mysql> SELECT FROM_UNIXTIME(875996580);
    -> '1997-10-04 22:23:00'
    mysql> SELECT FROM_UNIXTIME(875996580) + 0;
    -> 19971004222300

    http://www.mysql.com/doc/en/Date_and...functions.html (ziemlich in der mitte)


    für das bälltern kann ich nur LIMIT empfehlen.

    LIMIT
    http://www.mysql.com/doc/en/LIMIT_optimisation.html
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Hallo Abraxax,

      danke für die schnelle Antwort, jedoch habe ich dieses
      schon rauf und runter probiert - jedoch jedesmal mit einem SQL-Fehler.

      z.B.

      PHP-Code:
      $sql "SELECT time (UNIX_TIMESTAMP(),'%Y %D %M %h:%i:%s') from pphl_39585_logs"
      Oder mache ich was falsch ?

      Gruß Manuela

      Kommentar


      • #4
        vielleicht so ...

        PHP-Code:
        $sql "SELECT (UNIX_TIMESTAMP(time),'%Y %D %M %h:%i:%s') from pphl_39585_logs"
        tipp: ich würde ein feld nicht 'time' nennen. time ist ein schlüsselwort. nenne das feld lieber mal ZEIT oder so.
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          O.K. habe das Feld mal in Zeit umbenannt,
          jedoch funktioniert es trotzdem nicht.

          Wenn ich den Timestamp im Script umwandeln will,
          benutze ich z.B. folgenden Befehl :

          PHP-Code:
          $sql "SELECT date_start FROM ".$tbl_users." WHERE id='$id' OR username='$id'";
             
          $res mysql_query($sql);
             
          $hits mysql_result($res0);
             echo 
          date("d.m.Y, H:m"
          Vielleicht hilft es ja bei der Problemlösung weiter !

          Gruß Manuela

          Kommentar


          • #6
            ich sah gerade, dass ich vorhin eine klammer von dir übersehen habe. aber .....

            warum so kompliziert?

            probier das mal. habe ich jeztt aber nciht getestet.

            PHP-Code:

              sql 
            "SELECT DATE_FORMAT(UNIX_TIME(date_start),"%%%%h:%i:%s") dasdatum FROM ".$tbl_users." WHERE id='$id' OR username='$id'";
              
            $res mysql_query($sql);

              
            $hits mysql_fetch_array($res);
              echo 
            $hits["dasdatum"]; 
            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


            Kommentar


            • #7
              Nein, so kann ich es leider nicht machen,
              da wie schon geschrieben, dieses nicht die einzige Abfrage ist und die Daten direkt in eine Tabelle geschrieben werden.



              PHP-Code:
              $sql "SELECT hostname,tld,ip,referer,seareng,agentid,res_w,res_h,color,time,proxy,proxy_ip,proxy_hostname FROM pphl_39585_logs";
              $result mysql_query ($sql$db_link);
              if (
              $result) {
                  
              $number mysql_num_rows($result);
                  echo 
              "<p>Es sind $number Datensätze gelesen worden.</p>";
                  echo 
              "<table border=0 bgcolor=lightgreen><font class=smalltext>";
                  
              $row mysql_fetch_array($resultMYSQL_ASSOC);
                  while (
              $field key($row)) {
                      echo 
              '<th bgcolor=red><font class=smalltext>'.ucwords($field).'</th>';
                      
              next($row);
                  }
                  echo 
              "</tr><tr><td>";
                  echo 
              implode("</td><td>",$row);
                  echo 
              "</td></tr>";
                  while (
              $row mysql_fetch_array($resultMYSQL_ASSOC)) {
                      echo 
              "<tr><td>";
                      echo 
              implode("</td><td>",$row);
                      echo 
              "</td></tr>";
                  }
                  echo 
              "</table>";
                  echo 
              "<p>Abfrage: <i>$sql</i>";
              } else {
                  echo 
              "<p>.mysql_error($conn)";

              Sonst könnte ich es ja mit 'date' umwandeln und ausgeben !

              Vielleicht fällt Dir noch was ein - wäre SUPER

              Gruß Manuela

              Kommentar


              • #8
                kurz noch einmal zum verständnis.
                du willst die daten einer tabelle ausgeben?
                diese daten werden einfach als html geschrieben. richtig?

                also ein select auf die tab und eine schleife für die ausgabe. die daten sollen aber formatiert ausgegeben werden. zumindest das datum.

                soweit korrekt?
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Kommentar


                • #9
                  Jo,

                  ich habe einen Counter und die Tabelle sieht z.B. so aus :

                  logid = 1
                  userid = NULL
                  hostname = pD950496E.dip0.t-ipconnect.de
                  tld = de
                  ip = 217.80.73.110
                  entryid 1
                  path = NULL
                  referer = http://www.search.ch/search?q=elefant&loc=ch&rank=10
                  seareng = Search.ch
                  agentid = 1
                  res_w = 1024
                  res_h = 768
                  color = 32
                  time = 1037998937
                  t_reload = 1037999914
                  online = 3938
                  mp = 53
                  proxy = cache.inet.fi[C0A8020E] (Traffic-Server/4.0.18 [uSc ])
                  proxy_ip = 194.251.240.108
                  proxy_hostname = cache-hki-4.inet.fi

                  Nun möchte ich den Usern, die Möglichkeit geben eine Liste aus zu geben
                  die Druckbar ist ( ich habe es erst mit einem Excelimport versucht, jedoch besitzen wenige User Excel ).

                  z.B. Link

                  Also habe ich gedacht ich mache dieses durch eine HTML-Tabelle und lasse diese dann ausdrucken.

                  Am besten wäre es natürlich diese Liste monatlich erstellen zu lassen, also immer den letzten Monat aufrufen zu lassen, jedoch bin ich daran auch schon gescheitert.

                  http://www.php-resource.de/forum/sho...threadid=13703

                  Danke für Deine Hilfe

                  Gruß Manuela

                  Kommentar


                  • #10
                    ok. du willst also NUR eine ausgabe machen?
                    das ist doch eigentlich kein problem. oder?
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Kommentar


                    • #11
                      Ja nur eine Ausgabe in Tabellenform mit kleiner Schrift
                      und dieses zum Speichern oder Drucken anbieten.

                      Nein normalerweise kein Problem, wenn da nicht diese Timestamps wären die zu formatieren sind und um die Liste nicht ewig lang zu machen,
                      die Sache mit der Monatsangabe.

                      Sonst kein Problem, nur konnte mir bis jetzt niemand dabei helfen,
                      und so fit bin ich in PHP auch nicht **grins**

                      Gruß Manuela

                      Kommentar


                      • #12
                        in php muss man dafür auch nicht fit sein, nur in SQL ....

                        ok. wie eine einfach ausgabe funktioniert weisst du ja nun schon .....
                        da mache ich also nicht noch einmal den anfang.

                        für die sql-anweisung machst du erst einmal folgendes.

                        Code:
                        SELECT feld1,feld2,feld3 FROM tabelle;
                        für feld1....feld(n) musst du natürlich deine namen nehmen. du kannst auch * nehmen, aber besser ist, dass du alles erst einmal dort so einzeln schreibst. viele felder waren es ja nicht.

                        die monatsangabe machst du über ein formular in html. diese paramter bringst du in der sql dann auch ich.

                        Code:
                        SELECT feld1,feld2,feld3 FROM tabelle WHERE Monat = '$uebergabewert';
                        damit du nicht alles auf einer seite hast, verwendet LIMIT.

                        Code:
                        SELECT feld1,feld2,feld3 FROM tabelle WHERE Monat = '$uebergabewert' LIMIT 0,10;
                        dieses limit beginnt mit dem 1. (0.) datensatz und zeigt insgesamt 10 datensätze.

                        wenn du dann vom 11.-20. machen willst, nimm LIMIT 10,10 usw.

                        wenn du das alles fertig hast, kommt die timestamp wieder dran...

                        feld1 ist jetzt einfach mal den timestamp-feld.

                        Code:
                        SELECT FROM_UNIXTIME(feld1, '%Y %D %M %h:%i:%s') feld1neu,feld2,feld3 FROM tabelle WHERE Monat = '$uebergabewert' LIMIT 0,10;
                        ich muss zugeben, dass ich vorhin nicht richtig auf die paramter der sql.-funktion(en) geachtet habe.

                        soweit alles klar?
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Kommentar


                        • #13
                          Du bist GUT !!! Mehr fällt mir nicht mehr dazu ein - DANKE !

                          Ich will Dich nun nicht unbedingt noch länger mit meinen Problemen Beschäftigen, aber falls Du mal ne ruhige Minute hast, noch eine Frage.

                          Ich bekomme nun im Tabellenkopf folgendes angezeigt statt "time" -"FROM_UNIXTIME(time, '%Y %D %M %h:%i:%s')" klar der Befehl, jedoch der User weis ja nicht was das bedeuten soll, gibt es die Möglichkeit die Tabellenköpfe mit Bezeichnungen zu versehen ?

                          Und die Frage mit dem letzten Monat, dieses soll nicht eingegeben werden, sonder wenn heute der 22. Dezember ist soll die Anzeige automatisch für den November gemacht werden und im Januar für den Dezember !

                          Falls Du keine Lust mehr hast - Danke ich Dir trotzdem, daß Du mir so viel Zeit geopfert hast und wünsche Dir besinnliche Weihnachten und ein frohes neues Jahr !

                          Gruß Manuela

                          Kommentar


                          • #14
                            SPALTE
                            gibt ihr doch einen namen...

                            Code:
                            .... , FROM_UNIXTIME(time, '%Y %D %M %h:%i:%s') zeit,....


                            MONAT
                            http://de.php.net/manual/de/function.date.php

                            PHP-Code:
                            $monat date("m") - 1
                            musst nur abprüfen, wenn $monat < 1 und > 12 ist.
                            INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                            Kommentar


                            • #15
                              hattest du den spaltennamen 'time' noch nicht geändert?

                              s.o.
                              -> tipp: ich würde ein feld nicht 'time' nennen. time ist ein schlüsselwort. nenne das feld lieber mal ZEIT oder so.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X