Webstatt.org - Community seit 2006 - 2012 (2024?)

Datum ( TT.MM.JJJJ ) zu Timestamp umwandeln.

Avatar user-118
13.04.2006 22:05

Guten Tag,
ich bins nochmal Fettes Grinsen

Also folgendes: Ich wandle ein eingegebenes Datum ( Form: TT.MM.JJJJ ) in einen Timestamp um.

Das sieht so aus.

	   //unix_timestamp aus Datum erstellen//
$datumpart = explode(".", $datum);
$tag = $datumpart[0];
$monat = $datumpart[1];
$jahr = $datumpart[2];
$unix_timestamp = mktime(0,0,0,$monat,$tag,$jahr); /


Ist da ein Fehler drin ?

Dann gehts weiter und ich trage den Timestamp so in die Mysql Datenbank ein ...
Das Problem ist, dass später beim auflisten (Order by datum) der Kram (, der eig. nach Datum geordnet ausgegeben werden soltle ) wild durcheinander ausgegeben wird, aber nicht so wie er ausgegeben werden müsste, eben nicht chronologisch.

Und in welche Form muss ich ein Datum in die Mysql Datenbank eingeben, wenn ich daraus mit der in mysql vorgesehen Funktion einen Timestamp erstellen will ?
TT.MM.JJ od. TT.MM.JJJJ od. MM.TT.JJ od. MM.TT.JJJJ ?

Danke schonmal

mfg Alex

edit:// um diesen Posts vorzubeugen , Ja ich habe vorher Google bemüht, und Ja ich habe nichts (was mir wirklich weiterhilft) gefunden.

Ok ich habe doch was bei Google gefunden und ich habe das Gefühl, dass ich hier mal gewaltig was durcheinander gebracht habe, was den Unix_Timestamp und die von Mysql bereitgestellten Zeit- und Datentypen angeht.

Ich brauche keine Signatur
Avatar user-253
14.04.2006 10:07

Morgen,

MySQL erwartet für das eigene Datumsformat eine Angabe der Form JJJJ-MM-TT SS:MM:SS - die Angabe der Uhrzeit ist dabei optional und die Trennzeichen sind irrelevant (also JJJJMMTT oder JJJJ/MM/TT klappen genauso).

Eine Frage am Rande: Warum benutzt du keine Spalte des Typs DATE. user-158n klappt das Sortieren wunderbar. Das Rechnen ist einfacherer... Außerdem ist die Rückumwandlung quasi ohne Zeitaufwand mit UNIX_TIMESTAMP rückverwandelbar.

Zu deinem Sortierungsproblem: In welchem Format speicherst du den Timestamp? TIMESTAMP, INTEGER oder VARCHAR

Michael

Avatar user-118
14.04.2006 11:28

Ich habe nun meine Eingaben einfach noch neu gemacht und mein eigegebenes Datum in der Form: TT.MM.JJJJ schon vorher mit mktime in einen unix-timestamp umgewandelt und das dann in meine Datumfeld (integer (wahrweise auch mal varchar, je nachdem was klappt zwinkern)) eingetragen.
so funzt es auch nun so weit...

mfg Alex

Ich brauche keine Signatur
Avatar user-253
14.04.2006 11:40

Halb-schön aber wenn es so klappt zwinkern

Noch ein kurzes Wort zu dem Feldtyp: Ob VARCHAR oder INTEGER ist in diesem Fall insbesondere für die Sortierung wichtig, da ein String und eine Zahl unterschiedlich sortiert werden.

Michael

Avatar user-118
14.04.2006 11:46

zu früh gefreut.

Habe mir gerade mal die Daten ausgeben lassen und das ist absoluter Bullshit.
Ich habe nun, wie du vorgeschlagen hast, das Feld auf date umgestellt und die Daten wie angegeben in der Form: JJJJ-MM-TT eingegeben.

Wie formatiere ich diesen Datum nun, das es in dieser Form ausgegeben wird:

TT.MM.JJ ?

Muss ich es dazu vorher in einen Unix-Timestamp umwandeln ?

danke
mfg Alex

Ich brauche keine Signatur
Avatar user-317
14.04.2006 11:51

http://dev.mysql.com/doc/refman/4.1/en/date-and-time-functions.html
Am Besten alles durchlesen. Für dein Vorhaben strg+f -> DATE_FORMAT

Avatar user-253
14.04.2006 11:54

Nein du musst es nicht umwandeln - das ist ja der große Vorteil zwinkern

Der Syntax für die Datumsformatierung ist so:
SELECT DATE_FORMAT(datumsfeld,'%e.%c.%y'zwinkern bezeichner FROM tabelle;
datumsfeld ist dein Datumsfeld, tabelle deine Tabelle. Bezeichner ist ein beliebiger von dir gewählter Bezeichner, über den du später auf das formatierte Datum zugreifst.


Der Zugriff in PHP erfolgt dann über
$row = mysql_fetch_assoc($query);
print $row['bezeichner'];
analog mit mysql_fetch_object

Michael

Avatar user-118
14.04.2006 12:14

Danke für den Link, hab mir das gerade mal durchgelesen und danke für das Beispiel.

Nun klappt alles wunderbar Fettes Grinsen

Eine Frage noch:
Ich schreibe statt row['bezeichner']; immer row->bezeichner;
Sind das gleiche "Bezeichnungsarten" oder ist eine vorteil - oder nachteilhafter ?

mfg Alex

Ich brauche keine Signatur
Avatar user-253
14.04.2006 12:19

Nein das ist reine Geschmackssache.
Wenn du $row->name schreibst musst du natürlich mysql_fetch_object verwenden, ansonsten mysql_fetch_assoc. Aber keine der beiden Methoden ist besser als die andere.

Avatar user-118
14.04.2006 12:22

ok danke, nun weiss ich bescheid.

mfg Alex

Ich brauche keine Signatur
Avatar user-300
14.04.2006 12:52

Original von user-251el
Nein das ist reine Geschmackssache.
Wenn du $row->name schreibst musst du natürlich mysql_fetch_object verwenden, ansonsten mysql_fetch_assoc. Aber keine der beiden Methoden ist besser als die andere.


Hat Hoffie (glaub ich) nicht mal eine Diskussion darüber geführt? Er meint mit Objekten sei das ganze viel langsamer.
Seitdem verwende ich zumindest nur noch mysqli_fetch_assoc() lächeln

Avatar user-253
14.04.2006 12:57

Hmm ich habe die Diskussion nicht mitbekommen aber es würde mich verwundern. Ist der gute Herr eigentlich auch hier in dem Forum? Wenn nicht könnte den ja mal jemand einladen.

Ich persönlich bevorzuge mysql_fetch_assoc, da die Objekt mit "echten" Objekten nicht viel mehr als die Syntax gemein haben. Man sollte allgemein ja gerade nicht direkt auf die Attribute zugreifen.

Avatar user-300
14.04.2006 13:04

http://www.jex-treme.de/forum/thread.php?threadid=1023406234
Ich habs gefunden =)

Ob Hoffie hier aktiv ist, weiss ich leider nicht. Hat jemand noch Kontakt zu ihm? lächeln

Avatar user-317
14.04.2006 13:12

Ich machs immer so :
<?php
$query = 'SELECT * FROM `bla`';
$sql = mysql_query ($query) or die ('Datenbankfehler in Zeile ' . __LINE__ . ' : <div class="error">' . mysql_error () . '</div>'zwinkern;

while($row = mysql_fetch_array($sql, MYSQL_ASSOC) {
}
?>


Allerdings kann ich nicht mehr sagen, wo der Vorteil daran ist traurig
Habe irgendwo was mal gelesen und seit dem nutze ich das.

Avatar user-118
14.04.2006 17:31

Habe wieder ein Problem was indirekt hiermit zu tun hat...

es geht um dieses Codesegment:

	   //mysql-datums-format aus Datum erstellen//
$datumpart = explode(".", $datum);
$date_format_datum = datumpart[2]."-".datumpart[1]."-".datumpart[0];


Der Fehler.

Parse error: parse error in .....galleryeintrag.php on line 16


Die beiden Zeilen oben sind Zeile 15 und Zeile 16.

Was habe ich falsch gemacht... Ich weiss einfach nicht woran es liegt.

mfg Alex

Ich brauche keine Signatur
Avatar user-317
14.04.2006 17:51

Zeig mal noch so +-10 Zeilen drumrum.

Avatar user-118
14.04.2006 17:57

Zeile 1- 19:

<?php
session_start();
if (!isset($_SESSION['userlevel'])) {
$_SESSION['userlevel'] = 0;
}
if (!$_SESSION['userlevel'] >= 5) {
echo "Du hast kein Recht diesen Bereich zu sehen.";
}
else {

require "./php/database.php";
if ($action) {

//mysql-datums-format aus Datum erstellen//
$datumpart = explode(".", $datum);
$date_format_datum = datumpart[2]."-".datumpart[1]."-".datumpart[0];

$sql1="INSERT INTO $table_gallery_beschreibung (ueberschrift, beschreibung, datum, data) VALUES ('$ueberschrift', '$beitrag', '$date_format_datum', '$file'zwinkern";
$senden=mysql_query($sql1) or die(mysql_error());


darauf folgt eine abgeschlossene Funktion an der es nicht liegen kann.


Sobald ich Zeile 15 u. 16 auskommentiere funktioniert die Seite.

Ich brauche keine Signatur
Avatar user-317
14.04.2006 18:19

Werd ich nicht drauß schlau :/
Poste mal den gesamten Code.

Avatar user-118
14.04.2006 18:34

<?php
session_start();
if (!isset($_SESSION['userlevel'])) {
$_SESSION['userlevel'] = 0;
}
if (!$_SESSION['userlevel'] >= 5) {
echo "Du hast kein Recht diesen Bereich zu sehen.";
}
else {

require "./php/database.php";
if ($action) {

//mysql-datums-format aus Datum erstellen//
$datumpart = explode(".", $datum);
$date_format_datum = datumpart[2]."-".datumpart[1]."-".datumpart[0];

$sql1="INSERT INTO $table_gallery_beschreibung (ueberschrift, beschreibung, datum, data) VALUES ('$ueberschrift', '$beitrag', '$date_format_datum', '$file'zwinkern";
$senden=mysql_query($sql1) or die(mysql_error());


function thumb($file, $save, $width, $height, $prop = TRUE) {
@unlink($save);
$infos = @getimagesize($file);
if($prop) {
// Proportionen erhalten
$iWidth = $infos[0];
$iHeight = $infos[1];
$iRatioW = $width / $iWidth;
$iRatioH = $height / $iHeight;
if ($iRatioW < $iRatioH)
{
$iNewW = $iWidth * $iRatioW;
$iNewH = $iHeight * $iRatioW;
} else {
$iNewW = $iWidth * $iRatioH;
$iNewH = $iHeight * $iRatioH;
} // end if
} else {
// Strecken und Stauchen auf Größe
$iNewW = $width;
$iNewH = $height;
}

if($infos[2] == 2) {
// Bild ist vom Typ jpg
$imgA = imagecreatefromjpeg($file);
$imgB = imagecreatetruecolor($iNewW,$iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
$iNewH, $infos[0], $infos[1]);
imagejpeg($imgB, $save);
} elseif($infos[2] == 3) {
// Bild ist vom Typ png
$imgA = imagecreatefrompng($file);
$imgB = imagecreatetruecolor($iNewW, $iNewH);
imagecopyresampled($imgB, $imgA, 0, 0, 0, 0, $iNewW,
$iNewH, $infos[0], $infos[1]);
imagepng($imgB, $save);
} else {
return FALSE;
}
}

///////////////////////////////////////////////////
echo '<table align="center"><tr><td>';

if (!file_exists($_POST['file']."/th"zwinkern)
{
if (mkdir($_POST['file'].'/th', 0700))
echo '<font class="fontsmall">Verzeichnis /th erstellt!</font><br><br>';
}
else
{
echo '<font class="fontsmall">Verzeichnis /th existiert bereits.</font><br><br>';
}
////////////////////////////////////////////////
$file = $_POST['file'];


$hDir = opendir($file);

while($sFilename = readdir($hDir)) {
$sFilepath = $sDirpath.'/'.$sFilename;
if (($sFilename != "."zwinkern && ($sFilename != ".."zwinkern && ($sFilename != "th"zwinkern)
{
# jpeg, gif und png rausfiltern
$aPicinfo = @getimagesize($sFilepath);
if(in_array($aPicinfo[2], array(1,2,3), true))
$aPics[] = $sFilename;
$count++;


////////////////////////////////////////////
// Quelldatei
$from = $_POST['file'].'/'.$sFilename;
// Ziel 1+2
$to1 = $_POST['file'].'/th/'.$sFilename;
// Funktionsaufruf mit Einbehaltung der Proportionen
thumb($from, $to1, 150, 150, TRUE);
echo '<font class="fontsmall">Thumbnail von '.$sFilename.' erfolgreich erstellt.</font><br>';
}
}
echo '</td></tr></table>';
}

?>
<form name="eintrag" action="index.php?param=galleryeintrag&action=true" method="post">
<br>
<table align="center" class="tableinborder" cellpadding="4" cellspacing="1" style="width:80%;">
<tr>
<td class="table_b"><label class="fontnormal">Überschrift:</label></td>
<td colspan="3" class="table_b"><input style='width:390px;' type="text" name="ueberschrift" class="input"></td>
</tr>
<tr>
<td class="table_a"><label class="fontnormal">Datum:</label></td>
<td colspan="3" class="table_a"><input style='width:390px;' type="text" name="datum" class="input"></td>
</tr>
<tr>
<td class="table_b" valign="top"><label class="fontnormal">Beschreibung:</label></td>
<td class="table_b" colspan="3"><textarea name="beitrag" class="textarea" rows="8" cols="60"></textarea></td>
</tr>
<tr>
<td class="table_a">Pfad zu den Bildern.</td>
<td class="table_a"><input style='width:390px;' name="file" value="./gallery/pics/galleriename" type="text" class="input"></td>
</tr>
<tr>
<td class="table_b" colspan="3" align="center">
<input name="Send" type="submit" value="Abschicken" class="input">
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<input name="Reset" type="reset" value="L&ouml;schen" class="input">
</td>
</tr>
</table>
</form>

<?php
}
?>

Ich brauche keine Signatur
Avatar user-300
14.04.2006 20:54

Variablen beginnen mit einem Dollarzeichen zwinkern
$date_format_datum = $datumpart[2] . "-" . $datumpart[1] . "-" . datumpart[0];

Avatar user-118
14.04.2006 20:57

Original von user-300
Variablen beginnen mit einem Dollarzeichen zwinkern
$date_format_datum = $datumpart[2] . "-" . $datumpart[1] . "-" . datumpart[0];


Oh Gott wie blöd und ich sitze hier und wunder mich ... boah scheisse wie doof ... Ohh grr das kommt davon wenn man 10 Stunden vorm Rechner sitzt ...

danke
mfg Alex

Ich brauche keine Signatur
Avatar user-317
14.04.2006 21:43

Hrm, Asche auch über mein Haupt :/