Jeg er ved at lave noget online count og har fundet det her gamle kode
$SQLonlineCOUNT = mysql_query("SELECT COUNT(*) AS count FROM profiler WHERE kon = 'kvinde' AND NOW() <= DATE_ADD(CONCAT(SUBSTRING(profiler.onlinetime,7,4),'-',SUBSTRING(profiler.onlinetime,4,2),'-',SUBSTRING(profiler.onlinetime,1,2),' ',SUBSTRING(profiler.onlinetime,12,8)),INTERVAL 1 MINUTE)") or die(mysql_error()); $RSonlineCOUNT = mysql_fetch_array($SQLonlineCOUNT);
i tabellen profiler er der en kolonne der hedder onlinetime og der stå deres sidste reload af en side så den indholder datoen 2015-10-18 13:33:34 men hvordan skal jeg lave sql udtrækket så den tæller det rigtige ?
Det ville være meget nemmere at gemme onlinetime som en DATETIME, og så bare få PHP til at vende den om, når den skal vises på siden. Det er altid noget rod at blande de rå data sammen med GUI-visning.
okay cool nu har jeg lave det her $SQLonlineCOUNT = mysql_query("SELECT COUNT(*) AS count FROM profiler WHERE kon = 'kvinde' AND NOW() <= DATE_ADD(profiler.onlinetime,INTERVAL 1 MINUTE)") or die(mysql_error()); $RSonlineCOUNT = mysql_fetch_array($SQLonlineCOUNT);
men den er da ligeglad med om det er over 1 minuts forskæl på de to tider Jeg skal bruge den til en online liste
Så er spørgsmålet hvad du vil. Er onlinetime tidspunktet for brugerens sidste login? Så får du antallet på alle dem, der er logget ind fra om +1 minut. Det er vel alle - der er ikke mange der kan logge ind i fremtiden.
Ja jeg vil have alle dem der er logget inde for det sidste min men skal rette det så det er dem der er logget ind inden for desidste 15min det lyder mere rimligt ;D
Lad os se. Klokken er måske 18.00 så vi skal have dem, der er logget ind mellem 17.45 og 18.00, så onlinetime skal være >= 17.45 og <= 18.00. Det sidste er ligemeget, for man kan ikke logge ind i fremtiden, formentlig.
Så hvis onlinetiden +15 minutter ligger efter now. Dvs. 17.45 bliver 18.00, 17.50 bliver til 18.05 osv. så må det være noget med onlinetid+15 >= now() - og det er hvad du har nu ..... hvad er det der ikke virker?
$SQLonlineCOUNT = mysql_query("SELECT COUNT(*) AS count FROM profiler WHERE kon = 'kvinde' AND NOW() <= DATE_ADD(profiler.onlinetime,INTERVAL 15 MINUTE)") or die(mysql_error()); $RSonlineCOUNT = mysql_fetch_array($SQLonlineCOUNT); og online time i dben er 2015-10-18 18:20:34
og nu ville jeg tælle dem der er logget ind mellem 18:20 og 18:35 og ikke dem der er logget ind kl 18:19
nåå ja skal jeg gøre. men nu når jeg har dig ville jeg lige spørge dig om hvordan du så ville oversætte den her.
SQLCookie_1 = "select hotbilleder.* from ( hotbilleder LEFT JOIN profiler ON (hotbilleder.profilerID = profiler.id) ) LEFT JOIN blockliste ON profiler.id = blockliste.profilerID where (blockliste.blockID <> '"&session("ID")&"' or blockliste.blockID is null) AND hotbilleder.godkendt = '1' AND profiler.kon = '1' AND profiler.id <> '"& session("ID") &"' and NOW() >= DATE_ADD(CONCAT(SUBSTRING(profiler.onlinetime,7,4),'-',SUBSTRING(profiler.onlinetime,4,2),'-',SUBSTRING(profiler.onlinetime,1,2),' ',SUBSTRING(profiler.onlinetime,12,8)),INTERVAL 1 MINUTE) ORDER BY RAND()"
Jeg bruger DATETIME i databasen og den sql er er vist ikke i det, Jeg køre php og det her er fra et asp script
SQLCookie_1 = "select hotbilleder.* from ( hotbilleder LEFT JOIN profiler ON (hotbilleder.profilerID = profiler.id) ) LEFT JOIN blockliste ON profiler.id = blockliste.profilerID where (blockliste.blockID <> '"&session("ID")&"' or blockliste.blockID is null) AND hotbilleder.godkendt = '1' AND profiler.kon = '1' AND profiler.id <> '"& session("ID") &"' and NOW() >= DATE_ADD(CONCAT(SUBSTRING(profiler.onlinetime,7,4),'-',SUBSTRING(profiler.onlinetime,4,2),'-',SUBSTRING(profiler.onlinetime,1,2),' ',SUBSTRING(profiler.onlinetime,12,8)),INTERVAL 1 MINUTE) ORDER BY RAND()"
Og så skal du lade være med at opbevare datoer i databasen som: 31-12-2015, men bruge standardformen: 2015-12-31 dvs. datetime - så skal du ikke lave de der omskrivninger i SQL.
Synes godt om
Ny brugerNybegynder
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.