datum und uhrzeit in einer mysql-tabelle speichern - WIE?

fishguts

Erfahrenes Mitglied
frohe ostern! :)
ich hab für meine hp ein newsletter script geschrieben
im moment werden die eMail-adresse einer ID zugeordnet und in einer mysql-datenbank abgespeichert
im adminberreich kann man sich dann alle adressen anzeigen lassen
sieht dann etwa so aus:

1. user1@provider.de
2. user2@provider.de
3. user3@provider.de
etc.

jetzt wollt ich das script so abändern, dass anstelle der IDs das datum und die uhrzeit der registrierung gespeichert und mit angezeigt werden
wie kann ich das anstellen?
am einfachsten wärs wohl mit einer spalte für die adressen und einer (zwei?) für datum und uhrzeit
wie speichere ich das datum und die uhrzeit jetzt am besten ind der tabelle? gibts da ne mysql-funktion (welche und wie?) oder wärs mit php (getdate()) einfacher
wie genau würdet ihr die tabelle anlegen?

die daten aus der tabelle wollt ich dann schlieslich in ein array einlesen, um sie im adminberreich wieder auszugeben
etwa so:
$array[datum] bzw. $array[uhrzeit]

zu hülf! :-)
 
PHP:
$timestamp = time();
Die aktuelle Zeit als UNIX *timestamp*
Die speicherst du zu der email adresse, umwandeln kannst du diesen zeitstempel (lol) mit
PHP:
$datum = date("d.m.Y",$timestamp);
$uhrzeit = date("H:i",$timestamp);
echo $datum," - ",$uhrzeit," Uhr";
Noch Fragen ?

€dit: Wünsch dir natürlich auch Frohe Ostern ;)

Grüße, Morph
 
Hoi!

Mir sind insgesamt 4 Datentypen bekannt, mit deren Hilfe du eine Zeitangabe in einer mySQL Tabelle Speichern kannst:

TIMESTAMP
DATETIME
DATE
TIME

Ein Timestamp ist ein "Fingerprint" der aktuellen Zeit. Um genau zu sein die Sekunden, die seid dem 1.1.1970 vergangen sind.
Wie DATETIME das Datum und die Zeit aufnimmt weiß ich nicht, aber sehr warscheinlich in folgendem (oder einem ähnlichen) Format:

YYYY-MM-DD hh:mm:ss

DATE nimmt das Datum in folgendem Format auf:

YYYY-MM-DD

und TIME eine Uhrzeit in folgendem Format:

hh:mm:ss

Du könntest nun zB eine Tabelle mit Index, Adresse, Datum und Zeit Feldern anlegen und diese zB so befüllen:

Code:
$sql = "INSERT INTO email VALUES ('0','$mail','".date("%Y-%m-%d")."', '".date("%H:%M:%S")."');

Gruesse

..ooOOipOOoo..
 
Zuletzt bearbeitet:
Also ich wäre da vorsichtig mit dem MySQL Timestamp. Ich kriege nämlich keinen Unix Timestamp sondern irgendwas anderes in der Form: 20020331152938 (und das nicht nur auf meiner Windows Maschine sondern auch auf dem Server).

Das ist insofern Problematisch weil PHP einen den richtigen Timestamp benutzt.

Deswegen benutze ich für alle Sachen, für die ich datum und Uhrzeit benötige ein normales Integer Feld in der Datenbank und schreibe den von PHP erzeugten Timestamp rein.

Mit den restlichen Datentypen wie date oder time kann man nicht direkt rechnen. Mit timestamps schon und Funktionen zum formatierten anzeigen vom Datum und von der Uhrzeit hat PHP.

So Long
TheVirus
 
Hoi!

In einem Buch ("Das Einsteigerseminar PHP4" ISBN: 3-8-266-7151-1, übrigens nicht unbedingt empfehlenswert) wird geschrieben, dass im ersten Timestamp in einer Tabelle immer die letzte änderung dieser automatischgesichert wird. Evtl liegt daran der Fehler.

Gruesse

..ooOOipOOoo..
 
mit dem buch hab ich auch mal versucht php zu lernen...
danke für eure schnelle hilfe
hab eure vorschläge jetzt kombiniert :)
PHP:
$timestamp = time();
$datum = date("d.m.Y", $timestamp);
$uhrzeit = date("H:i", $timestamp);
$uhrzeit .= " Uhr";

$datum und $uhrzeit werden jetzt jeweils in einer eigenen tabellen-spalte gespeichert
meine tabelle sieht also so aus:

|adresse|datum|uhrzeit|

wie kann ich jetzt alle werte aus einer zeile in ein array einlesen, so dass ich die werte später mit $array[adresse] bzw. $array[datum] und $array[uhrzeit] ansprechen kann?
gruss
 
Zuletzt bearbeitet:
Ein feld in der DB reicht. Feld Timestamp meinetwegen. Der timestamp beinhaltet datum UND Uhrzeit!

PHP:
$link = mysql_connect ($db_host,$db_usrnam,$db_passwd)
		or die ("Could not connect to DB Server");
mysql_select_db ($db_name)
	or die ("Could not select the Database " . $db_name);

$query = "SELECT * FROM deine_tabelle";
$result = mysql_query ($query) or die ("Query Error<br>".mysql_error());
while ($row = mysql_fetch_array ($result))
{
  echo $row["adresse"];
  echo date("d.m.Y", $row["zeitstempel"]);
  //etc
}
 
wie kann ich beiträge dann bei der ausgabe nach der zeit, mit uhrzeit, und tag, monat, jahr, ordnen!
also einfach das der neueste beitrag oben ist?
 
PHP:
$query = "SELECT * FROM deine_tabelle ORDER BY zeitstempel DESC";

Du solltest vielleicht mal das MySQL handbuch lesen!
 
Hoi!

Ich will nocheinmal darauf hinweisen, dass bei einem update eines Datensatzes, von dem der erste Timestamp von links her gesehen nicht explizit gesetzt wird, zur folge hat, dass der Timestamp die aktuelle Serversystemzeit annimt, automatisch!

Gruesse

..ooOOipOOoo..
 
Zurück