Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> отобразить чарт с GOOGLE API, в php полный ноль 
:(
    Опции темы
qpile
Дата 4.2.2010, 21:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



Здравствуйте. У меня есть сайт. У хостера лежит база MYSQL. Мне нужно выдернуть значения из этой базы и послать их гугл чарту и вернуть уже полноценную картинку в отдельном окне( что бы картинка была полность в окне) .. Скажите пожалуста как мне это сджелать..Дайте плиз подробную инструкцию..Спасибо!
PM MAIL   Вверх
Guedda
Дата 5.2.2010, 10:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Подрывник
****


Профиль
Группа: Завсегдатай
Сообщений: 3137
Регистрация: 27.12.2005
Где: Ростов-на-Дону

Репутация: 13
Всего: 78



Если это, конечно, возможно... Не могли бы Вы описать проблему подробнее? Что именно Вам необходимо экспортировать?


--------------------
Ll 2
PM MAIL WWW ICQ Skype GTalk   Вверх
Ипатьев
Дата 5.2.2010, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

Репутация: 28
Всего: 37



чтобы отобразить картинку в гугле чарт, надо всего лишь составить строку со значениями
обычный квери стринг, param1=1&param2=2 и так далее.

Но для этого, разумеется, надо знать, во-первых, какие параметры ты хочешь послать, а, во-вторых - уметь доставать данные из базы и работать со строками.
В противном случае "подробная инструкция" - это php.net
PM MAIL   Вверх
qpile
Дата 5.2.2010, 16:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



я с MYSQL работаю нормально..JAVA или DELPHI данные выдергиваю без проблем. Сейчас прослушиваю TUTORIAL  на ютубе. Мне просто несколько советов как это реализовать ..Заранее спасибо
PM MAIL   Вверх
qpile
Дата 7.2.2010, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



Вроде чуть чуть разобрался..Есть класс для построения GOOGLE CHARTS:
Код

<?php

#
# Chart
#

# Copyright (c) 2008 Ludwig Pettersson

# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:

# The above copyright notice and this permission notice shall be included in
# all copies or substantial portions of the Software.

# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
# THE SOFTWARE.

class GoogChart
{
    // Constants
    const BASE = 'http://chart.apis.google.com/chart?';

    // Variables
    protected $types = array(
                            'pie' => 'p',
                            'line' => 'lc',
                            'sparkline' => 'ls',
                            'bar-horizontal' => 'bhg',
                            'bar-vertical' => 'bvg',
                        );

    protected $type;
    protected $title;
    protected $data = array();
    protected $size = array();
    protected $color = array();
    protected $fill = array();
    protected $labelsXY = false;
    protected $legend;
    protected $useLegend = true;
    protected $background = 'a,s,ffffff';

    protected $query = array();

    // debug
    public $debug = array();

    // Return string
    public function __toString()
    {
        return $this->display();
    }


    /** Create chart
    */
    protected function display()
    {
        // Create query
        $this->query = array(
                            'cht'     => $this->types[strtolower($this->type)],                    // Type
                            'chtt'     => $this->title,                                            // Title
                            'chd' => 't:'.$this->data['values'],                                // Data
                            'chl'   => $this->data['names'],                                    // Data labels
                            'chdl' => ( ($this->useLegend) && (is_array($this->legend)) ) ? implode('|',$this->legend) : null, // Data legend
                            'chs'   => $this->size[0].'x'.$this->size[1],                        // Size
                            'chco'   => preg_replace( '/[#]+/', '', implode(',',$this->color)), // Color ( Remove # from string )
                            'chm'   => preg_replace( '/[#]+/', '', implode('|',$this->fill)),   // Fill ( Remove # from string )
                            'chxt' => ( $this->labelsXY == true) ? 'x,y' : null,                // X & Y axis labels
                            'chf' => preg_replace( '/[#]+/', '', $this->background),            // Background color ( Remove # from string )
                        );

        // Return chart
        return $this->img(
                    GoogChart::BASE.http_build_query($this->query),
                    $this->title
                );
    }

    /** Set attributes
    */
    public function setChartAttrs( $attrs )
    {
        // debug
        $this->debug[] = $attrs;

        foreach( $attrs as $key => $value )
        {
            $this->{"set$key"}($value);
        }
    }

    /** Set type
    */
    protected function setType( $type )
    {
        $this->type = $type;
    }


    /** Set title
    */
    protected function setTitle( $title )
    {
        $this->title = $title;
    }


    /** Set data
    */
    protected function setData( $data )
    {
        // Clear any previous data
        unset( $this->data );

        // Check if multiple data
        if( is_array(reset($data)) )
        {
            /** Multiple sets of data
            */
            foreach( $data as $key => $value )
            {
                // Add data values
                $this->data['values'][] = implode( ',', $value );

                // Add data names
                $this->data['names'] = implode( '|', array_keys( $value ) );
            }
            /** Implode data correctly
            */
            $this->data['values'] = implode('|', $this->data['values']);
            /** Create legend
            */
            $this->legend = array_keys( $data );
        }
        else
        {
            /** Single set of data
            */
            // Add data values
            $this->data['values'] = implode( ',', $data );

            // Add data names
            $this->data['names'] = implode( '|', array_keys( $data ) );
        }

    }

    /** Set legend
    */
    protected function setLegend( $legend )
    {
        $this->useLegend = $legend;
    }

    /** Set size
    */
    protected function setSize( $width, $height = null )
    {
        // check if width contains multiple params
        if(is_array( $width ) )
        {
            $this->size = $width;
        }
        else
        {
            // set each individually
            $this->size[] = $width;
            $this->size[] = $height;
        }
    }

    /** Set color
    */
    protected function setColor( $color )
    {
        $this->color = $color;
    }

    /** Set labels
    */
    protected function setLabelsXY( $labels )
    {
        $this->labelsXY = $labels;
    }

    /** Set fill
    */
    protected function setFill( $fill )
    {
        // Fill must have atleast 4 parameters
        if( count( $fill ) < 4 )
        {
            // Add remaining params
            $count = count( $fill );
            for( $i = 0; $i < $count; ++$i )
                $fill[$i] = 'b,'.$fill[$i].','.$i.','.($i+1).',0';
        }
        
        $this->fill = $fill;
    }


    /** Set background
    */
    protected function setBackground( $background )
    {
        $this->background = 'bg,s,'.$background;
    }

    /** Create img html tag
    */
    protected function img( $url, $alt = null )
    {
        return sprintf('<img src="%s" alt="%s" style="width:%spx;height:%spx;" />', $url, $alt, $this->size[0], $this->size[1]);
    }


}



На основе примера пробую сделать свой чарт..Данные выдергиваю из базы и вставляю  в чарт
Код

<div style="margin: 0 auto;display:block;width:100%;">
<?php


$host="localhost";
$username="root";
$pass="";
$db_name="quote";

//connect
$con =mysql_connect("$host","$username","$pass") or die("Не удалось приконнектиться к серверу");
mysql_select_db("$db_name") or die ("Нет коннекта к таблицы");

$result = mysql_query("SELECT * FROM quote.iv limit 5");




/** Include class */
include( 'GoogChart.class.php' );

/** Create chart */
$chart = new GoogChart();


/*

        Example 1
        Pie chart

*/

// Set graph data

while($row = mysql_fetch_array($result))
{
$data = array($row['time'] => $row['price']);
echo $row['time'].' '.$row['price'].' <br/>';
}

mysql_close($con);
$data = array('IE7' => 22,
            'IE6' => 30.7,
            'IE5' => 1.7,
            'Firefox' => 36.5,
            'Mozilla' => 1.1,
            'Safari' => 2,
            'Opera' => 1.4,);


// Set graph colors
$color = array(
            '#99C754',
            '#54C7C5',
            '#999999',
        );

/* # Chart 1 # */
echo '<h2>Pie chart</h2>';
$chart->setChartAttrs( array(
    'type' => 'pie',
    'title' => 'Implied Volatility',
    'data' => $data,
    'size' => array( 600, 400 ),
    'color' => $color
    ));
// Print chart
echo $chart;



?>
</div>



Но у меня  логическая ошибка в том месте где я задаю array :
Код

while($row = mysql_fetch_array($result))
{
$data = array($row['time'] => $row['price']);
echo $row['time'].' '.$row['price'].' <br/>';
}



ЧАрт получается в виде только одной точки..Кто нить может помочь в чем причина?

PM MAIL   Вверх
Simpliest
Дата 7.2.2010, 16:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 625
Регистрация: 1.9.2009

Репутация: 1
Всего: 3



В том что ты постоянно перезаписываешь 
Цитата(qpile @  7.2.2010,  14:40 Найти цитируемый пост)
$data =




--------------------
user posted image
PM   Вверх
qpile
Дата 7.2.2010, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



а как сделать так что бы не переписывалось?
PM MAIL   Вверх
awers
Дата 7.2.2010, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Код

while($row = mysql_fetch_array($result))
{
$data[] = array($row['time'] => $row['price']);
echo $row['time'].' '.$row['price'].' <br/>';
}

PM MAIL WWW ICQ Skype   Вверх
qpile
Дата 7.2.2010, 16:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



Я вот не пойму..Почему когда я задаю массив вот так :
Код

$data = array(
            '13:14:00' => 21,
            '13:15:00' => 11.7,
            '13:16:00' => 11.7,
            '13:17:00'=> 31.5,
            '13:18:00' => 11.1,

        );

у меня график от ГУГЛА обрисовывается..А вот если вот так
Код

$data = array();

while($row = mysql_fetch_array($result))
{
$data[] = array($row['time'] => $row['price']);
echo $row['time'].' '.$row['price'].' <br/>';
}


То ни фига , хотя значения и там и там одинаковые, просто в первом случае я забивал вручную.
PM MAIL   Вверх
awers
Дата 7.2.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



После while  сделайте print_r($data) и покажите сюда вывод
PM MAIL WWW ICQ Skype   Вверх
нуп
Дата 7.2.2010, 17:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ботокодер
**


Профиль
Группа: Участник
Сообщений: 987
Регистрация: 22.6.2009
Где: Кременчуг

Репутация: нет
Всего: 33



ты делаеш массив в массиве, а надо наверное 
Код

$data[$row['time']] =  $row['price'];


Это сообщение отредактировал(а) нуп - 7.2.2010, 17:30
PM MAIL   Вверх
qpile
Дата 7.2.2010, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 115
Регистрация: 12.8.2009

Репутация: нет
Всего: нет



Цитата(awers @ 7.2.2010,  15:29)
После while  сделайте print_r($data) и покажите сюда вывод

Array ( [0] => Array ( [13:14:00] => 137.077 ) [1] => Array ( [13:16:00] => 138.543 ) [2] => Array ( [13:17:00] => 138.358 ) [3] => Array ( [13:27:00] => 140.568 ) [4] => Array ( [13:28:00] => 140.414 ) )

Добавлено через 3 минуты и 29 секунд
Цитата(нуп @ 7.2.2010,  15:29)
ты делаеш массив в массиве, а надо наверное 
Код

$data[$row['time']] =  $row['price'];

В точку!! Спасибо всем!!! ТОлько вот теперь график отображается  в виже прямой линии...Наверное ось X масштабируется начиная с нуля.. Кто нить как это у гугл чарте исправить? 
PM MAIL   Вверх
awers
Дата 7.2.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: 21
Всего: 31



Цитата(qpile @  7.2.2010,  18:33 Найти цитируемый пост)
Array ( [0] => Array ( [13:14:00] => 137.077 ) [1] => Array ( [13:16:00] => 138.543 ) [2] => Array ( [13:17:00] => 138.358 ) [3] => Array ( [13:27:00] => 140.568 ) [4] => Array ( [13:28:00] => 140.414 ) ) 

Вот и ответ на твой вопрос smile
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

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

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1481 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.