Willkommen in der Webstatt
User-1 am 14.04.06 00:05

Guten Tag,
ich bins nochmal :D

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 ?

xyz-48n 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 ?

xyz-48ke 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.

netcup.de Warum gibt es hier Werbung?
User-2 am 14.04.06 12: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. xyz-48n 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

xyz-141el

User-1 am 14.04.06 13: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 ;-))) eingetragen.
so funzt es auch nun so weit...

mfg Alex

User-2 am 14.04.06 13:40

Halb-schön aber wenn es so klappt ;)

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.

xyz-141el

User-1 am 14.04.06 13: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

User-3 am 14.04.06 13: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

User-2 am 14.04.06 13:54

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

Der Syntax für die Datumsformatierung ist so:
SELECT DATE_FORMAT(datumsfeld,'%e.%c.%y') 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

xyz-141el

User-1 am 14.04.06 14:14

xyz-48ke für den Link, hab mir das gerade mal durchgelesen und danke für das Beispiel.

Nun klappt alles wunderbar :D

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

mfg Alex

User-2 am 14.04.06 14: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.

User-1 am 14.04.06 14:22

ok danke, nun weiss ich bescheid.

mfg Alex

User-4 am 14.04.06 14:52

Quote
Original von xyz-141el
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() :)

User-2 am 14.04.06 14: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.

User-4 am 14.04.06 15: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? :)

User-3 am 14.04.06 15: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>');

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


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

User-1 am 14.04.06 19: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

User-3 am 14.04.06 19:51

Zeig mal noch so +-10 Zeilen drumrum.

User-1 am 14.04.06 19: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')";
$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.

User-3 am 14.04.06 20:19

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

User-1 am 14.04.06 20: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')";
$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"))
{
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 != ".") && ($sFilename != "..") && ($sFilename != "th"))
{
# 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
}
?>

User-4 am 14.04.06 22:54

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

User-1 am 14.04.06 22:57

Quote
Original von xyz-190
Variablen beginnen mit einem Dollarzeichen ;-)
$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

User-3 am 14.04.06 23:43

Hrm, Asche auch über mein Haupt :/

Creative Commons Lizenzvertrag
Alle Inhalte des Webstatt-Archivs stehen unter einer Creative Commons Namensnennung - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.

Impressum & Kontakt