2012-01-29 48 views
2

我想构建一个统计图表,显示每天有多少用户注册过,也许还有其他一些数据。我有一个MySql表,用于存储他们注册的日期和用户名等。如何构建统计图?

我将如何构建这样的图表?我需要什么?

+0

您需要一个可以生成图像的php脚本。既可以自己创建一个,也可以选择已有的许多。一个简短的谷歌'PHP图形'将足够透露。检查http://graphpite.sourceforge.net/或http://jpgraph.net/download/ – Konerak 2012-01-29 13:14:56

+1

你知道关于[R](http://www.r-project.org/)的权利吗?你可以拉你的相关数据库数据,然后在R ... – learner 2012-01-29 13:17:32

+0

哦,我试图谷歌它,但没有PHP,我不知道我应该使用PHP或JS,但逻辑上我需要PHP阅读从分贝:) – Roland 2012-01-29 13:18:15

回答

3

您并不总是需要使用真实图形来做事情。

<?php 

// mysql connection setup 
// ... 

// Get the dates in a single SELECT. 2592000 seconds = 30 days 
$result = mysql_query("SELECT regdate FROM users WHERE regdate > NOW()-2592000"); 

foreach ($row = mysql_fetch_row($result)) { 
    $output[date("Y-m-d", strtotime($row['regdate']))]++; 
} 

$fmt = ' <tr><td>%s</td><td width="%s" background="#FF0000"> </td></tr>' . "\n"; 

?> 
<table border="0" cellspacing="0" cellpadding="0"><tr height="100"> 
<?php 

for ($date = time()-2592000; $date < time(); date += 86400) { 
    $thisdate = date("Y-m-d", $date); 
    printf($fmt, $thisdate, $output[$thisdate]); 
} 

?> 
</tr></table> 

?> 

显然未经测试。可能不完整。因人而异。盐适量。

+0

这听起来像个好主意。因为我已经下载了其他人在这里陈述的一些库,并且该语法已被弃用。 – Roland 2012-01-29 16:28:57

+0

另外我使用的是mysqli,我不使用'mysql_fetch_row($ result)',而是使用'$ stmt-> fetch()'等等。我如何做到这一点,我的意思是你的代码与mysqli交换。 – Roland 2012-01-29 16:31:01

+0

mysqli可以用OO或程序风格完成,你原来的问题没有指定mysqli。如果您有关于如何使用mysqli的问题,您可能需要单独提问。您似乎已经对此问题有多个答案。 – ghoti 2012-01-30 05:08:07

0

如果您只需要条形图,您可能会更好地使用计算高度的div s,所有这些都固定在底线上。这对于编写和使用少量的CPU,RAM和带宽来说是相当简单的。

3

构建图有很多种方法。我可以考虑一些方法,根据你的知识使用你认为最好的方法。

在每种情况下,您都需要查询您的数据库。所以MySQL的基础知识。

然后,您可以通过循环低谷结果集并通过简单的HTML div或使用GD库创建图来在服务器端创建图形。

或者您可以将结果集作为JSON对象发送,并使用简单的HTML div或canvas标签在客户端创建图形。

服务器端图很简单,但不能动画或更新而不刷新页面。客户端图需要额外的知识(JSON,安全等)

+0

我认为我更喜欢服务器端脚本,但是为了安全起见,图表位于登录页面后面,因此如果未登录,您将无法看到任何数据。 – Roland 2012-01-29 13:34:17

+1

当您创建客户端图形时,需要将结果来自HTTP请求者(AJAX)的数据库,并且可能在该请求中使用一些POST和GET数据。您需要注意SQL注入。 – akarave 2012-01-29 14:02:49