Zeit aktualisieren

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

  • Zeit aktualisieren

    Habe eine Tabelle:

    id | enabled | type | url | hits | since | title

    Das hineinschreiben1
    PHP-Code:
     function insert_keyw ($keywrd$table '') {
            global 
    $tbl_mpdl$kwspl;
            if (
    $table == ''$table $tbl_mpdl;
            if (
    $kwspl) {
                    
    $kwlist explode(' ',$keywrd);  // if there is more than one keyword then split 'em up
                    
    $cnt_kwlist count($kwlist);
                    for(
    $i 0$i $cnt_kwlist$i++) {     // each keyword gets its own entry
                            
    if (trim($kwlist[$i])) insert_mpdl($kwlist[$i], 'kw'$table);
                    }
            } else {
                    
    insert_mpdl($keywrd,'kw',$table);
            }

    Teil 2:
    PHP-Code:
       function insert_mpdl ($url$type 'mp'$table false$title ''$update true$active 1) {

    global 
    $tbl_mpdl,$curr_gmt_time;

    if (!
    $table$table $tbl_mpdl;
    $url    addslashes_mq($url);
    $title  addslashes_mq($title);

    $sql "SELECT id, enabled FROM $table WHERE type = '".$type."' AND url = '".$url."'";
    $res mysql_query($sql);
    if (!
    mysql_num_rows($res)) {
    $sql2 "INSERT INTO $table (enabled,type,url,since,title) VALUES ($active,'$type','$url',$curr_gmt_time,'$title')";
                    
    $res2 mysql_query($sql2);
                    return 
    mysql_insert_id();
            } else {
                    if(
    $update) {
    $enabled mysql_result($res,0,1);
    $new_hits = ($enabled) ? 'hits+1' '1, enabled = 1';
    $sql2 "UPDATE $table SET hits = $new_hits";
       
    // only update title if there is a title (if called by php, there is no title-string!)
    if ($title != ''$sql2 .= ", title='".$title."'";
    $sql2 .= " WHERE type = '".$type."' AND url = '".$url."'";
    $res2 mysql_query($sql2);
                    }
                    return 
    mysql_result($res,0,0);
            }
    }

    function 
    mpdl_setTitle ($url$title) {
            global 
    $tbl_mpdl;

            
    $url    addslashes_mq($url);

            if (
    $title != '') {
                    
    $sql "UPDATE $tbl_mpdl SET title = '$title' WHERE url = '$url' AND type = 'mp'";
                    
    mysql_query($sql);
            }

    Nun das Problem.
    Wenn ein KW doppelt ist, erhöhen sich die hits um +1
    Das klappt auch schon schön. Nun stört allerdings das since.
    Das zeigt die Zeit an, wann es zum ersten Mal da war.
    Kann ich das so ändern, das es sich jedesmal auf die aktuelle Zeit updatet?

  • #2
    Code:
    UPDATE .. SET `since` = NOW()

    Kommentar


    • #3
      Re: Zeit aktualisieren

      oder gleich since als TIMESTAMP deklarieren - zitat manual:
      Der TIMESTAMP-Typ ist ein Typ, den Sie dafür benutzen können, um INSERT- oder UPDATE-Operationen mit dem aktuellen Datum und der aktuellen Zeit zu stempeln. Wenn Sie mehrfache TIMESTAMP-Spalten haben, wird nur die erste automatisch aktualisiert.
      I don't believe in rebirth. Actually, I never did in my whole lives.

      Kommentar


      • #4
        Wo müsste ich denn den Timestamp in der o.g Funktion einsetzen, damit er das since updatet?

        Kommentar


        • #5
          das feld (die tabellenspalte) soll von diesem typ sein.

          Kommentar


          • #6
            Achso
            Zur Zeit sehen die Einträge so aus:
            1109490236
            since int(10)

            Kann ich das bedenkenlos umstellen, oder ändert sich dann etwas am Format?

            Kommentar


            • #7
              was hat dir denn der blick ins handbuch bezüglich dieses formates gesagt?

              Kommentar


              • #8
                Auch nicht wirklich etwas.
                Nun habe ich es mal bei einer Tabelle probiert.
                Die werte: 20050902002505
                statt 1125048756
                vorher konnte ich es mit date("d.m.Y", $row[2])
                ausgeben. Wie kriege ich das nun formatiert?

                Kommentar


                • #9
                  Code:
                  SELECT UNIX_TIMESTAMP(`since`) AS `since` FROM ...
                  oder so.

                  Kommentar


                  • #10
                    Ne, das since habe ich belassen, und eine neue Zeile als Timestamp gemacht. Nun kriege ich das nicht vernünftig konvertiert bzw ausgegeben mit php. das ist wohl ein anderes Format, als das date()

                    Kommentar


                    • #11
                      Habe ich schon hingekriegt.
                      Vielleicht kann mir jmd einen Tip geben, wie ich den Befehl am besten ausführe:



                      PHP-Code:
                      ALTER TABLE `user_xxxxx_mpdlADD `timestampTIMESTAMP NOT NULL 
                      Das sind o ca 400 Tabelen mit unterschiedlichen Zahlen wo jetzt xxxxx steht.
                      Hoffentlich muss ich das nicht manuell machen

                      Kommentar


                      • #12
                        Original geschrieben von ollimagic
                        Das sind o ca 400 Tabelen mit unterschiedlichen Zahlen wo jetzt xxxxx steht.
                        Hoffentlich muss ich das nicht manuell machen
                        hoffentlich doch.
                        damit du lernst, dass es unfug ist, gleichartige daten über mehrere tabellen zu verteilen. (so wie's aussieht, hast du ja pro user eine tabelle gemacht - warum?)
                        I don't believe in rebirth. Actually, I never did in my whole lives.

                        Kommentar


                        • #13
                          Für diese Anwendung ist es schon Sinnvoll
                          Zuletzt geändert von ollimagic; 02.09.2005, 15:13.

                          Kommentar

                          Lädt...
                          X