Ankündigung

Einklappen
Keine Ankündigung bisher.

UPDATE einer Spalte der DB

Einklappen

Neue Werbung 2019

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

  • UPDATE einer Spalte der DB

    Hi,

    ich arbeite mit diesem Tutorial:
    http://forum.developers-guide.net/thread54.html

    Funktioniert alles super.An dieser Stelle danke für dieses einleuchtende Tutorial.

    Nun gibt es dort einen teil in der validateLogin.inc.php bei dem die Anzahl der Logins erhöht wird.
    Dies möchte ich umbauen und zwar so, dass er den letzten Login updatet.
    Mein code sieht so aus:
    PHP-Code:
    <?php
    //...
    else {
                 
    // loggedIn wird auf true gesetzt =>Sessions gestartet, users "online"
                 
    $_SESSION['loggedIn'] = true;
                 
    $aktuell date('Y-m-d'); //aktueller Tag
                 
                 // Die userspezifischen Daten werden ausgelesen und der Session hinzugefügt
                 
    $user mysql_fetch_object($res);
                 
    $_SESSION['id'] = $user->_id;

                 
    // Aktualisierung des letzten Logins
                 
    $sql "UPDATE
                                  logindaten
                             SET
                                  login_lastlogin = '
    $aktuell'
                             WHERE
                                  login_ID = '
    $user->_id'";
    //...
    ?>
    Die spalte in der DB ist definiert als Date.
    Komischerweise updatet der dort gar nichts, sondern lässt den alten Wert 0000-00-00.
    Kann mir jemand helfen?


  • #2
    Warum fragst Du hier und nicht bei der Quelle nach?

    Was für ein Feld ist login_lastlogin?
    Versuch es mal mit SET login_lastlogin = Now()

    Kommentar


    • #3
      wenn du liest, steht direkt unter dem quellcode:
      Die spalte in der DB ist definiert als Date.
      MIt Now() funktioniert es auch nicht..
      TimeToStr auch nicht... :/

      Kommentar


      • #4
        und wo befindet sich die zugehörige mysql_query() nebst mysql_error() ?

        Kommentar


        • #5
          hier noch der rest des codes:
          PHP-Code:
          <?php
          //...
           
          mysql_query($sql) or die( 'Error[UPDATE|User]: 

                                                                      <pre>' 
          $sql '</pre>
                                                                      

                                                                      MySQL-Error: ' 
          mysql_error() );

                       
          // Der Login war erfolgreich und der User wird zur Startseite des
                       // passwortgeschützen Bereichs weitergeleitet.
                       
          header'Location: startseite.php?PHPSESSID='.session_id());
                       exit();
                    }
          //...
          ?>

          Kommentar


          • #6
            Syntaktisch ist der SQL-String korrekt.
            Du solltest diesen mal zur Überprüfung ausgeben lassen (insbesondere ob $user->_id korrekt gesetzt ist).

            Sonst sollte es keine Probleme geben.

            Kommentar


            • #7
              der wert wird korrekt übergeben.
              es liegt wohl an der zeitformatierung :/ aber ich stehe auf meiner leitung diesbezüglich

              Kommentar


              • #8
                An der Zeitformatierung sollte es nicht liegen (Date hat das Format YYYY-MM-DD), wie sieht denn der generierte SQL-String aus?

                [edit]Check zur Sicherheit nochmal dein Feldtype, evtl Datetime?[/edit]

                Kommentar


                • #9
                  es geht... du hattest zuvor recht, wo du meintest dass die id nicht richtig übergeben wird. hatte dort einen schreibfehler...
                  ich dachte die wir korrekt übergeben, da man an die "geheime" seite weitergeleitet wird.
                  naja nun hab ich auch gleich noch ne sicherheitslücke geschlossen
                  danke.

                  Kommentar


                  • #10
                    nochma ne frage zur formatierung..
                    wenn ich nun datetime statt date für die spalte nehme, dann sieht die so aus:
                    0000-00-00 00:00:00.

                    wir erinnern uns:
                    PHP-Code:
                    <?php
                    $aktuell 
                    date('Y-m-d');
                    ?>
                    wie müsste ich dies nun machen, wenn ich minuten stunden nd sekunden einbeziehen möchte?
                    wie ist überhaupt der aufbau?
                    hh:mm:ss ??

                    Kommentar


                    • #11
                      Wenn es mit Now() nicht funktioniert,
                      - machst Du was falsch ( zB SET xyz='Now()' )
                      - ist Dein mysql Server seltsam
                      - ist Dein php seltsam.
                      Such Dir was aus. Now() funktioniert.

                      Probier mal
                      SELECT Now()
                      aus. Das muss die aktuelle Zeit samt Datum zurückliefern.

                      Für ein DATE Feld reicht auch Curdate() aus, macht aber keinen Unterschied.

                      Beides nachzulesen unter http://dev.mysql.com/doc/mysql/de/da...functions.html

                      Kommentar


                      • #12
                        ich dachte die wir korrekt übergeben, da man an die "geheime" seite weitergeleitet wird.
                        Sorry, aber du sollst nicht denken, ob korrekt übergeben wird, sondern überprüfen!

                        Zitat von GrU3nL!nG
                        nochma ne frage zur formatierung..
                        wenn ich nun datetime statt date für die spalte nehme, dann sieht die so aus:
                        0000-00-00 00:00:00.

                        wir erinnern uns:
                        PHP-Code:
                        <?php
                        $aktuell 
                        date('Y-m-d');
                        ?>
                        wie müsste ich dies nun machen, wenn ich minuten stunden nd sekunden einbeziehen möchte?
                        wie ist überhaupt der aufbau?
                        hh:mm:ss ??
                        Wir errinern uns an das PHP-Manual
                        http://www.php.net/manual/de/function.date.php

                        Ansonsten auch den Beitrag von @Bruchpilot beachten.

                        Kommentar


                        • #13
                          also Now() funktioniert nicht denn dann füllt er mir die db mit keinem wert...
                          also ist meine db und mein php komisch....

                          Kommentar


                          • #14
                            Was gibt dir denn "SELECT NOW()" zurück?
                            Welche MySQL-Version hast du?

                            Kommentar


                            • #15
                              Servus du kannst dir das datum auch anders ausgeben lassen

                              PHP-Code:
                              <?php
                              $aktuell 
                              date('d.m.Y , H:m:s');
                              echo 
                              $aktuell;

                              ?>
                              Wenn es dich weiterbringt

                              http://www.selfphpfriend.de/funktion...ionen/date.php
                              Hier nochmal ein Link mit genauerenInfos zu date()

                              Viel vergnügen

                              Kommentar

                              Lädt...
                              X