1

必要なのは、課題 ID を取得し、ユーザーが送信した賛成票を時間単位で追跡することです。PHPExcel のグラフ作成の目的で配列からデータを首尾一貫して取得しようとすると、壁にぶつかります。

最終的に、この $hourlyUpvotesTodayResult[] 配列は、1 時間ごとに正しい投票数 (print_r で検証) を持ちますが、「問題 ID ごとに、時間 0 ~ 24 および各時間の総投票数". たぶん私はそれを考えすぎて、単純なものを見逃しています。

また、古い MySQL は無視してください - 私はいくつかの既存のコードに取り組んでおり、それが非推奨であることを知っており、いつか更新するつもりです :D

while ($todayInfoRow = mysql_fetch_array($todayInfoQuery))
    {
    $issue_entry_id_today = array($todayInfoRow['issue_entry_id']);
    foreach ($issue_entry_id_today as $issue_entry_id_today)
        {
        $todayInfoUpvotes = "SELECT id from $db.$tb2 WHERE date = '".$date."' and issue_entry_id = '".$issue_entry_id_today."' ORDER BY issue_entry_id DESC";
        $todayInfoUpvotesQuery = mysql_query($todayInfoUpvotes)or die(mysql_error());
        $todayInfoUpvotesRow = mysql_num_rows($todayInfoUpvotesQuery);
        $todayInfoResult = array($issue_entry_id_today, $todayInfoUpvotesRow);
        }
    // get votes for individual hours for today 
    for ($hour_today=0; $hour_today<25; $hour_today++)
        {
            $hourlyUpvotesToday = "SELECT id from $db.$tb2 WHERE date = '".mysql_real_escape_string($date)."' AND issue_entry_id = '".$issue_entry_id_today."' AND hour = '".$hour_today."' ORDER BY issue_entry_id DESC";
            $hourlyUpvotesTodayQuery = mysql_query($hourlyUpvotesToday)or die(mysql_error());
            $hourlyUpvotesTodayRow = mysql_num_rows($hourlyUpvotesTodayQuery);
            $hourlyUpvotesTodayResult[] = array('id'=>$issue_entry_id_today, 'upvotes'=>$hourlyUpvotesTodayRow, 'hour'=>$hour);
        } 
    }
//debug print array
print_r($hourlyUpvotesTodayResult);
4

1 に答える 1

1

あなたのコードは、少し余分な情報を含む配列を作成します。次の配列を作成する代わりに:

時間番号

識別番号

時間

投票

次の結果になるものを作成します。

識別番号

[時間] -> 投票

今回は、ID 番号がキーになり、時間が X 値になり、投票が Y 値になります (基本的な XY 軸チャートを参照)。配列は次のように変更されます。

$hourlyUpvotesTodayResult[$issue_entry_id_today] = array($hour => $hourlyUpvotesTodayRow);

上記の foreach ステートメント内に for ステートメント全体を配置する必要があります。次に、必要に応じて発行番号ごとにそれぞれを印刷できます。

PHPExcel についてはわかりませんが、基本的に同じ foreach { for {} } グループ ループを実行することでこれを投稿できます。今回は、既に配列にあるため、SQL 呼び出しを使用しません。

for() ループの外側には、次のようなものを配置します。

print "ID number for this issue: " . $issue_entry_id_today . "<br>";

そのループ内には、次のものがあります。

print "Hour " . $hour . " produced " . $hourlyUpvotesTodayResult[$issue_entry_id_today][$hour] . " votes.";

そして、それをテーブルやdivなど、必要なものに入れることができます。

お役に立てれば。

于 2013-09-18T03:55:31.713 に答える