Display all records for mySQL field and count how many times they appear for specific date
My desired result is to display how many times each video (title) was watched for specific dates, by grabbing all of the titles that appear in the table, and count how many times that title is recorded for specific years / months.
It is working, however, it is not displaying correctly.
Instead of
TITLE A - 2
TITLE B - 6 TITLE C - 4 TITLE D - 0...
It is displaying like this
TITLE A - 2
- 开发者_高级运维6 - 4 TITLE BTITLECTITLEDmy code:
    //get report
    if ($_GET['report'] == "custom") {          //custom date report
        $month = $_GET['month'];
        $year = $_GET['year'];
            $result2 = mysql_query("SELECT DISTINCT title AS displaytitle 
FROM user_history GROUP by title");
        if ($_GET['month'] == "") {
            $result = mysql_query("SELECT title, COUNT(id) FROM user_history
 WHERE year(date) = '$year' GROUP BY title");
        } else {
            $result = mysql_query("SELECT title, COUNT(id) FROM user_history
 WHERE year(date) = '$year' AND month(date) = '$month' GROUP BY title");
        }
            while($row2 = mysql_fetch_array($result2)) {
            $new_title = $row2['displaytitle'];
            echo $row2['displaytitle'];
                while($row = mysql_fetch_array($result)) {
                    echo ' - ' . $row['COUNT(id)'] . '<br />';
                }
    }   
Can anyone offer a solution so that a count will display next to the title? Thanks!
Your code to display the title is outside the loop. If you want the title to be printed next to every value, put it inside the loop printing every value.
if ($_GET['report'] == "custom") {          //custom date report
    $sql = "
    SELECT
      titles.title,
      COUNT(DISTINCT history.id) AS `count`
    FROM
      user_history titles
    LEFT OUTER JOIN
      user_history history
    ON
      titles.title = history.title
    ";
    if (!empty($_GET['month']) && !empty($_GET['year'])) {
      $sql .= "AND YEAR(history.date) = " . (int)$_GET['year'] . " AND MONTH(history.date) = " . (int)$_GET['month'];
    } else if (!empty($_GET['year'])) {
      $sql .= "AND YEAR(history.date) = " . (int)$_GET['year'];
    }
    $sql .= "
    GROUP BY 
      titles.title
    ORDER BY 
      titles.title
    ";
    $result = mysql_query($sql);
    while ($row = mysql_fetch_array($result)) {
      echo $row['title'] . ' - ' . $row['count'] . '<br />';
    }
}
 
         加载中,请稍侯......
 加载中,请稍侯......
      
精彩评论