Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Timestamp abrufen und auswerten [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
ebiz-webhosting
- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
Timestamp abrufen und auswerten


 
Qorum
15-05-2007, 13:09 
 
Ich grüße euch,

ich habe vorgestern mit PHP-MySql angefangen und habe mich durch das schattenbaum und zum Teil durch das quakenet Tutorial durchgearbeitet - super Sache! - und "programmiere mich gerade aus". Bitte habt deshalb Verständnis dafür, dass ich mich noch nicht so richtig auskenne und bei den Ein oder Anderen Fachbegriffen sicher meine Probleme haben werde - aber nun zu meinem Anliegen.

Nun mache ich gerade ein Newsscript, was an für sich bisher auch ganz gut funktioniert, nur bin ich jetzt - auf ein für mich - unlösbares Problem gestoßen.

Beim Eintragen der News wird im Hintergrund der timestamp ermittelt und in der Datenbank gespeichert (zuerst habe ich den Tag/Monat/Jahr/Uhrzeit in einzelne, seperate Spalten eingetragen). Ich möchte die News nun formatiert ausgeben (also in einer schönen Tabelle etc.) was auch Klasse funktioniert ABER:


Ich kann den Timestamp mit folgenden Befehl ausgeben:

<?php
$abfrage = "SELECT timestamp FROM testbank";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->timestamp;
}

?>

Nun möchte ich aber ein vernünftiges Datum anzeigen lassen, denn mit dem Timestamp können ja die wenigsten etwas anfangen, also formatier und unterscheide in $datum und $uhrzeit mit folgendem Befehl:

$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);


Ich benutze dafür einen ermittelten timestamp-Wert, den ich noch nicht habe und auch nicht bekomme - DAS ist mein Problem. Ich dachten an folgenden Lösungsweg, der jedoch auch nicht funktionierte:

$timestamp = $row->timestamp;

Ich möchte also beim EINTRAGEN der News die zeit unsichtbar als Timestamp in der MySql Datenbank speichern (das klappt ohne Probleme).
Ich möchte dann beim AUSGEBEN der eingetragenen Daten schön anzeigen und den Timestampwert in ein ansehnliches Format umwandeln.



So...
Erstmal hoffe ich, dass ich mich klar ausgedrückt habe und ihr wisst was mein Problem ist. Über Hilfe würde ich mich sehr freuen - und bitte habt nachsehen, auch wenn sich die Frage für euch etwas blöde anhört


Machts gut,
Qorum

 
jahlives
15-05-2007, 13:18 
 
Verwende doch die Time Date Feld Typen von MySql. Mit den entsprechenden MySql Fkt kannst du den Timestamp beim Eintragen feststellen lassen.
MySql speichert das Datum in der Form von 2007-05-15, welches du mittels eines

echo data('d.m.Y.',strtotime($timestamp_aus_db));

in die gewünschte Form bringen kannst.

Gruss

tobi

 
frankburian
15-05-2007, 13:19 
 
versteh nicht ganz was du meinst!
Willst Du den aktuellen timestamp des eintrags ermitteln? wenn ja -> "time();"

Aber wenn du ihn hast, wie willst du ihn dann schöner ausgeben als wie mit date();

Ich selber speichere Zeitangaben immer als Timestamp (Int) ab, weil ich mit den Werten besser rechnen kann, ohne andere Funktionen nutzen zu müssen!

 
ministry
15-05-2007, 13:24 
 
Wenn es in der db ein MySQL-Timestamp sein soll, dann kannst du ihn mit SELECT UNIX_TIMESTAMP(timestamp) AS timestamp FROM testbank
auslesen.

Beim Eintragen kannst du einfach NOW() machen für den aktuellen Zeitpunkt, oder wenn du unixtimestamps hast und die abspeichern willst, dann mit FROM_UNIXTIME(" . $timestamp . ").

Mysql-Timstamps und Unixtimestamps(die z.B. date() benötigt) unterscheiden sich.

 
Qorum
15-05-2007, 13:32 
 
Ok, habe mich anscheinend wirklich falsch ausgedrückt :)


Also erstmal weiß ich, wie man ein Datum formatieren kann date() usw, was ich aber NICHT weiß, wie ich sowas mit einem bereis gespeicherten Timestampwert mache.

BEISPIEL:
1.) Ich trage eine News ein, und der Timestamp dieses Eintrages wird in der Datenbank unter "timestamp" gespeichert.

2.) Ich möchte diese Daten nun ausgeben, weiß aber nicht wie ich jetzt den Timestampwert formatieren kann.


$abfrage = "SELECT timestamp FROM testbank"; $ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
echo $row->timestamp;
}


Bei der Variante kriege ich dann zwar den 10stelligen Zahlencode sehen, aber habe doch keine Möglichkeit mehr ihn in ein Datum umzuwandeln ..


@ Jahlives
Ich möchte aber den Timestampwert errechnen, damit ich später daraus den Wochentag (Montag, Dienstag usw) errechnen lassen kann.
Bisher habe ich das Datum auch in einer sauberen Form gespeichert, dass erscheint mir aber als sehr unflexibel


@frankburian
Ich selber speichere Zeitangaben immer als Timestamp (Int) ab, weil ich mit den Werten besser rechnen kann, ohne andere Funktionen nutzen zu müssen!

Genau! Und jetzt sag mir doch bitte, wie du diesen gespeicherten Timestampwert aus der DB ausließt und im nachhinein mit ihm rechnest - DAS ist meine eigentlich Frage :)



Danke aber für eure Antworten, auch wenn ich es umständlich beschreibe - wir kommen noch zu einer Lösung! :D


Qorum


Edit:
@ ministry
Danke, ich glaube das ist die Antwort die ich gesucht habe - ich werde es nachher gleich mal ausprobieren. Ich wusster gar nicht, dass es zwei verschiedene Timestampformate gibt, dazu werde ich mich gleich mal belesen :)

 
frankburian
15-05-2007, 13:43 
 
$abfrage = "SELECT timestamp FROM testbank"; $ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis) )
{
echo date("d.m.Y H:i",$row['timestamp']);
}


rechnen:


$abfrage = "SELECT timestamp FROM testbank"; $ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_array($ergebnis) )
{
$ts = $row['timestamp'];
echo 'Ein tag zurück'.($ts-86400);
}
:)

// hier kommt man richtg unterdruck mit dem schnellen antworten, so das man faselfehler macht ;)

 
jahlives
15-05-2007, 13:44 
 
Also wenn dein Timestamp ein Integer Wert (Unix Timestamp) in der DB ist dann

$zeiten = array();
$sql = "SELECT timestamp FROM table";
$res = myslq_query($sql);
while($re=mysql_fetch_array($res)){
$zeiten[] = date('d.m.Y',$re['timestamp']);
}

eine entsprechende Abfrage an die DB, Resultat auslesen und die Daten formatieren

Gruss

tobi

 
wahsaga
15-05-2007, 13:57 
 
Original geschrieben von frankburian
Ich selber speichere Zeitangaben immer als Timestamp (Int) ab, weil ich mit den Werten besser rechnen kann, ohne andere Funktionen nutzen zu müssen!
Kurzsichtig - sobald du Datumsoperationen bereits DB-seitig ausführen willst - müssen nicht mal "Berechnungen" sein, eingeschränkte Selektion nach Daten, Guppierung nach Monat/Jahr, etc. reichen aus - fährst du mit den Datentypen der DB besser.

 
Qorum
15-05-2007, 14:30 
 
Soo,

danke für die vielen Antworten, es funktioniert jetzt wie ich es will UND ich bin um einiges schlauer!

Wenn ich wieder eine Frage haben sollte, komme ich zu euch! :)


Ein dankender,
Qorum


Alle Zeitangaben in WEZ +2. Es ist jetzt 06:18 Uhr.