mysql datetime

Alles, was nicht in die anderen Foren passt, kannst du hier loswerden.
Antworten
momo
Beiträge: 24
Registriert: 21. Okt 2009, 13:35

mysql datetime

Beitrag von momo »

Hallo zusammen

ich habe meine Homepage hinterbachsuerpfler.de auf die neueste Admidio Version upgedated.

Jetzt habe ich das Problem das ich Termine auch auf anderen seiten ausgebe.

leider funktioniert das mit mysldatetime nicht mehr

Call to undefined function mysqldatetime() in .....

hat hier jemand ein Lösung?

mfg momo
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Zeig doch mal den entsprechenden Code dazu.
Ich lese auf externen Seiten auch mit der neuen Version weiterhin die Zeitdaten problemlos aus. ibt ja immer mehr als einen Weg, entweder im SQL Statement direkt oder eben per PHP Funktion... :roll:
momo
Beiträge: 24
Registriert: 21. Okt 2009, 13:35

Beitrag von momo »

ich hab das bis jetzt immer so gemacht,
mysqldatetime("d.m.y ", $row->dat_begin)

das funktionierte bis zum update.

ich hab gesehen das das jetzt mit $g_preferences['system_time'] gemacht wird,
ich kapier das nur nicht :oops:

hast du mir da ein stichwort oä?


gruss und danke
Martin
matzman2000
Former team member
Beiträge: 1087
Registriert: 2. Sep 2007, 17:12
Wohnort: Itzstedt
Kontaktdaten:

Beitrag von matzman2000 »

Achso, jetzt weiss ich was Du meinst!

Die Funktion mysqldatetime() ist in der Admidio Version 2.1.x zum Einsatz gekommen und steht in der neuen version nicht mehr zur Verfügung. Warum? Ist ganz einfach, in den Oragnisationseinstellungen hat man nun die Möglichkeit das Datums und Zeitformat selbst zu ändern / anzupassen. Mit $g_preferences['system_time'] kann man das Zeitformat und mit $g_preferences['system_date'] das Datumsformat auslesen und damit den in der Datenbank abgelegten Zeitstempel formatieren.

Dafür ist es notwendig ein Objekt anzulegen, das man dann formatieren kann. Ein kurzes Besipeil verdeutlicht das vielleicht:

Code: Alles auswählen

// Objekt mit Inhalt aus der Datenbank anlegen
$startDate = new DateTimeExtended($row['dat_begin'], 'Y-m-d H:i:s');

// Formatiert ausgeben
echo $startDate->format($g_preferences['system_date'].' '.$g_preferences['system_time']);
Du kannst natürlich die alte Funktion wieder einführen, wenn Du das eingestellte Datumsformat aus den Organisationseinstellungen ignorieren willst / kannst. Dazu einfach in die Datei adm_program/system/function.php den Sourcecode einfügen (ungetestet, das ist ganz platt die alte Funktion!):

Code: Alles auswählen

// wandelt ein DateTime-Feld einer MySql-Datenbank in einen beliebigen String um
// Folgende Zeichen des Strings werden ersetzt:
// y = Jahr; m = Monat; d = Tag; h = Stunde; i = Minute; s = Sekunde
//
// Bsp: MySql-Datenfeld    "2001-05-11 15:30:15"
//      Übergabe           "h:i d.m.y"      
//      Rückgabe           "15:30 11.05.2001"

function mysqldatetime($dateFormat, $dateTime)
{
   $destStr = "";
   $dateArray = split("[- :]", $dateTime);
   
   if($dateTime != NULL)
   {
      if($dateArray[0] == "0000")
      {
         // wenn das Jahr 0 ist, dann ist das Feld nicht gefüllt
         $destStr = "";
      }
      else
      {
         for($i = 0; $i < strlen($dateFormat); $i++)
         {
            switch($dateFormat[$i])
            {
               case 'y':
                  $destStr = $destStr. $dateArray[0];
                  break;

               case 'm':
                  $destStr = $destStr. $dateArray[1];
                  break;

               case 'd':
                  $destStr = $destStr. $dateArray[2];
                  break;

               case 'h':
                  $destStr = $destStr. $dateArray[3];
                  break;

               case 'i':
                  $destStr = $destStr. $dateArray[4];
                  break;

               case 's':
                  $destStr = $destStr. $dateArray[5];
                  break;

               case ' ':
                  $destStr = $destStr. "&nbsp;";
                  break;

               default:
                  $destStr = $destStr. $dateFormat[$i];
                  break;
            }
         }
      }
   }
   
   return $destStr;
}
Ich hoffe nun sind alle Fragen beantwortet.... :wink:
momo
Beiträge: 24
Registriert: 21. Okt 2009, 13:35

Beitrag von momo »

Hey vielen Dank jetzt hab ichs kapiert ;-)
und es funktioniert wieder ;-)

danke
Antworten