• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

Zeit einfügen?

Wenn ich also das Richtig verstanden habe, ist mein Timestamp "ungültig"?
PHP:
<?php
if(isset($_REQUEST['eintragen']))
{
$time = $_POST['time'];
$day = $_POST['day'];
$month = $_POST['month'];
date_default_timezone_set('UTC');
$date = date(mktime($time, 0, 0, $month, $day, 2011));
mysql_query("INSERT INTO events (id, time) VALUES (NULL, '".mysql_real_escape_string($date)."')")or die(Mysql_Error());
echo "Eintrag hinzugefügt.";
echo $date;
}
?>
 
Werbung:
Zweiter Versuch, eventuell probierst es dann mal: Wenn ich so Probleme hab, dann versuch ich, das richtige SQL zu finden (mit dem SqlAdmin interaktiv) und dann lass ich mir das von PHP erzeugte SQL ausgeben. Dann sieht man meist den Unterschied und findet den Fehler ganz alleine
lAAAAAAAAACH5BAEAAA4ALAAAAAAPAA8AAARb0EkZap3YVabOGRcWcAgCnIMRTEEnCCfwpqt2mHEOagoOnz+CKnADxoKFyiHHBBCSAdOiCVg8KwPZa7sVrgJZQWI8FhB2msGgwTXTWGqCXP4WBQr4wjDDstQmEQA7
.
 
Werbung:
Hi NetAktiv,
ich verstehe nicht so ganz, was du meinst, deshalb habe ich mich auch nicht so dazu geäußert. Wo kann ich das SQL Statement in einer PHPmyAdmin Datenbank finden?
 
Also bei mir ist das so, dass ich mit der grafischen Oberfläche von PHP Admin auf die Tabellen gehen kann und dort Änderungen durchführen, beispielsweise einen neuen Eintrag machen. Dann zeigt mir der PHP Admin das von ihm erzeugte SQL an, beispielsweise:
Code:
INSERT INTO  `db123`.`TEST` (`ID` ,`TIME`) VALUES ('111', '2011-06-19 11:24:18');
So sehe ich, in welchem Format das SQL sein muss, und genau so baue ich es in PHP nach. Unnötige `, die man nur bei Leerzeichen im Namen braucht, schmeiß ich vorher raus, also
Code:
INSERT INTO  db123.TEST (ID ,TIME) VALUES ('111', '2011-06-19 11:24:18');
und diesen Ausruck teste ich vorher nochmal im SQL Fenster des PHP Admin. Bei Fehlern seh ich gleich, was er anmeckert. Keine Ahnung, was dein mysql_real_escape_string($date) erzeugt, aber sicher keine Zeit im Format YYYY-MM-DD hh:mm:ss wie von MySql erwartet, daher macht er 0 draus beim Insert.
 
Zuletzt bearbeitet:
Werbung:
warum hälst du das für sinnvoll? Das Datetime Format ist viel flexibler, hat einen viel größeren Zeitrahmen.
 
Es erzeugt einen Timestamp. Kann ich einen Timestamp also nichtmal mehr als diesen speichern?

Ich weiß nicht wie weit du jetzt nach zwei Tagen mit dem lesen der von mir verlinkten Seite gekommen bist. Aber eigentlich steht dort alles was deine Fragen beantwortet.

Beachten Sie, dass DATETIME-, DATE- und TIMESTAMP-Werte zwar alle in denselben Formatvarianten angegeben werden können, aber die Typen nicht dieselben Wertebereiche aufweisen. So kann ein TIMESTAMP-Wert nicht vor 1970 und nicht nach 2037 liegen. Das bedeutet, dass ein Datum wie '1968-01-01' zwar als DATETIME- und DATE-Wert zulässig, als TIMESTAMP-Wert jedoch illegal ist und deswegen zu 0 konvertiert wird.

D.h.

Nein ein Timestamp Format an sich gibt es nicht, es wäre auch Unsinn, denn ein Timestamp ist einfach eine Zahl. Wenn du es dir also unbedingt schwer machen willst, benutzte int als Datentyp.

Wenn du den Timestamp Typ nutzen willst, denk an die Beschränkung.

Wenn du aber tatsächlich einen Timestamp, im Sinn eines Stempels der eine aktuelle Änderung kennzeichnet, verwenden willst. Dann benutze Timestamp und lass das Feld beim einfügen leer oder weise ihm NOW() zu MySQL :: MySQL 5.5 Reference Manual :: 11.7 Date and Time Functions
 
Werbung:
Link 1 Habe ich mir ganz durchgelesen und Link 2 Überflogen, da es relativ viel war und bin auf nichts gestoßen. Ich habe versucht mit date() das umzuwandeln, scheint wohl aber nur mit Timestamps zu klappen
 
Werbung:
Danke. Doch auch durch die Beispiele verstehe ich das nicht so ganz. Ich komme mi rhier richtig blöd vor, 5 Seiten wegen etwas bestimmt einfachen zu diskutieren.
 
Naja, das liegt u.a. auch daran, dass wir gar nicht Wissen was du machst. Du stellst Fragen, die entweder dein Problem von der falschen Seite angehen oder du vergisst uns zu zeigen in welchem Kontext du das Problem hast.

Mein letzter Link zeigt eine Funktion, mit der du bei der SQL Abfrage das gewünschte Datum umwandeln kannst. Also in etwa so:

Code:
SELECT DATE_FORMAT(datum_feld,'%e.%c.%Y') AS datum_formatiert FROM tabelle

Das heißt du brauchst keine PHP Funktion mehr, du kannst einfach das formatierte Feld ausgeben.
 
Werbung:
Struppi hat recht. Ich versuche das mal genauer zu erklären.
Ich habe einen Sendeplan/Eventplan

Man kann dort Den Moderator, Namen und den Ort definieren. Alles soll dann auslgelesen werden. Anscheinend benötige ich aber dann mehrere Abfragen
 
Werbung:
So, ich habe Folgendes MySQL Statement verfasst:
PHP:
$sql = "SELECT * FROM events WHERE time >= NOW() and DATE_FORMAT(time,'%d,%M um %H:%i Uhr') AS datetime FROM events WHERE datetime BETWEEN '2011-01-01 00:00:00' AND '2010-12-29 23:59:59'";

Leider meckert er:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/web289/html/head.php on line 95
 
Zurück
Oben