Ankündigung

Einklappen
Keine Ankündigung bisher.

Datetime Sekunden weglassen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Datetime Sekunden weglassen

    Hallo liebe Leute!



    ich habe eine Kalenderfunktion übernommen, dessen Uhrzeitformat wie folgt aussieht: YYYY-MM-DD HH:MM:SS. Dabei wird das Format datetime, das ein Basis-Datentyp von MySQL ist, genommen.



    Nun möchte ich aber die Sekunden weglassen, so dass das Format dann wie folgt aussieht: YYYY-MM-DD HH:MM.

    Hat vielleicht jemand eine Idee, wie ich folgenden Code so ändern kann, dass sichergestellt wird, dass das Format, welches im GUI verwendet wird (ohne Sekunden) korrekt in das Format umgewandelt wird, welches die DB braucht (mit Sekunden)?



    PHP-Code:

    [LEFT]if (!empty($_REQUEST['action']))

    {

    // When adding a new event, preserve already entered values for the user's convenience

    if ($_REQUEST['action'] == 'add')

    {

    $event_obj->typ = empty($_REQUEST['typ']) ? $_REQUEST['typ'];

    $event_obj->raum = empty($_REQUEST['raum']) ? $_REQUEST['raum'];

    $event_obj->datum = empty($_REQUEST['datum']) ? ""$_REQUEST['datum'];

    $event_obj->dauer = empty($_REQUEST['dauer']) ? "" $_REQUEST['dauer'];

    $event_obj->wbt_url = empty($_REQUEST['wbt_url']) ? "" $_REQUEST['wbt_url'];

    $event_obj->anmeldeschluss = empty($_REQUEST['anmeldeschluss']) ? "" 
    $_REQUEST['anmeldeschluss'];

    $event_obj->sprache = empty($_REQUEST['sprache']) ? "Deutsch" $_REQUEST['sprache'];

    $event_obj->bemerkung = empty($_REQUEST['bemerkung']) ? "" $_REQUEST['bemerkung'];

    }



    if (empty(
    $_REQUEST['typ']) ||

    (
    $_REQUEST['typ']==&& (empty($_REQUEST['raum']) || empty($_REQUEST
    ['datum']) ||empty($_REQUEST['dauer']))) ||

    (
    $_REQUEST['typ']==&& empty($_REQUEST['wbt_url'])) ||

    empty(
    $_REQUEST['anmeldeschluss']) ||

    empty(
    $_REQUEST['sprache']))

    {

    $gui->p("<span style='color:red'>"._("Not all required fields were filled out. 
    Data were not saved"
    )."</span>");

    }

    else

    {

    $anmeldeschluss $_REQUEST['anmeldeschluss'];

    $bemerkung = (empty($_REQUEST["bemerkung"]) ? "" $_REQUEST
    ["bemerkung"]); // Bemerkung ist optional!

    $err false;



    if (
    $_REQUEST['typ']==1)

    {

    $raum $_REQUEST["raum"];

    $datum $_REQUEST["datum"];

    $dauer $_REQUEST["dauer"];

    $wbt_url "";



    // Prüfen ob Anmeldeschluss vor Durchführung

    if ($datum $anmeldeschluss)

    {

    $event_obj->anmeldeschluss "";

    $gui->p("<span style='color:red'>"._("Closing date for registration must be 
    preliminary to the Event/WBT-date."
    )."</span>");

    $err true;

    }

    }

    elseif (
    $_REQUEST['typ']==2)

    {

    $raum "";

    $datum $anmeldeschluss// Datum der Durchführung und Anmeldeschluss sind identisch!

    $dauer 0;

    $wbt_url $_REQUEST["wbt_url"];

    }



    if (!
    $err)

    {

    if (
    $_REQUEST['action'] == 'add')

    {

    $ret $CVeranstaltung->add($cycle$_REQUEST['typ'], $raum$datum
    $dauer$wbt_url$anmeldeschluss$_REQUEST['sprache'], $bemerkung);

    if (
    $ret != 0)

    $gui->redirect("ka_a2_zyklus_edit.php?cycle=".$cycle""true);

    }

    else

    $CVeranstaltung->update($event$cycle$_REQUEST['typ'], $raum$datum
    $dauer$wbt_url$anmeldeschluss$_REQUEST['sprache'], $bemerkung);



    if (
    $teiln 0// If there are people registered to this event, forward to email-
    notification!

    $gui->redirect("ka_a16_teilnehmer_email.php?cycle=".$cycle."&event=".$event""true);

    else

    $gui->redirect("ka_a2_zyklus_edit.php?cycle=".$cycle""true);

    }

    }[/
    LEFT]




    oder diesen Code anpassen:



    PHP-Code:

    [LEFT]/** add() creates a new event

    * @param zyklus

    * @param typ (1=Präsenz-Veranstaltung, 2=WBT)

    * @param raum (für typ=1)

    * @param datum (für typ=1)

    * @param dauer (für typ=1)

    * @param wbt_url (für typ=2)

    * @param anmeldeschluss

    * @param sprache

    * @param bemerkung [optional]

    * @return 0 = Error

    * @return else = new id of the created event

    */

    public function add($zyklus$typ$raum$datum$dauer$wbt_url
    $anmeldeschluss$sprache$bemerkung="")

    {

    $db = new CDB ("scan_master""kurse");



    // Hinweis: Die Werte müssen NICHT gequotet werden, da sie per HTTP-POST 
    übermittelt werden und

    // wir magic_quotes auf ON haben!

    $ret $db->cmd("insert into veranstaltung (zyklus, typ, raum, 

    datum, dauer, wbt_url, anmeldeschluss, sprache, bemerkung) values 

    (\"
    $zyklus\", \"$typ\", \"$raum\", \"$datum\", \"$dauer\", \"$wbt_url\", 

    \"
    $anmeldeschluss\", \"$sprache\", \"$bemerkung\")");



    // Backup

    //$ret = $db->cmd("insert into veranstaltung (zyklus, typ, raum, 

    datumdauerwbt_urlanmeldeschlusssprachebemerkungvalues 

    ('".$db->quote($zyklus)."''".$db->quote($typ)."''".$db->quote
    ($raum)."'
    '".$db->quote($datum)."''".$db->quote($dauer)."''".$db->quote

    ($wbt_url)."'
    '".$db->quote($anmeldeschluss)."''".$db->quote

    ($sprache)."'
    ,\"".$db->quote($bemerkung)."\")");

    if (
    $ret == 1)

    return 
    $db->insert_id();

    else

    return 
    0;

    }

    //-------------------------------------------------------------------------------------

    /** update() updates an event

    * @param id to update

    * @param zyklus

    * @param typ (1=Präsenz-Veranstaltung, 2=WBT)

    * @param raum (für typ=1)

    * @param datum (für typ=1)

    * @param dauer (für typ=1)

    * @param wbt_url (für typ=2)

    * @param anmeldeschluss

    * @param sprache

    * @param bemerkung [optional]

    * @return 0 = Error

    * @return else = new id of the created event

    */

    public function update($id$zyklus$typ$raum$datum$dauer$wbt_url
    $anmeldeschluss$sprache$bemerkung="")

    {

    $db = new CDB ("scan_master""kurse");



    // Hinweis: Die Werte müssen NICHT gequotet werden, da sie per HTTP-POST übermittelt werden und

    // wir magic_quotes auf ON haben!

    return $db->cmd("update veranstaltung set zyklus='$zyklus', 

    typ='
    $typ', raum='$raum', datum=\"$datum\", dauer='$dauer', 

    wbt_url=\"
    $wbt_url\", anmeldeschluss=\"$anmeldeschluss\", 

    sprache=\"
    $sprache\", bemerkung=\"$bemerkung\" where id=\"$id\"");



    // Backup

    //return $db->cmd("update veranstaltung set zyklus='".$db->quote

    ($zyklus)."', typ='".$db->quote($typ)."', raum='".$db->quote($raum)."', 

    datum='"
    .$db->quote($datum)."', dauer='".$db->quote($dauer)."', 

    wbt_url='"
    .$db->quote($wbt_url)."', anmeldeschluss='".$db->quote

    ($anmeldeschluss)."', sprache='".$db->quote($sprache)."', 

    bemerkung=\""
    .$db->quote($bemerkung)."\" where id='".$db->quote

    ($id)."'");[/LEFT]




    Für Eure Hilfe wäre ich Euch sehr dankbar!

  • #2
    Bitte beachten: http://www.php.de/php-einsteiger/ann..._Multipostings

    http://www.php-resource.de/forum/php...weglassen.html

    *close*
    Edit: Ausnahmsweise re-open auf Bitte des Thread-Erstellers, der die Diskussion lieber hier fortsetzen möchte.
    [SIZE="1"]RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?[/SIZE]

    Kommentar


    • #3
      Wo in deinem Code ist denn die Uhrzeit in welchem Format, und wo willst du welches andere Format nutzen?


      PHP-Code:
      // Wenn du irgendwo so was hast:
      $zeit '12:34:56';

      // kannst du das ja so ausgeben:
      echo substr($zeit,0,5); 
      [PHP]if ($var != 0) {
      $var = 0;
      }[/PHP]

      Kommentar


      • #4
        Hallo Wolla,
        danke für Deine Antwort.
        In den obigen Codes sind die Variablen datum und anmeldeschluss enthalten. Diese zwei sind vom Typ datetime. Die Werte von datum und anmeldeschluss erhalte ich von der Datenbank in dem Format YYYY-MM-DD HH:MM:SS. Nun möchte ich aber die Sekunden weglassen. D.h. ich möchte die Werte, die ich von der DB in den Format mit den Sekunden bekomme umwandeln, sodass die Sekunden nicht in datum und anmeldeschluss reingeschrieben werden.
        Also ich hätte gerne dieses Format: YYYY-MM-DD HH:MM
        Hhhmm... hoffe, das war jetzt verständlich

        Kommentar


        • #5
          PHP-Code:
          $datum_safe $datum;
          $datum substr($datum,0,16); 
          Falls du das Datum mit Sekunden doch noch mal brauchst, holst du es aus dem Safe.
          [PHP]if ($var != 0) {
          $var = 0;
          }[/PHP]

          Kommentar


          • #6
            Danke. Funktioniert aber leider immer noch nicht

            Könntest Du mir evtl. die Code-Zeile mit substr($datum,0,16) erklären? Warum wird 0 und 16 verwendet? Für was stehen diese Zahlen?

            Kommentar


            • #7
              substr()

              Kommentar


              • #8
                Zitat von ingeraj Beitrag anzeigen
                Danke. Funktioniert aber leider immer noch nicht

                Könntest Du mir evtl. die Code-Zeile mit substr($datum,0,16) erklären? Warum wird 0 und 16 verwendet? Für was stehen diese Zahlen?
                substring entfernt buchstaben...wie der name vielleicht schon vermuten lässt.

                http://php.net/manual/de/function.substr.php

                Da wirds dir erklärt.

                argh da war wer schneller

                Kommentar


                • #9
                  Vielen Dank Euch allen!
                  Hat jetzt endlich geklappt yiphieh!!!

                  Kommentar


                  • #10
                    Habe jetzt doch noch einmal kurz eine Frage. Habe eine Funktion add, die ein Formular mit den Werten aus der DB füllt. Nun möchte ich die Werte, die in values (...) übergeben werden umwandeln. Also z.b. den Wert $anmeldeschluss=substr($anmeldeschluss,0,16), sodass die Sekunden ausbleiben. Leider geschieht nichts, wenn ich
                    PHP-Code:
                    values(..., \"$anmeldeschluss=substr(anmeldeschluss,0,16)\") 
                    eingebe und auch nichts, wenn ich
                    PHP-Code:
                    values(..., \"substr($anmeldeschluss,0,16)\" 
                    eingebe. Was mache ich falsch?

                    Hier mal die add-Funktion:

                    PHP-Code:
                    public function add($zyklus$typ$raum$datum$dauer$wbt_url
                    $anmeldeschluss$sprache$bemerkung="")
                    {
                       
                    $db = new CDB ("scan_master""kurse");
                            
                    // Hinweis: Die Werte müssen NICHT gequotet werden, da sie per HTTP-POST 
                    //übermittelt werden und wir magic_quotes auf ON haben!
                    $ret $db->cmd("insert into veranstaltung (zyklus, typ, raum, datum, dauer, 
                    wbt_url, anmeldeschluss, sprache, bemerkung) values (\"
                    $zyklus\", \"$typ\", 
                    \"
                    $raum\", \"$datum\", \"$dauer\", \"$wbt_url\", \"$anmeldeschluss\", 
                    \"
                    $sprache\", \"$bemerkung\")");
                                    
                    // Backup
                    //$ret = $db->cmd("insert into veranstaltung (zyklus, typ, raum, datum, 
                    dauerwbt_urlanmeldeschlusssprachebemerkungvalues ('".$db->quote
                    ($zyklus)."'
                    '".$db->quote($typ)."''".$db->quote($raum)."''".$db->quote
                    ($datum)."'
                    '".$db->quote($dauer)."''".$db->quote($wbt_url)."''".$db-
                    >quote($anmeldeschluss)."'
                    '".$db->quote($sprache)."',\"".$db->quote
                    ($bemerkung)."\")");
                        if (
                    $ret == 1)
                             return 
                    $db->insert_id();
                             else
                             return 
                    0
                    Vielen Dank für Eure Hilfe

                    Kommentar


                    • #11
                      http://php.net/manual/de/language.types.string.php -> Variable parsing

                      Entweder bekommst du dann einen Fehler von der Datenbank, die Datenbank speichert es sowieso mit Sekunden oder du hast eine Mischung aus verschiedenen Datumsformaten - alles nicht sinnvoll.
                      [I]You know, my wife sometimes looks at me strangely. „Duncan“, she says, „there's more to life than Solaris“. Frankly, it's like she speaks another language. I mean, the words make sense individually, but put them together and it's complete nonsense.[/I]

                      Kommentar


                      • #12
                        // Hinweis: Die Werte müssen NICHT gequotet werden, da sie per HTTP-POST
                        //übermittelt werden und wir magic_quotes auf ON haben!
                        Das ist vollkommener Unsinn. Wenn du magic quotes aktiv hast, dann sind die Felder mit stripslashes zu säubern. Beim speichern in der Datenbank behandelst du die Zeichenketten-Felder dann mit mysql_real_escape_string
                        PHP-Code:
                        values (\"$zyklus\", \"$typ\", "
                        // wenn du das mit einfachen Hochkommas schreibst, dann kann man es besser lesen:
                        values ('$zyklus''$typ',
                        // wobei noch das escapen fehlt! 
                        Zum datumfeld:
                        Wenn du ein datetime-Feld hast, dann speicher den Kram incl. der Sekunden und hol ihn ohne Sekunden wieder raus:

                        PHP-Code:
                        SELECT DATE_FORMAT(datum,'%Y-%m-%s %H:%i'FROM ... 
                        Oder halt genau in dem Format, in dem du es soäter ausgeben willst.
                        [PHP]if ($var != 0) {
                        $var = 0;
                        }[/PHP]

                        Kommentar


                        • #13
                          danke Wolla für Deine Antwort.

                          Habe jetzt mal die Select-Anweisung gefunden und das entsprechend geändert:

                          ursprünglicher Code:
                          PHP-Code:
                          if ($db->query("select *, TIME_TO_SEC(TIMEDIFF(anmeldeschluss, now())) 
                          as deadline, TIME_TO_SEC(TIMEDIFF(datum, now())) 
                          as bis_veranstaltung, DATE_FORMAT(datum,'%a') as datum_weekday, 
                          DATE_FORMAT(anmeldeschluss,'%a') as 
                          anmeldeschluss_weekday from veranstaltung where zyklus='"
                          .$db->quote
                          ($cycle)."' order by datum")>0
                          angepasster Code:
                          PHP-Code:
                          if ($db->query("select *, TIME_TO_SEC(TIMEDIFF(anmeldeschluss, now())) 
                          as deadline, TIME_TO_SEC(TIMEDIFF(datum, now())) 
                          as bis_veranstaltung, DATE_FORMAT(datum,'%Y-%m-%d %H:%i') as 
                          datum_weekday, DATE_FORMAT(anmeldeschluss,'%Y-%m-%d %H:%i') as 
                          anmeldeschluss_weekday from veranstaltung where zyklus='"
                          .$db->quote
                          ($cycle)."' order by datum")>0
                          Leider hat sich da auch nichts getan. Datum/Zeit erscheint immer noch mit Sekunden

                          Noch eine andere Idee?

                          Vielen Danke

                          Kommentar

                          Lädt...
                          X