Frågan 21 jan. 2009 17:11 #1 Vilket sätt är "bäst" att använda?
// Alt. 1
$sql = mysql_query('SELECT COUNT(id) AS num_mem FROM users WHERE ADDDATE(added, INTERVAL 1 DAY) > NOW()');
$medlemmar = mysql_result($sql,0);
//Alt. 2
$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));
function get_dt_num()
{
return gmdate("YmdHis");
}
Båda alternativen visar "fel" antal. :o
Peter S skrev:
Vilket resultat får du och vilket resultat förväntade du dig?
Hur vet du att du får fel antal?
Jag får fler resultat än vad som "stämmer".
Verkar som att jag även får resultat för igår. :x
// Alt. 1
$sql = mysql_query('SELECT COUNT(id) AS num_mem FROM users WHERE ADDDATE(added, INTERVAL 1 DAY) > NOW()');
$medlemmar = mysql_result($sql,0);
//Alt. 2
$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));
..ger precis samma resultat, (som är fel).
P Peter S Medlem sedan dec. 2002 5 483 inlägg Testa att se vad du får med "SELECT NOW(), ADDDATE(added, INTERVAL 1 DAY) FROM users ORDER BY id LIMIT 10". Då ser du om ADDATE() gör vad du tror att den gör.
Valde att använda följande kod istället.
$medlemmar = number_format(get_row_count("users", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));
Verkar fungera nu helt plötsligt. (Gjorde inte det innan.) :o
EDIT: Om jag testar liknande för hur många inlägg som har postats IDAG, så får jag 20 istället för 14 (som är rätt).
$inlagg_dag = number_format(get_row_count("posts", "WHERE UNIX_TIMESTAMP(" . get_dt_num() . ") - UNIX_TIMESTAMP(added) < 86400"));
Ger f*n upp snart. :(
Vill alltså endast visa hur många som har reggat sig under dagen IDAG (2009-01-21) fram till nuvarande tid (22:41).
EDIT: Har löst det.
$medlemmar = number_format(get_row_count("users", "WHERE added >= DATE(NOW())"))
;