[PHP/SQL] Datum automatisch in DB einfügen!

Psycho-Clown

Cadet 4th Year
Dabei seit
Dez. 2001
Beiträge
88
Hi!
Gibt es eine Möglichkeit das aktuelle Systemdatum in ein DB Feld (datetime) einzufüge? Also ich hab hier nen kleines Newsscript und immer wenn wer was posted soll das aktuelle Datum eingefügt werden. Wie mache ich das. Bei meiner googelei bin ich auf ne funktion now() gestoßen die das angeblich macht, aber hinbekommen hab ich es net.
Währe schön wenn mir wer helfen könnte
cya
 

k7power

Lt. Junior Grade
Dabei seit
Juni 2003
Beiträge
438
Mit der Funktion time() kannst du einen Zahlencode erzeugen, der alle Informationen inklusiv Datum und Uhrzeit des Servers enthält. Dann musst du nur noch mit der Funktion date() deine Ausgabe bestimmen, siehe php.net/date.

Du kannst auch diesen Zahlencode von time() in die Database eintragen und ihn nachher bei auslesen umwandeln.
 

setsunara

Cadet 3rd Year
Dabei seit
März 2003
Beiträge
60
einfach NOW() als MySQL Befehl ansehen

die MySQL Tabelle sollte aber dann auch DateTime sein weil es im Format YYYY-MM-DD HH:MM:SS eingetragen wird
 

oDeM

Lt. Junior Grade
Dabei seit
Sep. 2002
Beiträge
374
PHP:
INSERT INTO table (date) VALUES (NOW());
beachte aber dass NOW() eine SQL eigene funktion ist und NICHT in singlequotes gesetzt wird, wie z.B. strings
 

Steffen

Technische Leitung
Teammitglied
Dabei seit
März 2001
Beiträge
14.352
Ich wäre mit der MySQL-funktion NOW() vorsichtig. Das kann sich schlecht auswirken, wenn die Datenbank auf einem anderen Server liegt als auf dem Webserver. Wenn die Uhrzeit beider Server nämlich nicht ständig synchronisiert wird, kann es zu gewollten Effekten führen, wenn man teilweise mit der MySQL-Server-Zeit und teilweise mit der Webserver-Zeit rechnet.

Ich würde am Beginn eines Scripts eine Konstante definieren
PHP:
define('TIMENOW', time());
und diese dann im Script verwenden, dadurch entfällt auch das mehrmalige Aufrufen der time()-Funktion.
 

oDeM

Lt. Junior Grade
Dabei seit
Sep. 2002
Beiträge
374
das ist natürlich auch ne gute methode.
werd ich mir mal merken :)
 

Psycho-Clown

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Dez. 2001
Beiträge
88
Jo danke für die Antworten. Kumpel meinte die Funktion sysdate() gäbe es. Habs getestet, funktionierte auch auf meinem Rechner ganz gut. Weiß ja nicht wie das ist wenn das auf nem fremden Server liegt.

Naja aber hier habt ja bestimmt ne Ahnung von den Vor und Nachteilen von sysdate() ;)

Naja aber da hab ich gleich noch nen Problem gefunden. Also ich kann in meinem Newsscript ganz toll Sachen posten und die auch dann anzeigen lassen, funktioniert wunderbar. Nur das löschen seltsamerweise net. Ich weiß nicht ob ich mich da irgendwie verguckt hab, aber der Befehl müsste richtig sein
Code:
Also das zb die Anweisung in PHP
if ($ButtonDelete != null) {
	$sql_delete = "DELETE FROM 'news' WHERE 'id' = '$loeschen';";
        mysql_query($sql_delete, $dbconnect); 
	
}

und dann kommt nen kleines Formular wo ich die id der zu löschenden news eintrage und dann halt "submitte"

<input name="loeschen" type="text" id="loeschen" size="4" maxlength="4"> 
<input type="submit" name="ButtonDelete" value="loeschen">

Wobei das Form natürlich method="post" action="seite.php" hat
So und das geht net! Ich weiß net warum nicht. Wenn ich die ID manuell (zb 20 ) eintrage tut sich auch nix. Wenn ich den Befehl aber mit der mysql konsole schicke gehts. Und das posten tuts ja auch. Woran könnte das liegen?
 

Steffen

Technische Leitung
Teammitglied
Dabei seit
März 2001
Beiträge
14.352
Du hast garantiert in der php.ini register_globals auf Off stehen und das ist auch gut so. Heißt aber, du musst auf an das Script übergebene Daten mit den globalen Arrays, $_GET, $_POST etc zugreifen, also z.B. $_GET['loeschen'].

Du solltest aber noch überprüfen, ob die übergebene Variable wirdklich numerisch ist, z.B. mit is_numeric(), ansonsten kann dir jemand die ganze Tabelle leer räumen.
 

Psycho-Clown

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Dez. 2001
Beiträge
88
jo register_globals ist ja standardmäßig auf "off"
Hab die Abfrage für das löschen jetzt so:

PHP:
if ($_POST['ButtonDelete'] != null) {
    $id = $_POST['loeschen'];
    $sql_delete = "DELETE FROM 'news' WHERE 'id' = '$id';";
    mysql_query($sql_delete, $dbconnect); 
    header("Location:seite.php");
}
Allerdings ist es immernoch das gleiche Problem das absolut nichts passiert. Wie gesagt auch wenn ich da 'id' = '21' oder so reinschreibe tut sich nichts. Beim Einfügen und Abfragen ist alles kein Problem.
 

oDeM

Lt. Junior Grade
Dabei seit
Sep. 2002
Beiträge
374
du musst den tabellennamen und den spaltennamen ja uach nicht in singlequotes schreiben

DELETE FROM news WHERE id = '{$id}';

bzw.

DELETE FROM news WHERE id = 21;
 

Psycho-Clown

Cadet 4th Year
Ersteller dieses Themas
Dabei seit
Dez. 2001
Beiträge
88
lol ja hast recht! Währe ich nicht drauf gekommen. Bei den anderen Befehlen hab ich es auch normal ohne singlequotes gemacht.
Das böse phpmyadmin hat mich dazu verleitet weil da ja beim löschen in der Dialogbox der Befehl angezeigt wird und da steht es in singlequotes.
Naja Danke für eure Hilfe :)
 

Loopo

Admiral
Dabei seit
Juli 2002
Beiträge
7.610
das sind keine Singlequotes ' sondern Akzente ` die phpmyadmin verwendet
 
Top