Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Значения из базы для графика
 
 автор: Digidie   (25.04.2012 в 11:52)   письмо автору
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. Изображение прикрепил

  Ответить  
 
 автор: Valick   (25.04.2012 в 12:53)   письмо автору
 
   для: Digidie   (25.04.2012 в 11:52)
 

Все запросы написаны правильно.

сильно сомневаюсь что это так
поля checkdate и checktime какие типы имеют?

у вас везде лимит 10 строк, разные размеры массивов обусловлены количеством уникальных / не уникальных данных в таблице так как в запросе фигурирует DISTINCT
у вас не логика, а лотерея (а как известно в лотерею чаще проигрывают, а не наоборот)

  Ответить  
 
 автор: Digidie   (25.04.2012 в 13:08)   письмо автору
 
   для: Valick   (25.04.2012 в 12:53)
 

поля checkdate и checktime имеют тип varchar. Эти значения заносятся в базу при помощи функций date() и time(). Подскажите что можно сделать?

  Ответить  
 
 автор: Valick   (25.04.2012 в 13:15)   письмо автору
 
   для: Digidie   (25.04.2012 в 13:08)
 

Есть база данных в которой лежат даты, время и названия.
Основываясь на этих данных строится график.

для того что бы ответить, нужно знать что за даты, что за время и что за названия, как они связаны между собой, почему именно дата и время в разных полях, почему именно тип vаrchar, а не один из специально предназначенных типов
Что за график вы хотите получить, так как судя по запросам это три непонятно каким образом связанных графика
Подскажите что можно сделать?
это самое сложное, теряюсь в оценке уровня вашей подготовки с работой в бд

  Ответить  
 
 автор: Digidie   (25.04.2012 в 13:48)   письмо автору
 
   для: Valick   (25.04.2012 в 13:15)
 

это мониторинг серверов. Названия - это имена серверов. Дата и время - когда был проверен сервер на работоспособность. Запросы нужны для того чтобы вытащить дату время и названия серверов,чтобы потом значения этих трех полей были точками на графике. Собственно график показывает: по оси y - время(как видно из запроса там округление до одного часа), по оси x - дату(почему то в формате d не подставилось.). Линии это сервера. в общем график должен показывать спад или повышение работоспособности серверов. Если выкл то вниз, если вкл то вверх. Как то так.

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования