Avatar billede human Nybegynder
25. april 2004 - 20:35 Der er 32 kommentarer og
1 løsning

Tjekke forskel på NOW()

Heysa!

Jeg skal have en lille ting som siger noget lign: Du har x antal nye beskeder i din gb.

Hver gang brugeren logger ind, logges det tidspunkt han gør det på. I feltet last_login. Den bliver sat med NOW().

Hver gang en burger skriver i en anden brugers gb, bliver tidspunktet for det sat.
Så burde det vel være muligt, at få php til at tælle hvor mange indlæg der har været, siden han sidst var logget ind, ikke?

Men hvordan i alverden skal det script se ud? Og kan man gøre det på den måde?

Har lavet 2 queryes:

$query_log = mysql_query "SELECT last_login FROM du_users WHERE username='$Bruger'";
$result_log = mysql_query($query_log);
$row_log = mysql_fetch_array($result_log) or die(mysql_error());

$query_gb = mysql_query "SELECT tid FROM du_bruger_gb WHERE username='$Bruger'";
$result_gb = mysql_query($query_gb);
$row_gb = mysql_fetch_array($result_gb) or die(mysql_error());
Avatar billede dennismp Nybegynder
25. april 2004 - 20:43 #1
prøv
"SELECT count(1) FROM gæstebogmedinlæg WHERE dato > {$row['last_login']}"
Avatar billede human Nybegynder
25. april 2004 - 20:49 #2
Ja.. Lyder meget rigtigt.

Men er lige kommet til at tænke på noget. Denne besked skal jo vises når brugeren er logget ind, men hvis brugeren lige er logget, er tidspunktet jo blevet ændret.

Ergo vil der vel næppe være nogle indlæg, i følge tælleren, han ikke har læst, har jeg ret i dette? Hvis ja, hvordan kan det så laves?
Avatar billede human Nybegynder
25. april 2004 - 20:50 #3
Burde det ikke være mere rigtigt, at logge tidspunktet for hvornår han logger ud, eller er det mig som tager fejl?
Avatar billede dennismp Nybegynder
25. april 2004 - 20:51 #4
Kan du ikke, når han logger ind, gemme det gamle last_login i fx. $_SESSION, og så opdatere last_login i databasen. Og så bare bruge den (i session) til din sql?
Avatar billede human Nybegynder
25. april 2004 - 20:53 #5
Kunne man vel enlig godt. Men ville det stadig ikke være nemmere at gemme tidspunktet for hvornår han logger ud?
Avatar billede human Nybegynder
25. april 2004 - 20:54 #6
også bare modregne det tidspunkt for, hvornår indlægs har været skrevet?
Avatar billede human Nybegynder
25. april 2004 - 20:59 #7
Men det er selvfølgelig lidt svart at gøre hvis brugeren vælger at lukke browseren frem for at trykke på logout.

Prøver lige at fixe noget sammen der stemmer overens med det du sagdev :)
Avatar billede stalle Nybegynder
25. april 2004 - 21:01 #8
ellers, så tjek for indlæg der er nyere, ifølge databasen, INDEN du gemmer tidspunktet for det nuværende login.

Altså ved login:

1. Tjekke login-info.
2. Find indlæg der er nyere end sidste login.
3, Gem tidpunkt for nuværende login.
Avatar billede human Nybegynder
25. april 2004 - 21:06 #9
stalle: Kunne man vel..

Er bare meget i tvivl om hvordan der skal se ud med at tjekke for nye indlæg.
Avatar billede dennismp Nybegynder
25. april 2004 - 22:57 #10
Da jeg skulle lave noget ligende, brugte jeg session. Det var langt det nemmeste :-)
Avatar billede human Nybegynder
25. april 2004 - 23:10 #11
Hmm.. Jeg har forsøgt at bikse dette sammen. Men får et par fejl:

$query_log = mysql_query ("SELECT last_login FROM du_users WHERE username='$Bruger'");
$result_log = mysql_query($query_log);
$row_log = mysql_fetch_array($result_log) or die(mysql_error());

$last_login = $row_log['last_login'];
$_SESSION['last_login'] = $last_login;

$update = mysql_query("UPDATE du_users SET last_login=NOW() WHERE username='$Bruger'") or die (mysql_error());

$query_gb = mysql_query ("SELECT tid FROM du_bruger_gb WHERE username='$Bruger'");
$result_gb = mysql_query($query_gb);
$row_gb = mysql_fetch_array($result_gb) or die(mysql_error());

$dato_query = mysql_query ("SELECT count(1) FROM du_bruger_gb WHERE tid > $last_login");
$dato_result = mysql_query($dato_query);
$dato_row = mysql_fetch_array($dato_result) or die(mysql_error());

print "".$dato_row[tid]."";

Fejl:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource on line 27.

Linie 27: $row_log = mysql_fetch_array($result_log) or die(mysql_error());

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #5' at line 1
Avatar billede human Nybegynder
25. april 2004 - 23:11 #12
Smider den i en session i tilfælde af jeg skal bruge den på en anden side.
Avatar billede dennismp Nybegynder
25. april 2004 - 23:13 #13
tilføj or die(mysql_error()) til den mysql_query() .. over linje 27:
$result_log = mysql_query($query_log) or die(mysql_error());
Avatar billede human Nybegynder
25. april 2004 - 23:16 #14
Hmm.. Det gjorde jeg. Nu får jeg kun:

You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #5' at line 1
Avatar billede dennismp Nybegynder
25. april 2004 - 23:22 #15
Har du noget imod at liste hele scriptet?
Avatar billede human Nybegynder
25. april 2004 - 23:25 #16
Det var enlig stort set det hele:

session_start();
header("Cache-control: private");
require("inc/func_inc.php");
session_checker();
require("inc/conn_inc.php");
?>
<html>
<head>
<title></title>
<head>

<body>
<?php
$Bruger = $_SESSION['username'];
?>


Du blev logget ind!<br /><br />

<a href="http://www.buu.dk/deungedk/beta/logud.php">Logud</a><br />
<a href="http://www.buu.dk/deungedk/beta/brugerliste.php">Brugerliste</a>
<?php

$query_log = mysql_query ("SELECT last_login FROM du_users WHERE username='$Bruger'");
$result_log = mysql_query($query_log) or die(mysql_error());
$row_log = mysql_fetch_array($result_log) or die(mysql_error());

$last_login = $row_log['last_login'];
$_SESSION['last_login'] = $last_login;

$update = mysql_query("UPDATE du_users SET last_login=NOW() WHERE username='$Bruger'") or die (mysql_error());

$query_gb = mysql_query ("SELECT tid FROM du_bruger_gb WHERE username='$Bruger'");
$result_gb = mysql_query($query_gb);
$row_gb = mysql_fetch_array($result_gb) or die(mysql_error());

$dato_query = mysql_query ("SELECT count(1) FROM du_bruger_gb WHERE tid > $last_login");
$dato_result = mysql_query($dato_query);
$dato_row = mysql_fetch_array($dato_result) or die(mysql_error());

print "".$dato_row[tid]."";

?>


<?php
mysql_close($conn);
?>
</body>
</html>
Avatar billede dennismp Nybegynder
25. april 2004 - 23:28 #17
fjern (i bunden af scriptet)
$dato_result = mysql_query($dato_query);

og ret, så linjen under ser sådan her ud:
$dato_row = mysql_fetch_array($dato_query) or die(mysql_error());
Avatar billede human Nybegynder
25. april 2004 - 23:36 #18
Virkede ikke.. Får stadig
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #5' at line 1

hvis jeg altså forstod hvad du sagde rigtigt.
Har rettet det til:
$dato_query = mysql_query ("SELECT count(1) FROM du_bruger_gb WHERE tid > $last_login");
$dato_row = mysql_fetch_array($dato_query) or die(mysql_error());
Avatar billede dennismp Nybegynder
26. april 2004 - 00:21 #19
Ved du hvilken af sql'erne den brokker sig over?
Avatar billede human Nybegynder
26. april 2004 - 00:24 #20
nej.. Det siger den ikke noget om.. Men kan prøve at udkommentere en efter en.. Så burde jeg vel kunne se det.

3 sec
Avatar billede dennismp Nybegynder
26. april 2004 - 00:28 #21
du kunne også skrive noget forskelligt ud ved hver die.. fx

$row_log = mysql_fetch_array($result_log) or die("sql-2: " . mysql_error());
Avatar billede human Nybegynder
26. april 2004 - 00:28 #22
Hmm nej.. kommenterer jeg en efter en derned ad.. Får jeg stadig fejlen..

Har kigget i du_users og du_bruger_gb tabellerne, der er ingen af dem der er et id#5 i.

Hmm.. Nogen forslag? :/
Avatar billede human Nybegynder
26. april 2004 - 00:30 #23
$query_log = mysql_query ("SELECT last_login FROM du_users WHERE username='$Bruger'");
$result_log = mysql_query($query_log) or die("sql-1: " . mysql_error());
$row_log = mysql_fetch_array($result_log) or die("sql-2: " . mysql_error());

Fejlen ligger i sql-1.

sql-1: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #5' at line 1
Avatar billede dennismp Nybegynder
26. april 2004 - 00:33 #24
$query_log = mysql_query ("SELECT last_login FROM du_users WHERE username='$Bruger'");
$result_log = mysql_query($query_log) or die("sql-1: " . mysql_error());
$row_log = mysql_fetch_array($result_log) or die("sql-2: " . mysql_error());

du bruger mysql_query() på en sql statement. Dette giver en resource. Dette smider du igen til mysql_query() som brokker sig.. Jeg forstår ikke helt hvorfor du bruger mysql_query() to gange..

De 3 linjer skal se sådan her ud:

$query_log = mysql_query ("SELECT last_login FROM du_users WHERE username='$Bruger'");
$row_log = mysql_fetch_array($query_log) or die("sql-2: " . mysql_error());
Avatar billede human Nybegynder
26. april 2004 - 00:40 #25
Ved du hvad? Det har jeg absolut heller ikke. Det var ikke meningen der skulle have stået mysql_query i først line.. Men pyt, det er rettet.

Får nu fejl i:
$dato_query = mysql_query ("SELECT count(1) FROM du_bruger_gb WHERE tid > $last_login");
$dato_row = mysql_fetch_array($dato_query) or die("sql-4: " . mysql_error());

Fejl:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /web/www.doodoo.dk/www/deungedk/beta/loggetind.php on line 37
sql-4: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '00:37:48' at line 1

Line 37 er
$dato_row = mysql_fetch_array($dato_query) or die("sql-4: " . mysql_error());
Avatar billede dennismp Nybegynder
26. april 2004 - 00:42 #26
$dato_query = mysql_query ("SELECT count(1) FROM du_bruger_gb WHERE tid > '$last_login'");

(' om $last_login)
Avatar billede human Nybegynder
26. april 2004 - 00:46 #27
Ingen fejl nu.. Men får ikke nogen tid unskrevet når jeg siger:
print $dato_row[tid];
Avatar billede dennismp Nybegynder
26. april 2004 - 00:59 #28
print $dato_row[tid];

du selecter jo ikke tid fra den tabel, så prøv

$dato_query = mysql_query ("SELECT count(1) as count FROM du_bruger_gb WHERE tid > '$last_login'");

print $dato_row['count'];
Avatar billede human Nybegynder
26. april 2004 - 01:15 #29
Jamen top nice der!

Så virker skidtet.

Rigtig mange tak for din hjælp endnu engang :)

Smid et svar.


Nå ja.. Hvis du kigger på din karma, står der så ikke det er dig selv du har givet karma? Det der står ud fra dit navn, er mig der har skrevet. Buggy exp.dk :D
Avatar billede dennismp Nybegynder
26. april 2004 - 01:21 #30
Herligt :) Det var også op over - ville lige have lukket det her, før jeg smuttede iseng.

Karma er jo anonymt, så der står slet ikke nogle navne :)

God fornøjelse med resten af dit script. Husk endelig at sige til, hvis der er ting du ikke forstår.
Avatar billede human Nybegynder
26. april 2004 - 01:22 #31
Tjahh.. Jeg er ikke helt sikker på den sql query du lavede.. Men regner med at slå det op..

Anonymt? Jeg kan da se samtlige navne der har skrevet til dig. Og ved mig nick, der står dit nick istedet..
Avatar billede human Nybegynder
26. april 2004 - 01:23 #32
Nå pyt.. Muligt det er meningen ;)
Avatar billede dennismp Nybegynder
26. april 2004 - 16:00 #33
Really? Jeg kan kun se det folk har skrevet + rating. Nå, men udover den første rating jeg fik, så er folk jo generelt flinke mod mig :)
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