Visualizzazione dei risultati da 1 a 9 su 9
  1. #1

    ming: creazione grafico

    ciao, ho trovato su http://php.html.it/articoli/leggi/92...php-con-ming/6 un interessante metodo per far disegnare un grafico ad una pagina php. Però, non so perchè, io non ci riesco nemmeno seguendo passo a passo l'esempio ossi creando una pagina mggraph_vbar.class.php con questo codice:
    Codice PHP:
    <?php
    class MGGraph_VBar {
    function 
    MGGraph_VBar($width$height$minValue$maxValue$numGridLines$fontHeight$bgColor) {
       
    $this->width $width;
       
    $this->height $height;
       
    $this->minValue $minValue;
       
    $this->maxValue $maxValue;
       
    $this->numGridLines $numGridLines;
       
    $this->fontHeight $fontHeight;
       
    $this->bgColor $bgColor;
             

    function 
    addBar($value$text$fgColor = array(2009030), $fillColor = array(2018050)) {
       
       
    $this->bars[] = array(
          
    $value,
          
    $text,
          
    $fgColor,
          
    $fillColor
       
    );
       


    function &
    _prepareSwf() {
       
       
    // Crea il filmato ed imposta alcune propietà basilari
       
    $movie = &new SWFMovie();
       
    $movie->setDimension($this->width$this->height);
       
    $movie->setBackground($this->bgColor[0], $this->bgColor[1], $this->bgColor[2]);
       
       
    // Instanzia il font di default
       
    $font = new SWFFont('fdb/Bitstream Vera Sans.fdb');
             
       
    // Inizializza un oggetto TEXT che verrà usato per
       // calcolare le lunghezze del testo
       
       // Instanzio l'oggetto
       
    $text = new SWFText();
       
       
    // Imposto il font da usare e l'altezza del testo
       
    $text->setFont($font);
       
    $text->setHeight($this->fontHeight);
       
       
    // Calcola alcune misure
       
    $YValueWidth $text->getwidth($this->maxValue) + 20;
       
    $maxHeightUsable $this->height - (10 41 5); 
       
    // Inizializza lo shape
    $grid = &new SWFShape();
    $grid->setLine(2101010);


    // Disegna l'asse verticale
    $grid->movePenTo($YValueWidth10);
    $grid->drawLineTo($YValueWidth$this->height 10);


    // Disegna l'asse orizzontale
    $grid->movePenTo(10$this->height 40);
    $grid->drawLineTo($this->width 10$this->height 40);


    // Aggiunge la griglia all'oggetto MOVIE
    $movie->add($grid); 

    // Instanzia l'oggetto ed imposta le proprietà
    $gridHLines = &new SWFShape();
    $gridHLines->setLine(1303030);


    // Esegue alcune misurazioni
    $gridVertDistance = ($maxHeightUsable $this->numGridLines);
    $vertInterval = ($this->maxValue $this->minValue) / $this->numGridLines;
    $currValue $this->minValue;


    // Aggiunge il testo del punto zero
    $tmpYPos $this->height 40 $this->fontHeight;


    $tmpTEXT = &new SWFText();
    $tmpTEXT->setFont($font);
    $tmpTEXT->setHeight($this->fontHeight);
    $tmpTEXT->setColor(000);
    $tmpTEXT->moveTo($YValueWidth - (+ ($text->getwidth($currValue))), $tmpYPos);
    $tmpTEXT->addstring($currValue);
    $movie->add($tmpTEXT);


    $currValue += $vertInterval;


    for (
    $currLine 1$currLine <= $this->numGridLines$currLine++) {
       
       
    // Calcola la posizione Verticale della linea
       
    $tmpYPos $this->height - (41 + ($gridVertDistance $currLine));
       
       
    // Aggiunge la linea
       
    $gridHLines->movePenTo($YValueWidth$tmpYPos);
       
    $gridHLines->drawLineTo($this->width 10$tmpYPos);
       
       
    // Aggiunge il testo
       
    $tmpTEXT = &new SWFText();
       
    $tmpTEXT->setFont($font);
       
    $tmpTEXT->setHeight($this->fontHeight);
       
    $tmpTEXT->setColor(000);
       
       if (
    $currLine == $this->numGridLines) {
          
          
    $tmpTEXT->moveTo($YValueWidth - (+ ($text->getwidth($this->maxValue))), $tmpYPos + (int)($this->fontHeight/2) -);
          
    $tmpTEXT->addstring($this->maxValue);
          
          } else {
          
          
    $tmpTEXT->moveTo($YValueWidth - (+ ($text->getwidth(ceil($currValue)))), $tmpYPos + (int)($this->fontHeight/2) -);
          
    $tmpTEXT->addstring(ceil($currValue));
          
       }
       
       
    $movie->add($tmpTEXT);
       
       
    // Incrementa il valore corrente
       
    $currValue += $vertInterval;
       
    }


    // Aggiunge la griglia delle linee orizzontali al filmato
    $movie->add($gridHLines); 

    // Imposta alcuni valori iniziali
    $dispWidth $this->width - ($YValueWidth 10 30);
    $widthForBar $dispWidth count($this->bars);
    $leftPosition $YValueWidth 15;
    $baseYPos $this->height 40 1;


    // Cicla l'elenco di barre verticali da visualizzare a video
    while(list(, $vBar) = each($this->bars)) {
                   
       
    // Calcola l'altezza della barra
       
    if ($vBar[0] == $this->minValue) {
          
          
    // Se il valore è uguale al valore minimo
          // l'altezza è uguale a zero
          
    $heightBar 0;
          
          } else {
          
          
    // Se il valore della barra è maggiore del valore minimo
          // Calcola l'altezza in pixel della barra
          
    $heightBar = (($vBar[0] - $this->minValue) / ($this->maxValue $this->minValue)) * $maxHeightUsable;
       
       }
       
       
    // Aggiunge la barra verticale
       
    $tmpSHAPE = &new SWFShape();
       
       
    $tmpSHAPE->setLine(1$vBar[2][0], $vBar[2][1], $vBar[2][2]);
       
    $tmpSHAPE->setRightFill($tmpSHAPE->addFill($vBar[3][0], $vBar[3][1], $vBar[3][2], isset($vBar[3][3]) ? $vBar[3][3] : 220 ));
       
       
    $tmpSHAPE->movePenTo($leftPosition 5$baseYPos);
       
    $tmpSHAPE->drawLineTo($leftPosition 5$baseYPos $heightBar);
                      
       
    $tmpSHAPE->movePenTo($leftPosition 5$baseYPos $heightBar);
       
    $tmpSHAPE->drawLineTo($leftPosition $widthForBar 5$baseYPos $heightBar);
                      
       
    $tmpSHAPE->movePenTo($leftPosition $widthForBar 5$baseYPos $heightBar);
       
    $tmpSHAPE->drawLineTo($leftPosition $widthForBar 5$baseYPos);
       
       
    // Aggiungo lo shape al filmato
       
    $movie->add($tmpSHAPE);
       
       
    // Aggiunge il testo
       
    $tmpTEXT = &new SWFText();
       
       
    $tmpTEXT->setFont($font);
       
    $tmpTEXT->setHeight($this->fontHeight);
       
    $tmpTEXT->setColor($vBar[2][0], $vBar[2][1], $vBar[2][2]);
       
       
    $tmpTEXT->moveTo(($leftPosition + ($widthForBar 2)) - ($tmpTEXT->getWidth($vBar[1]) / 2), $this->height 40 $this->fontHeight);
       
    $tmpTEXT->addstring($vBar[1]);
       
       
    $movie->add($tmpTEXT);
       
       
    // Sposto il cursore verso destra
       
    $leftPosition += $widthForBar;
                   

    }

    function 
    save($filename) {
       
       
    $movie = &$this->_prepareSwf();
       
    $movie->save($filename);
       
    }


    function 
    output() {
       
       
    $movie = &$this->_prepareSwf();
       
       
    header('Content-type: application/x-shockwave-flash');
       
    $movie->output(9);
       
    flush();
       

    }
    ?>
    e una pagine index.php con quest'altro codice:
    Codice PHP:
    <?php
       
       
    require_once('mggraph_vbar.class.php');
       
       
    $MGGraph_VBar = &new MGGraph_VBar(
          
    600,    // Larghezza
          
    300,    // Altezza
          
    500,    // Valore minimo
          
    2000,    // Valore massimo
          
    10,    // Numero di linee nella griglia
          
    12,    // Dimensione font in pixel
            
    array (
             
    240// Componente ROSSO del colore di sfondo
             
    240// Componente VERDE del colore di sfondo
             
    240 // Componente BLU del colore di sfondo
          
    )
       );
       
       
    $MGGraph_VBar->addBar(708"Gen");
       
    $MGGraph_VBar->addBar(1200"Feb");
       
    $MGGraph_VBar->addBar(600"Apr");
       
    $MGGraph_VBar->addBar(1400"Mar", array(1050180), array(200101080));
       
    $MGGraph_VBar->addBar(1500"Mag");
       
    $MGGraph_VBar->addBar(830"Giu");
       
    $MGGraph_VBar->addBar(1700"Lug");
       
    $MGGraph_VBar->addBar(1800"Ago");
       
    $MGGraph_VBar->addBar(100"Set", array(80150180), array(8015018090));
       
    $MGGraph_VBar->addBar(2000"Ott");
       
    $MGGraph_VBar->addBar(1150"Nov");
       
    $MGGraph_VBar->addBar(784"Dic");
       
       
    $MGGraph_VBar->output();
       
    ?>
    il risultato di tutto questo codice è che il browser cerca sempre di caricare una pagina (in loop) con le caratteristiche di Flash ma completamente bianca!!
    Qualcuno mi sa dire dove ho sbagliato? grazie! Ciao
    ciao !!! :þ by neo_86

  2. #2
    volevo aggiungere che ho attivato le estensioni richieste (gd2 e php_ming) come veniva richiesto dall'articolo sopra riportato. :master: non capisco....
    ho provato a sostituire la fonzione output con quella save:
    Codice PHP:
    $MGGraph_VBar->save('graph.swf'); 
    e con questa funzione mi viene restituito il seguente errore:
    Fatal error: Call to a member function save() on a non-object in mggraph_vbar.class.php on line 195
    Come mai non vede l'oggetto che crea con la funzione:
    Codice PHP:
    $movie = &$this->_prepareSwf(); 
    Qualche idea? Grazie!
    ciao !!! :þ by neo_86

  3. #3
    up please
    ciao !!! :þ by neo_86

  4. #4
    qualcuno può almeno provare a mettere lo script sul proprio server per vedere se gli funziona copiandolo dall'originale nell'articolo http://php.html.it/articoli/leggi/9...-php-con-ming/6
    Grazie.
    ciao !!! :þ by neo_86

  5. #5
    up...
    ciao !!! :þ by neo_86

  6. #6
    up :master:
    ciao !!! :þ by neo_86

  7. #7
    Ciao,

    l'articolo l'ho scritto io un bel po di tempo addietro.

    Quasi sicuramente il tuo problema deriva dalla versione delle ming installate con php, perché ricordo che avevo usato l'ultima ver disponibile che non era compresa nel pacchetto php ma l'avevo scaricata a parte.

    Purtroppo questa libreria ha avuto uno sviluppo saltellante quindi non l'hanno mai tenuta aggiornata nelle loro build :\
    The fastest Redis alternative ... cachegrand! https://github.com/danielealbano/cachegrand

  8. #8
    ciao, ti ringrazio per la risposta... pensavo di aver sbagliato io qualcosa nel codice (magari nella definizione della classe) e stavo impazzendo... non è che sai dove posso trovare la dll di ming che hai ustato tu? così almeno non corro rischi.. nel tuo aricolo c'è il link a http://kromann.info/php4.php ma la pagina non esiste più.... io comunque utilizzavo la dll preinstallata dal programma WAMP5 v1.6.6 in quanto utilizzo Windows.
    ciao !!! :þ by neo_86

  9. #9
    ciao !!! :þ by neo_86

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.