|
 44.5 Кб |
|
| Доброго времени суток! Есть база данных в которой лежат даты, время и названия. Основываясь на этих данных строится график. Все запросы написаны правильно. Проблема совственно в чем - когда для графика вбиваешь значения по умолчанию(например в массиве). Все данные отображаются корректно. Нужно нарисовать 3 линии, но когда в массиве у всех трех линий количество ячеек одинаково всё работает правильно. А вот из базы приходит не одинаковое количество значений. Подскажите пожалуйста как это можно исправить.
//здесь запрос для линии с датами
$query = "SELECT DISTINCT ROUND(SUBSTRING(checkdate,9)) AS c FROM `logs` WHERE checkdate >= '{$date1}' and checkdate <= '{$date2}' ORDER BY c DESC LIMIT 10";
$dates = array();
$query = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($query))
{
$dates[] = $row['checkdate'];
}
//здесь будет формироваться верхяя линия с временем
$query = "SELECT DISTINCT ROUND(SUBSTRING(checktime,2,4)) FROM `logs` WHERE checkdate >= '{$date1}' and checkdate <= '{$date2}' ORDER BY checktime DESC LIMIT 10";
$times = array();
$query = mysql_query($query) or die(mysql_error());
while ($row = mysql_fetch_assoc($query))
{
$times[] = $row['checktime'];
}
$SQL = "SELECT DISTINCT servername,checkdate,checktime FROM logs WHERE status = 0 LIMIT 10;";
$res = mysql_query($SQL);
$names = array();
$arr['checkdate'][] = "";
$arr['checktime'][] = "";
while ($row = mysql_fetch_assoc($res))
{
$names[] = $row['servername'];
$dates[] = $row['checkdate'];
$times[] = $row['checktime'];
}
header("content-type: image/gif");
$MyData = new pData();
//Задаем входные точки для графика
if ($times !== $dates) {
$dates > $times;
}
//это будет рисоваться первая линия
$MyData->addPoints($times,"Serie1");
$MyData->setSerieDescription("Serie1", iconv('cp1251', 'utf-8', 'Serie1'));
$MyData->setSerieOnAxis("Serie1",0);
//это будет рисоваться вторая линия
$MyData->addPoints($times,"Serie2");
$MyData->setSerieDescription("Serie2", iconv('cp1251', 'utf-8', 'Serie2'));
$MyData->setSerieOnAxis("Serie2",0);
//это будет рисоваться третья линия
$MyData->addPoints($times,"Serie3");
$MyData->setSerieDescription("Serie3", iconv('cp1251', 'utf-8', 'Serie3'));
$MyData->setSerieOnAxis("Serie3",0);
$MyData->addPoints($dates,"Absissa"); //это будет рисоваться линия
$MyData->setAbscissa("Absissa");
|
P.S. Изображение прикрепил | |
|
|
|
|
|
|
|
для: Digidie
(25.04.2012 в 11:52)
| |
Все запросы написаны правильно.
|
сильно сомневаюсь что это так
поля checkdate и checktime какие типы имеют?
у вас везде лимит 10 строк, разные размеры массивов обусловлены количеством уникальных / не уникальных данных в таблице так как в запросе фигурирует DISTINCT
у вас не логика, а лотерея (а как известно в лотерею чаще проигрывают, а не наоборот) | |
|
|
|
|
|
|
|
для: Valick
(25.04.2012 в 12:53)
| | поля checkdate и checktime имеют тип varchar. Эти значения заносятся в базу при помощи функций date() и time(). Подскажите что можно сделать? | |
|
|
|
|
|
|
|
для: Digidie
(25.04.2012 в 13:08)
| | Есть база данных в которой лежат даты, время и названия.
Основываясь на этих данных строится график.
для того что бы ответить, нужно знать что за даты, что за время и что за названия, как они связаны между собой, почему именно дата и время в разных полях, почему именно тип vаrchar, а не один из специально предназначенных типов
Что за график вы хотите получить, так как судя по запросам это три непонятно каким образом связанных графика
Подскажите что можно сделать?
это самое сложное, теряюсь в оценке уровня вашей подготовки с работой в бд | |
|
|
|
|
|
|
|
для: Valick
(25.04.2012 в 13:15)
| | это мониторинг серверов. Названия - это имена серверов. Дата и время - когда был проверен сервер на работоспособность. Запросы нужны для того чтобы вытащить дату время и названия серверов,чтобы потом значения этих трех полей были точками на графике. Собственно график показывает: по оси y - время(как видно из запроса там округление до одного часа), по оси x - дату(почему то в формате d не подставилось.). Линии это сервера. в общем график должен показывать спад или повышение работоспособности серверов. Если выкл то вниз, если вкл то вверх. Как то так. | |
|
|
|