0

我正在比较 2 个 twitter 用户谁在特定日期收到最多推文,并将其放在 Highcharts 的折线图中,我有以下 mysql 代码:

<?php 

require('mysql_connect.php');

$artist1 = $_POST['dj1'];
$artist2 = $_POST['dj2'];
$dates_result = mysqli_query($con,"SELECT DISTINCT(tweetDate) FROM tb_tweetDetails");
while ($row = mysqli_fetch_array($dates_result)) {
$dates[] = $row['tweetDate'];
}
$artist1_tweetsADay_result =    mysqli_query($con,"SELECT tweetDate,COUNT('tweetIds') AS 'amountTweets' FROM tb_tweetDetails WHERE tweetId IN 
                            (SELECT tweetId FROM tb_tweetLink LEFT JOIN tb_artists ON 
                            (tb_tweetLink.artistId = tb_artists.artistId) where artistName = '$artist1') GROUP BY tweetDate");
while ($row = mysqli_fetch_array($artist1_tweetsADay_result)) {
$artist1_tweetsADay_date[] = "'" . $row['tweetDate'] . "'";
$artist1_tweetsADay_amount[] = $row['amountTweets'];
}
$artist1_tweetsADay_result =    mysqli_query($con,"SELECT tweetDate,COUNT('tweetIds') AS 'amountTweets' FROM tb_tweetDetails WHERE tweetId IN 
                            (SELECT tweetId FROM tb_tweetLink LEFT JOIN tb_artists ON 
                            (tb_tweetLink.artistId = tb_artists.artistId) where artistName = '$artist2') GROUP BY tweetDate");
while ($row = mysqli_fetch_array($artist1_tweetsADay_result)) {
$artist2_tweetsADay_date[] = "'" . $row['tweetDate'] . "'";
$artist2_tweetsADay_amount[] = $row['amountTweets'];
}


?>

我用它来收集我收集推文数据的所有可用日期(也来自其他选定的 2 位艺术家)

然后我得到用户当天收到的推文数量以及日期。这一切都很好,输出如我所料。

现在,当我将其放入图表时,我将日期数组作为 xAxis 类别。并将两位艺术家的 tweetAmount 放入数据输入中以创建两条线。

问题是:

艺术家 1 的数据为 06-04-2013、08-04-2013 和 10-04-2013 艺术家 2 的数据为 07-04-2013、08-04-2013、09-04-2013 和 10-04-2013 (所以每天实际上都在我的数据库中)

艺术家 2 将在 06-04-2013 获得 07-04-2013 的数据(因为该值是第一位的)艺术家 1 和 2 在 07-04-2013 类别下拥有 08-04-2013,因为这是第二个可用日期.

等等等等

是否有可能我可以使用日期数组来修复推文数量的数组,以便每个丢失的日期都分配给它 0 以便该行与日期保持正确。

4

1 回答 1

0

为了实现这一点,我会做两件事:

1) 使用日期时间 x 轴

2) 在从表中提取数据时,除了您已经构建的数组之外,还创建一个包含每个返回日期的数组。遍历日期数组,并为每个日期检查各个数组的值。如果不存在值,则创建它。

然后,您将拥有两个具有相同日期的数组,您可以将它们绘制在日期时间轴上,而不必担心类别索引匹配。

于 2013-04-11T18:02:30.663 回答