+ Rispondi
Pagina 1 di 2 1 2 UltimaUltima
Risultati da 1 a 10 su 20

Discussione: problema con php e csv

  1. #1

    Iscritto dal
    02/10/2012
    Messaggi
    65

    problema con php e csv

    ciao a tutti e grazie in anticipo a chi riuscirà a rispondermi
    Ho un problema con uno scrit php, non riesco a venirne fuori da due giorni (premettendo che non sono molto ferrato con questo linguaggio...). Il problema è questo:
    ho un file csv con due colonne: un'ora ed una temeratura rilevata, separate da una ",". Vorrei usare questo csv per popolare un grafico, usando la libreria PHPGraphLib Graphing Library . Ho bisogno quindi di prendere i campi dal csv e farli "apparire" alla libreria come di seguito:

    codice:
    $data = array("Roger"=>145, "Ralph"=>102, "Rhonda"=>123, "Ronaldo"=>137, 
    "Rosario"=>149, "Robin"=>99, "Robert"=>88, "Rustof"=>111);
    $data viene poi richiamato nelloscript che genera il grafico vero è proprio. Il problema sta nel programma che ho creato:

    codice:
    <?php
    include('phpgraphlib.php');
    $graph = new PHPGraphLib(650,300);
    
    
    //estrazione dati da file csv e raggruppamento nel nuovo array
    
    if (($databaseTemp= fopen("temperaturegraph.csv", "r")) !== false)
    {
     $dataArray=array();
     $nn = 0
     while (($data = fgetcsv($databaseTemp, 30, ",")) !== false) {
        $c = count($data);
          
        for($x=0;$x<$c;$x++)
        {
             $dataArray[$nn]=$data[$x];    
        }
        $n++;
       }
       fclose($databaseTemp);
    }
     
    //configurazione grafico
    $graph->addData($dataArray);
    $graph->setTitle('Time/Temperature ');
    $graph->setBars(false);
    $graph->setLine(true);
    $graph->setDataPoints(true);
    $graph->setDataPointColor('maroon');
    $graph->setDataValues(true);
    $graph->setDataValueColor('maroon');
    $graph->setGoalLine(.0025);
    $graph->setGoalLineColor('red');
    $graph->createGraph();
    ?>
    Non funziona e non capisco perchè...

  2. #2

    Iscritto dal
    26/05/2011
    Località
    Lugano, Svizzera
    Messaggi
    21,453
    Se hai fatto copia/incolla diretto dell'ultima versione, manca un punto e virgola alla riga $nn = 0

    In che modo non funziona?

    Quando l'ambiente di sviluppo non è granché per quanto riguarda il debug mentre stai programmando, forse un consiglio intelligente può essere di fare man mano degli output da qualche parte per verificare che sta succedendo quello che deve nei vari array e nelle varie variabili
    Verità #10 | Viva l'unto, reale o presunto

  3. #3

    Iscritto dal
    02/10/2012
    Messaggi
    65
    nel senso che mi restituisce la pagina vuota: Time/Temperature Raspberry PI | ToB.log mentre dovrebbe comparire un solo grafico con i dati estratti dal csv e messi sugli assi. Non comparendo nulla so per certo che il problema è dovuto alla funzione che ho creato per estrarre i record e sistemarli (se infatti la sostituisco con un array di valori scritti da me, al posto che leggere il csv, funziona tutto)

  4. #4

    Iscritto dal
    13/12/2011
    Località
    Salento!
    Messaggi
    6,825
    Quote Originariamente inviato da lord tobia Visualizza il messaggio
    nel senso che mi restituisce la pagina vuota: Time/Temperature Raspberry PI | ToB.log mentre dovrebbe comparire un solo grafico con i dati estratti dal csv e messi sugli assi. Non comparendo nulla so per certo che il problema è dovuto alla funzione che ho creato per estrarre i record e sistemarli (se infatti la sostituisco con un array di valori scritti da me, al posto che leggere il csv, funziona tutto)
    allora qualcosa mi suggerisce che non legge il csv

    (mi si è fulminato rasperry :| )

  5. #5

    Iscritto dal
    13/12/2011
    Località
    Salento!
    Messaggi
    6,825
    cancellato altro topic come mi hai chiesto

    Scaricato il csv, faccio un paio di test e ti dico

  6. #6

    Iscritto dal
    02/10/2012
    Messaggi
    65
    Quote Originariamente inviato da xam8re Visualizza il messaggio
    allora qualcosa mi suggerisce che non legge il csv

    (mi si è fulminato rasperry :| )
    il mio va benone!

    eccolo:
    codice:
    11:00,42
    12:00,43
    13:00,40
    14:00,50
    15:00,41
    ma non riesco a caricarlo tutto perchè mi da formato non valido

  7. #7

    Iscritto dal
    13/12/2011
    Località
    Salento!
    Messaggi
    6,825
    Quote Originariamente inviato da lord tobia Visualizza il messaggio
    il mio va benone!

    eccolo:
    codice:
    11:00,42
    12:00,43
    13:00,40
    14:00,50
    15:00,41
    ma non riesco a caricarlo tutto perchè mi da formato non valido
    l'ho già scaricato
    Al mio ho infilato micro usb, ha fatto fumata e puff

  8. #8

    Iscritto dal
    13/12/2011
    Località
    Salento!
    Messaggi
    6,825
    allora, non includi correttamente le librerie (salta all $graph = new PHPGraphLib(650,300)

  9. #9

    Iscritto dal
    02/10/2012
    Messaggi
    65
    come devo risolvere? non ho idea... perchè in realtà quel pezzo di codice l'ho preso dagli esempi del sito della librearia, e prima funzionava quando non ho inserito il mio scempio di script...

    la libreria è a questo indirizzo PHPGraphLib Download - v2.31

    ed ho modificato il codice in modo che sia:

    codice:
    <?php
    include("phpgraphlib.php");
    $graph = new PHPGraphLib(550,350);
    
    
    //estrazione dati da file csv e raggruppamento nel nuovo array
    $dataArray=array();
    
    if (($databaseTemp= fopen("temperaturegraph.csv", "r")) !== false)
    {
     $nn = 0;
     while (($data = fgetcsv($databaseTemp, 30, ",")) !== false) {
        $c = count($data);
    
        for($x=0;$x<$c;$x++)
        {
             $dataArray[$nn]=$data[$x];    
        }
        $n++;
       }
       
    }
    fclose($databaseTemp);
     
    //configurazione grafico
    $graph->addData($dataArray);
    $graph->setTitle('Time/Temperature ');
    $graph->setBars(false);
    $graph->setLine(true);
    $graph->setDataPoints(true);
    $graph->setDataPointColor('maroon');
    $graph->setDataValues(true);
    $graph->setDataValueColor('maroon');
    $graph->createGraph();
    ?>
    cioè spostando prima il comando di creazione dell'array e dopodi chiusura del file, ma ancora nulla....
    Ultima modifica: 22-06-2013 alle 15:57, di lord tobia

  10. #10

    Iscritto dal
    13/12/2011
    Località
    Salento!
    Messaggi
    6,825
    allora: premetto che php lo conosco molto poco.
    Ho usato i google charts

    Codice PHP:

     <?php
    # Open the File.
    if (($handle fopen("temperaturegraph.csv""r")) !== FALSE)
      {
        
    # Set the parent multidimensional array key to 0.
        
    $nn             1;
        
    $csvarray[0][0] = "Ora";
        
    $csvarray[0][1] = "Temperatura";
        while ((
    $data fgetcsv($handle1000",")) !== FALSE)
          {
            
    # Count the total keys in the row.
            
    $c count($data);
            
    # Populate the multidimensional array.
            
    for ($x 0$x $c$x++)
              {
                if (
    $x == 0)
                  {
                    
    $csvarray[$nn][$x] = $data[$x];
                  }
                else
                  {
                    
    $csvarray[$nn][$x] = (int) $data[$x]; #forzo ad integer
                  
    }
                
              }
            
    $csvarray[$nn][1] = (int) $csvarray[$nn][1];
            
    $nn++;
          }
        
    # Close the File.
        
    fclose($handle);
      }
    # Print the contents of the multidimensional array.    
    ?>
    <html>
      <head>
        <script type="text/javascript" src="https://www.google.com/jsapi"></script>
        <script type="text/javascript">
          google.load("visualization", "1", {packages:["corechart"]});
          google.setOnLoadCallback(drawChart);
    <?php

    $js_array 
    json_encode($csvarray);
    echo 
    "var javascript_array = " $js_array ";\n";
    ?>
          function drawChart() {
            var data = google.visualization.arrayToDataTable(javascript_array);

            var options = {
              title: 'RPI Temp'
            };

            var chart = new google.visualization.AreaChart(document.getElementById('chart_div'));
            chart.draw(data, options);
          }
        </script>
      </head>
      <body></body>
    </html>
    Ultima modifica: 22-06-2013 alle 16:50, di xam8re


 

Autorizzazioni

  • Non puoi iniziare nuove discussioni
  • Non puoi rispondere alle discussioni
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
Powered by vBulletin™ Version 4.1.5
Copyright © 2019 vBulletin Solutions, Inc. All rights reserved
SEO by vBSEO ©2011, Crawlability, Inc.
Fuso orario: UTC +1, sono le 08:10.