Как извлекать данные MySQL по месяцам и по дням, чтобы заполнить таблицу для рисования графа с использованием PHP libchart? - PullRequest
0 голосов
/ 02 сентября 2011

У меня есть таблица, в которой есть такие строки, как CALL_ID, Timestamp, Date, First_Name, Last_Name, Status и т. Д.

Что мне нужно сделать, это нарисовать графики на основе данных, отфильтрованных в соответствии с ихдаты.Это для графика «Месяц на дату». Мне нужно показать количество строк, соответствующих статусу = утверждено для каждого дня месяца до текущей даты.

И для графика «С начала года»:Мне нужно показать количество строк, соответствующих статусу = утверждено для каждого месяца года до текущего месяца.

Моя идея сделать это так -

Для текущего месяца:

$temp = date("Y-m-");
while($i<=date("d"))
{
$query = "SELECT call_id FROM main WHERE status='approved' AND date='".$temp.$i."'";
$result = mysql_query($query, $link) or die("",mysql_error());
$count[i]= mysql_num_rows($result);
}

Для даты в год:

while ($i <= date("m"))
{
    $query = "SELECT call_id FROM main WHERE status='approved' AND date BETWEEN'".$today_y."-".$i."-01' AND '".$today_y."-".$i."-31";
    $result = mysql_query($query, $link) or die("",mysql_error());
    $count_y[i]= mysql_num_rows($result);
}

А потом я думал о том, чтобы поместить эти числа, присутствующие в массиве, с помощью цикла while в другие временные таблицы (один дляMTD и один для YTD), а затем с помощью PHP libchart нарисовать график из этих таблиц.

Есть ли лучший способ сделать это?Или это единственный способ?

1 Ответ

4 голосов
/ 02 сентября 2011

Вы можете сделать это намного проще, просто используя mysql и избавляясь от многих ваших php-циклов.Что-то вроде этого для месяца к дате:

$query="SELECT COUNT(call_id) as 'num_records', date FROM main WHERE status='approved' AND CONCAT(YEAR(date),MONTH(date)) = CONCAT(YEAR(NOW()),MONTH(NOW())) GROUP BY date

Этот запрос даст строку, показывающую дату и общее количество записей за этот день, для каждого дня месяца к дате.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...