Avatar billede tobrukDk Novice
10. juli 2013 - 09:22 Der er 8 kommentarer og
1 løsning

Fortælle databasen hvad tid man log ind på siden

Hej

Lige nu sidder jeg og arbejder med at databasen skal selv "updater" når en bruger logger ind på siden, skal den bare updater tid og dato, så at jeg kan gå ind og se det.

Jeg har prøve gøre sådan her:
http://billedeupload.dk/?v=ObY7Z.png

Så kommer den frem og siger "#1067 - Invalid default value for 'online_sidste'"


Håber du kan hjælp mig videre!
Avatar billede repox Seniormester
10. juli 2013 - 09:53 #1
Hvorfor bruger du ikke bare NOW() i din SQL forespørgsel?
Avatar billede michael_stim Ekspert
10. juli 2013 - 11:07 #2
Er nok inde på repox linje der. Desuden ville jeg ikke opdatere gamle poster, men adde hver gang bruger logger ind, så man kan bruge det til statistik og lignende. Det fylder ikke så meget, brugerid og tidspunkt, skulle du få mange indlog kan man rense en gang i mellem (automatisk eller manuelt).
Avatar billede tobrukDk Novice
10. juli 2013 - 12:33 #3
i tænker sådan her ;


if ($stmt = $this->mysqli->prepare('INSERT INTO `bruger` (`online_sidste`) VALUES (NOW())')) {



navn)            (datatype)
online_sidste    datetime

der kommer intet på databasen.
Avatar billede michael_stim Ekspert
10. juli 2013 - 13:13 #4
Ville jo nok ikke bruge brugertabellen, men lave en ny tabel med brugerid og datetimefelt. Bruger du den gamle tabel, skal du bruge update, ellers ved den jo ikke hvilken bruger den skal opdatere.

Har du dit felt som datetime, burde det fungere med NOW(), ellers kan du teste:

$tid = date('Y-m-d H:i:s');


i din PHP.
Avatar billede tobrukDk Novice
10. juli 2013 - 14:08 #5
Ja det er så rigtigt nok ;)

Når jeg prøver at ligge det ind i database med updater så gider den ikke!..


if($count > 0)
            {
                $_SESSION["logged_in"] = true;
                $_SESSION["id"] = $id;
                $_seesion["rank_hold"] = $rank_hold;
                $_SESSION["navn"] = $navn;
                $_SESSION["rank"] = $rank;
                $_SESSION["img"] = $img;
                $_SESSION["mail"] = $email_indhold;


                if($_SESSION["logged_in"] == true)
                {
                    if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `online_sidste`=? WHERE `id`=?')) {
                        $stmt->bind_param('ii', $online_sidste, $id);
                        $online_sidste = date();
                        $id = $_SESSION["id"];
                        $stmt->execute();
                        echo "Godkendt";   
                        $stmt->close();

                    } else {
                        echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
                    }                   
                }
                else
                {
                    echo "Prøve igen!";
                }
Avatar billede michael_stim Ekspert
10. juli 2013 - 15:04 #6
Enten bruger du datetime (string, integer hvis det er timestamp) i dine bind params:
if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `online_sidste`=? WHERE `id`=?')) {
$stmt->bind_param('si', $online_sidste, $id);
$online_sidste = date('Y-m-d H:i:s');
...

Eller også NOW() direkte:
if ($stmt = $this->mysqli->prepare('UPDATE `bruger` SET `online_sidste`=NOW() WHERE `id`=?')) {
$stmt->bind_param('i', $id);
...
Avatar billede tobrukDk Novice
11. juli 2013 - 15:39 #7
#michael_stim,

Lige et svar

jeg tog den første :)
Avatar billede michael_stim Ekspert
15. juli 2013 - 11:41 #8
Samler ikke, ellers tak.
Avatar billede tobrukDk Novice
15. juli 2013 - 22:04 #9
Okay lukker den selv så :) men tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester