Selezionare file da elenco

di il
8 risposte

Selezionare file da elenco

Ciao a tutti,
ho questo problemino...
ho implementato una libreria grafica che leggendo un file csv da un url o dal mio spazio web, mi crea un grafico a linee.

il problema per cui vi chiedo aiuto è questo:

nella cartella dove pesco il file per creare il grafico, ne posso avere piu' di uno..
(se ne metto uno solo, imposto direttamente l'url del file.....ok)
ad esempio sul mio spazio web ho la cartella "dati" e dentro questa i file dati012020.csv, dati022020.csv, dati032020.csv ecc...

automaticamente ogni mese viene aggiunto il file chiamato datiMMAAAA.csv
(per questo il semplice elenco a discesa statico non va bene, perche ogni mese dovrei aggiornare il codice)

vorrei creare un file da usare nel campo di selezione della libreria per fare il grafico che permetta di scegliere all'interno della cartella dati, tramite elenco a discesa,il file con cui creare il grafico.....

leggendo nel nome del file i valori di MMAAAA mi crea l'elenco di cui ho bisogno e che si aggiorna se vede un file nuovo oltre quelli già presenti.
in pratica scorro i nomi dei file e mi creo un elenco in base a quello che trovo nella cartella.

scelto il file di interesse, la libreria mi grafica quei dati....


spero di essermi spiegato bene

8 Risposte

  • Re: Selezionare file da elenco

    Ciao,
    da quel che ho capito ti servirebbe un menu a tendina dinamico.

    Potresti utilizzare una funzione che legge i file in una cartella in maniera dinamica e popola il menu (a tendina?) con la lista
    
    <select>
    <?php
    $dir = "/dati/";
    
    // Apre la cartella e restituisce i file
    if (is_dir($dir)){
      if ($dh = opendir($dir)){
        while (($file = readdir($dh)) !== false){
          echo "<option value='" . $dir . $file . "'>" . $file . "</option>";
        }
        closedir($dh);
      }
    }
    ?>
    </select>
    
  • Re: Selezionare file da elenco

    E come potrei fare a far capire alla libreria di usare quel file?
    nella libreria devo scrivere l'indirizzo del file url (es chiamo il file sopra suggerito: SCELTAdati.php e sarà dalaloader="./sceltadati.php")

    SE ad esempio nella cartella ci sono 2 files:
    dati2019.csv e dati2020.csv
    nella tendina seleziono il primo file,ùnel modo suggerito la libreria fa il grafico col primo file?
  • Re: Selezionare file da elenco

    Guarda ti riepilogo i passaggi in maniera snella:

    1. Stampi il menu con la lista (immagino si trovi dentro un tag <form>)
    2. La lista passa tramite una richiesta GET il nome del file (del tipo http://www.tuosito.it/sceltadati.php?file=dati01202)
    3. Lo script legge il nome del file tramite il $_GET['file'] e lo passa al tuo script
    
    <?php
    $cartella_dati = '/dati/';
    $file_da_elaborare = $cartella_dati . $_GET['file'] . 'csv';
    
    // Qui c'è il tuo script che elabora $file_da_elaborare
    ?>
    
    se riesco provo ad abbozzare uno zip con l'esempio
  • Re: Selezionare file da elenco

    ....volevo aggiungere che i miei files non sono organizzati con database, sono files semplici il cui contenuto è di questo tipo:
    01/10/2014,46.64
    02/10/2014,46.68
    03/10/2014,46.62
    04/10/2014,46.47
    05/10/2014,46.48
    06/10/2014,46.67
    07/10/2014,46.69
    08/10/2014,46.66
  • Re: Selezionare file da elenco

    Scusa ma sto facendo tutto da autodidatta e ci metto un po' perche devo studiare tutto....

    questo è il link di quel che ho fatto:
    xxxxx

    per adesso la libreria legge un solo file...
    vorrei potergli far operare la scelta
  • Re: Selezionare file da elenco

    Tranquillo,
    questo dovrebbe essere lo script funzionante basato anche sul tuo esempio con il grafico in Javascript
    (attenzione non ho fatto controlli lato Javascript o altro)

    Presta attenzione al fatto che nel tuo esempio, il file viene letto da un server remoto, non è in locale sul tuo PC

    A disposizione
    
    <?php
    // Definisco la cartella che conterrà i CSV
    $cartella_dati = dirname(__FILE__) . '/dati';
    
    // Imposto la variabile a null così da avere un punto di partenza
    $file_da_elaborare = null;
    
    // Verifico che sia stato passato qualcosa
    if (isset($_GET['nomefile']) && $_GET['nomefile']) {
        // Ricavo il nome del file dai parametri dell'indirizzo
        $nomefile = $_GET['nomefile'];
        $file_da_elaborare = $cartella_dati . '/' . $nomefile . '.csv';
    }
    
    ?>
    <!doctype html>
    <html>
    <head>
        <script src="//www.amcharts.com/lib/4/core.js"></script>
        <script src="//www.amcharts.com/lib/4/charts.js"></script>
        <script src="https://www.amcharts.com/lib/4/themes/animated.js"></script>
    
        <script>
        <?php 
        // Qui creo una variabile per Javascript in modo da poterla elaborare dal tuo script di esempio
        // !!! ATTENZIONE Devi cambiare chart.dataSource.url = "https://utentifalde.s3-eu-west-1.amazonaws.com/demo/fiorucci.csv";
        // !!! IN chart.dataSource.url = nomefile;
        if ($file_da_elaborare) {
            echo "var nomefile = '"{$nomefile}"';";
        }
        ?>
        </script>
        <!-- QUI VA LO SCRIPT DI ESEMPIO DELLA DEMO -->
    </head>
    <body>
    
    <form method="GET">
    <select name="nomefile">
        <option value="">Seleziona un file</option>
        <?php
        // Apre la cartella, restituisce i file e stampa il menu con TUTTI i file
        if (is_dir($cartella_dati)){
          if ($dh = opendir($cartella_dati)){
            while (($file = readdir($dh)) !== false){
                if ($file == '.' || $file == '..') {
                    continue;
                }
                echo "<option value='" . $cartella_dati . $file . "'>" . $file . "</option>";
            }
            closedir($dh);
          }
        }    
        ?>
    </select>
    <button type="submit">Carica file</button>
    </form>
    
    <div id="chartdiv"></div>
    
    </body>
    </html>
    
  • Re: Selezionare file da elenco

    Deleted
  • Re: Selezionare file da elenco

    Stavo facendo comunque un tentativo ma mi da un errore a questa riga:

    echo "var nomefile = '"{$nomefile}"';";
Devi accedere o registrarti per scrivere nel forum
8 risposte