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 umwandeln! [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr

- Ad -
php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
timestamp umwandeln!


 
Diggicell
01-02-2003, 16:33 
 
Hallo mal wieder!

ich will das bei meinem script das datum des zuletzt geposteten beitrages steht. Sollte eigentlich kein Problem sein. Ich hab bei meiner MySQL Tabelle den Typ Timestamp angegeben , da DATETIME aus einem unerfindlichen Grund net funzt. Ich will zb. mit folgendem Code diesen timestamp umwandeln in ein brauchbares datum.

Timestamp: 20030201151113

Code :


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




Die ausgabe von dieser umwandlung ist aber komischerweise der 19.01.2038-04:14

Warum dies?:dontknow:

 
wahsaga
01-02-2003, 16:47 
 
Warum dies?

weil du hier mysql-timestamps und unix-timestamps in einen topf wirfst.

ein unix-timestamp ist eine integer-zahl, die die anzahl der vergangenen sekunden seit dem 1.1.1970 0:00 uhr GMT beinhaltet.

und die funktion date() arbeitet nun mal mit diesem unix-timestamp...

 
Diggicell
01-02-2003, 16:57 
 
Wie kann ich denn dann diesen MySQL timestamp in ein brauchbares Datum umwandeln ? Bütte anwortet schnell , sobald dieses problem gelöst ist , ist mein Script bereit zum veröffentlichen:)

 
Diggicell
01-02-2003, 17:51 
 
Need help!!! :(

 
wahsaga
01-02-2003, 18:19 
 
Bütte anwortet schnell , sobald dieses problem gelöst ist , ist mein Script bereit zum veröffentlichen:)
ruhig, brauner...

antworten gibt's, sobald hier jemand zeit und lust dazu hat.

und schon nach einer stunde wieder nachzufragen, wo denn die antworten bleiben, finde ich etwas unhöflich.

übe dich mal ein wenig in geduld, schliesslich schaffen wir es ja auch, auf die veröffentlichung deines scriptes zu warten *g*

und in der zwischenzeit mal selber ein wenig nachdenken und ausprobieren, welche stringfunktionen man z.b. verwenden könnte, wäre wohl auch nicht schlecht.

 
Diggicell
02-02-2003, 20:04 
 
Allet Roger ^^. Habs auch alleine geschafft....:D

 
Günni
03-02-2003, 00:42 
 
@Diggicell
Könntest du die Lösung bitte noch posten!?!?

 
Diggicell
03-02-2003, 01:39 
 
$timestamp= euertimestamp
$Jahr = substr($timestamp,0,4);
$Monat = substr ($timestamp,4,2);
$Tag = substr ($timestamp,6,2);
$Std = substr ($timestamp,8,2);
$Min = substr ($timestamp,10,2);
$Sec = substr ($timestamp,12,2);



Und dann halt echo " EIngetragen am $Jahr $Monat $Tag" etc...

 
TBT
03-02-2003, 10:25 
 
und warum läßte das nicht gleich mysql machen?

select DATE_FORMAT( FROM_UNIXTIME( meineTimeStampSpalte ), '%d.%m.%Y-%H:%i' ) from ...

 
rony
02-10-2003, 00:41 
 
Hallo TBT, hab das gleiche Problem wie Digicell. allerdings geht bei mir das irgendwie nicht so.

Weiss nähmlich nicht genau wo ich das reinschreiben soll diese Abfrage ,it select DATE_FORMAT

Mein Code an der Ausgabe sieht so aus.
<?php echo $row_Recordset1['datum']; ?>

Wärst Du so nett und hilfst mir dabei das richtig zu machen.
Tausend Dank dafür.

Freundlicher Gruss rony

 
mrhappiness
02-10-2003, 08:29 
 
$row_Recordset1['datum'] greift ja auf das ergebnis einer mysql-abfrage (SELECT) zu

diese abfrage musst du so erweitern wie TBT geschrieben hat

 
Diggicell
02-10-2003, 11:02 
 
wow , endlich ma wieder ein user der die suchfunktion benutzt *g*

 
wahsaga
02-10-2003, 11:36 
 
Original geschrieben von rony
Weiss nähmlich nicht genau wo ich das reinschreiben soll diese Abfrage ,it select DATE_FORMAT

Mein Code an der Ausgabe sieht so aus.
<?php echo $row_Recordset1['datum']; ?>
wie dein php-code aussieht, ist egal.

DATE_FORMAT ist eine funktion von mysql. und deshalb wird es auch direkt in der query eingesetzt.

TBT hat doch sogar ein beispiel gepostet ...

 
rony
02-10-2003, 18:43 
 
Ich habe es so gemacht wie Ihr es beschrieben habt, aber ohne Erfolg.
Ich denke ich gebe PHP und alles auf, brings nicht hin dass es läuft. Bin jetzt schon 3 Tage an dem Scheiss TIMESTAMP drann und nix gemacht.

Bin ne pfeife.....
Vielen Dank für eure Hilfe.

Gruss rony

 
wahsaga
03-10-2003, 00:12 
 
Original geschrieben von rony
Ich habe es so gemacht wie Ihr es beschrieben habt, aber ohne Erfolg.
Ich denke ich gebe PHP und alles auf, brings nicht hin dass es läuft. Bin jetzt schon 3 Tage an dem Scheiss TIMESTAMP drann und nix gemacht.
du hast uns so gut wie gar nichts von deinem code gezeigt, so dass keiner hier beurteilen kann, woran du scheiterst.

wenn du sofort die flinte ins korn werfen willst, schade ... aber du solltest dir darüber klar sein, dass man sich langsam an die grundlagen heranarbeiten muss, von heute auf morgen geht es nicht.

 
rony
03-10-2003, 00:40 
 
Hallo wahsaga

ich bin einfach etwas durcheinander, habe x-post's darüber gelesen
und checks einfach imma noch ned, da kommen dann schon mal zweifel an mir selbst auf.

hier der code für das einfüge formular

----------------------------------------------------------------

<?php require_once('../Connections/arena.php'); ?>
<?php
mysql_select_db($database_arena, $arena);
$query_Recordset1 = "SELECT * FROM aktuell ORDER BY datum ASC";
$Recordset1 = mysql_query($query_Recordset1, $arena) or die(mysql_error());
$row_Recordset1 = mysql_fetch_assoc($Recordset1);
$totalRows_Recordset1 = mysql_num_rows($Recordset1);
?>
<html>
<head>
<title>start</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<link href="css/main-style.css" rel="stylesheet" type="text/css">
</head>
<body leftmargin="30" topmargin="0">
<tr>
<td width="670" height="520" valign="top"><table width="600" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="18" height="20">&nbsp;</td>
<td height="20">&nbsp;</td>
<td height="20" class="aktualisiert">&nbsp;</td>
</tr>
<tr>
<td width="18" height="500" rowspan="2">&nbsp;</td>
<td height="395" colspan="2" valign="top"><font size="3" face="Verdana, Arial, Helvetica, sans-serif"><strong>Beitrag in Aktuell hinzuf&uuml;gen</strong></font>
<hr align="left" width="580" size="1" noshade>
<span class="text"><img src="img/blind.gif" width="2" height="5"><br>
</span>
<table width="100%" height="20" border="0" cellpadding="0" cellspacing="1" bgcolor="#00CC00">
<tr>
<td bgcolor="#E4F7E1">&nbsp;<span class="text"><font color="#0000FF">Neuen Beitrag in Aktuell erstellen</font></span></td></tr></table>
<br>
<br>
<table width="560" height="20" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="93">&nbsp;</td>
<td width="467"><?php
function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $HTTP_SERVER_VARS['PHP_SELF'];
if (isset($HTTP_SERVER_VARS['QUERY_STRING'])) {
$editFormAction .= "?" . $HTTP_SERVER_VARS['QUERY_STRING'];
}

if ((isset($HTTP_POST_VARS["MM_insert"])) && ($HTTP_POST_VARS["MM_insert"] == "form1")) {
$insertSQL = sprintf("INSERT INTO aktuell (datum) VALUES (%s,%s,%s)",
GetSQLValueString($HTTP_POST_VARS['titel'], "text"),
GetSQLValueString($HTTP_POST_VARS['text'], "text"),
GetSQLValueString($HTTP_POST_VARS['datum'], "date"));



$error = "Fehler : Beide Felder dürfen nicht leer sein!";
$error2 = "Sie sind in unserem Newsletter schon eingetragen.";
$ok = "Eintrag erfolgreich. Hier geht es weiter";
mysql_select_db($database_arena, $arena);
$Result1 = mysql_query($insertSQL, $arena);
if (!$Result1)
{
echo "<table lenght=500 height=20 class=newstable><td><center>$error</center></td></table>";
}
else
{
echo "<table lenght=500 height=20 class=newstableok><td><center><a href=aktuell_show.php a.class=inputlink>$ok</a></center></td></table>";
}
}
?>

</td>
</tr>
</table>
<span class="text">
<form method="post" name="form1" action="<?php echo $editFormAction; ?>">
<table width="561" align="left">
<tr valign="baseline">
<td width="86" align="right" valign="middle" nowrap class="form"><div align="left">Titel:</div></td>
<td width="463" height="40" valign="middle"><input type="text" name="titel" value="" size="32" class="addnews1">
</td>
</tr>
<tr valign="baseline">
<td align="right" valign="top" nowrap class="form"><div align="left">Text:</div></td>
<td height="40" valign="middle"><textarea name="text" cols="32" rows="4" class="addnews2"></textarea>
</td>
</tr>
<tr valign="baseline">
<td nowrap align="right">&nbsp;</td>
<td height="40" valign="middle"><input type="submit" value="Datensatz einfügen" class="newsbutton1">
</td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="form1">
</form>
<p>&nbsp;</p>
</span> </td>
</tr>
<tr>
<td width="558" height="20" valign="top"><br>
<br>

</td>
<td width="24" valign="middle" class="aktualisiert">&nbsp;</td>
</tr>
</table></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($Recordset1);
?>
---------------------------------------------------------------------------

viel gruss, rony

 
wahsaga
03-10-2003, 00:58 
 
Original geschrieben von rony
hier der code für das einfüge formular
bitte gewöhne dir an, php-code in [ php ] [ /php ] (ohne leerzeichen) einzukleiden, das macht die sache durch syntax-highlighting besser lesbar.

und jetzt beschreibe bitte mal, was du mit obigem code bewirken willst, und wo dein problem damit liegt.

du schriebst weiter oben, dass du probleme mit dem einfügen eines timestamps hast - aber wo, kann ich nicht erkennen ...



moment, jetzt ...

dein problem scheint hier zu liegen,
INSERT INTO aktuell (datum) VALUES (%s,%s,%s)

diese syntax, in ein feld drei werte einfügen zu wollen, kann natürlich nicht funktionieren.

verwende bei datenbank-queries bitte immer die folgende schreibweise,
mysql_query("...") or die(mysql_error));
durch den letzten teil bekommst du die detalierteren fehlermeldungen der DB angezeigt, die dir bei der fehlersuche helfen können.

und zur syntax von INSERT solltest du mal im mysql-manual (http://www.mysql.de/doc/de/index.html) nachlesen gehen ...

 
rony
03-10-2003, 01:16 
 
das ist ein kopier fehler, da stehen natürlich 3 felder (für die 3 werte), kein schimmer was da beim kopieren ging. bezüglich der fehlermeldung hab ich das so gemacht das es die unschönen fehler nicht anzeigt, stattdessen habe ich die selber deklariert.

letzlich denke ich ist es tatsächlich sinnvoller erst einige grundzüge des PHP zu erlernen bevor man die fehlermeldungen verschönert.

danke für den hinweis.

nun zum eigentlichen problem, ich möchte mit dem feld date ein datum in die tabelle "aktuell" -feld- "datum"reinschreiben. dies hatte als allererstens den grund das ich den TIMESTAMP bei der ausgabe nicht sinnvoll formatiert hinbekommen habe, desshalb die ganze prozedur vonwegen datum in die DB reinschreiben. also das feld "datum" hat den feldtyp DATE, aber sobald ich einen eintrag mache kommt ne fehlermedlung: 'column date cannot be null'.....

nun was schlägst du vor, was kann ich deiner meinung nach machen.
gruss rony

 
wahsaga
03-10-2003, 03:32 
 
Original geschrieben von rony
bezüglich der fehlermeldung hab ich das so gemacht das es die unschönen fehler nicht anzeigt, stattdessen habe ich die selber deklariert.
das kannst du nachher, wenn die sache online steht, gerne so machen - der besucher muss nicht alle fehlermeldungen im klartext sehen.
aber wenn du noch in der entwicklungsphase bist, wo immer wieder mal fehler autreten, bist du damit extrem schlecht beraten - da sind die originalen fehlermeldungen der DB immer sehr viel aussagekräftiger.
dies hatte als allererstens den grund das ich den TIMESTAMP bei der ausgabe nicht sinnvoll formatiert hinbekommen habe, desshalb die ganze prozedur vonwegen datum in die DB reinschreiben.
das formatieren ist eigentlich kein grosses problem - sowohl php als auch mysql bieten dazu diverse funktionen an.
wenn du aber stattdessen ein "eigenes" datumsformat zum abspeichern verwendest, bekommst du nachher u.U. probleme, wenn du nach dem datum sortieren, oder abfragen in abhängigkeit von daten machen willst ...
also das feld "datum" hat den feldtyp DATE, aber sobald ich einen eintrag mache kommt ne fehlermedlung: 'column date cannot be null'.....
dann solltest du dir zunächst mal ansehen, wie deine zusammengebastelte query eigentlich aussieht, d.h. du gibst $insertSQL nachdem du seinen wert zugewiesen hast, zur kontrolle erstmal per echo aus, und schaust dir an, was da steht.
und wenn dann der wert für's datum falsch oder gar nicht gefüllt ist, dann machst du dich mal auf die suche nach der ursache dafür ...


Alle Zeitangaben in WEZ +2. Es ist jetzt 19:34 Uhr.