Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 13
  1. #1

    Leggere e scrivere tabella su file: come faccio?

    Ciao! Sto realizzando un progettino ed ho necessità di fare questo: ho una tabella fissa, cioè composta da 48 righe e 7 colonne più la riga e la colonna di intestazione o indicizzazione poi vediamo come conviene. Devo salvarla su un file che poi dovrò leggere da uno script in python quindi pensavo di salvarla ad esempio su un csv (o altro, chiedo consigli).
    Come faccio a realizzare una pagina che mi legga i valori da questo file, me li visualizzi in forma tabellare e mi permetta di modificarli?
    Aggiungo una cosa forse importante, ogni cella può accettare solo 2 valori: "on oppure off" quindi una sorta di booleana.
    Come faccio? Grazie

  2. #2
    serializza e deserializza un array
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  3. #3
    Quote Originariamente inviata da Santino83_02 Visualizza il messaggio
    serializza e deserializza un array
    mi puoi fare un esempio?
    inoltre come faccio appunto a inserire i dati? a video cosa devo/posso visualizzare?

  4. #4
    lo sapevo che mi rispondevi così...te dicevi una cosa del genere?

    Codice PHP:
    $db_path "db.file";

    $db = array(
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0),
        array(
    "campo1"=>"valore_campo_1","campo2"=>"valore_campo2","campoN"=>"valore_campoN","campo_boolean"=>0)
    );

    //inizializzo il db
    if(!is_file($db_path))
    {
        
    file_put_contents($db_pathserialize($db));
    }

    //leggo da file
    $db unserialize(file_get_contents($db_path));

    //modifico qualcosa nel database
    $db[3]["campo_boolean"] = 1;

    //salvo
    file_put_contents($db_pathserialize($db));

    //ari-carico i dati per test
    $db unserialize(file_get_contents($db_path));

    echo 
    "db[3][campo_boolean] is true? ". ((int)$db[3]['campo_boolean']=='yes' 'no')."\n\n";

    //stampo la tabella
    $html '<table>'."\n";
    $html.='<thead><tr><th>campo1</th><th>campo2</th><th>campoN</th><th>campo_boolean</th></thead>'."\n";
    $html.='<tbody>'."\n";

    foreach(
    $db as $row)
    {
        
    $html.='<tr><td>'.implode('</td><td>',$row).'</td></tr>'."\n";
    }

    $html.='</tbody>'."\n".'</table>'."\n";

    echo 
    $html
    ?


    EDIT: invece di true/false ho usato 1/0 per problemi di serializzazione/deserializzazione
    IP-PBX management: http://www.easypbx.it

    Old account: 2126 messages
    Oldest account: 3559 messages

  5. #5
    Grazie.
    Onestamente, sono un po' a digiuno di php, e non ho ben capito il codice. Adesso cerco di studiarmelo e vediamo. In teoria è gia funzionante per i test mi basta creare un file db.file?

    Edit, no forse non è quello che cercavo:
    immagina un file excel dove sulle colonne ho i giorni della settiamana e sulle righe le fasce orarie dalle 0 alle 24. quindi ad esempio nella cella b2 faccio riferimento all'1:00 di martedì. All'interno di queste celle devo scrivere 1-0 (acceso spento).
    Il mio file php deve leggere questo file (che non è necessariamente un exce, va bene un txt,csv ecc ecc) e permettermi di modificarlo. (ad sempio nella fascia oraria delle 5 della domenica voglio modificare da spento ad acceso).
    Come faccio? :-)

    Esempio
    //// LUN MAR MER ....
    0:00 on off on
    1:00 on on off
    2:00 off off off
    ...
    Ultima modifica di paolo1983; 04-04-2014 a 15:42

  6. #6
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    dato che mi pare di capire che ti serva lavorare con file csv prodotti da altra fonte e che devi modificare, una soluzione può essere questa

    Codice PHP:
    $file_in "db_file.csv"// file di input
    $file_out "db_file_out.csv"// file di output
    $output "";

    // prende i dati dal file di input e li mette in array
    if(($handle_in fopen($file_in"r")) !== FALSE) {
        while((
    $get_data fgetcsv($handle_in1000",")) !== FALSE) {
            
    $get_data_array[] = $get_data;
        }
    }

    // modifica i dati (la parte da parametrizzare)
    $get_data_array[0][0] = "valore da modificare";

    // scrive i dati sul file di output
    $handle_out fopen($file_out"w");
    foreach(
    $get_data_array as $fields) {
        
    $output .= fputcsv($handle_out$fields",");
    }
    fclose($handle_out); 
    edit: ho dimenticato di aggiungere che se preferisci nell'output puoi mettere direttamente l'array serializzato come ha scritto Santino83_02 e poi lo puoi gestire con python
    Ultima modifica di clasku; 05-04-2014 a 18:10

  7. #7
    Ok grazie.
    Mi resta un dubbio: come faccio fisicamente ad inserire i nuovi valori? Devo fare delle textbox? Delle check box?

  8. #8
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    Per fare quello devi aprire il file Csv e per ogni campo generare una tabella che contenga per ogni riga dei check (ad esempio) e li userai per modificare i valori che metterai in output sul nuovo csv
    Più facile a farsi che a dirsi

  9. #9
    Quote Originariamente inviata da clasku Visualizza il messaggio
    Per fare quello devi aprire il file Csv e per ogni campo generare una tabella che contenga per ogni riga dei check (ad esempio) e li userai per modificare i valori che metterai in output sul nuovo csv
    Più facile a farsi che a dirsi
    mi potresti fare un esempio?

  10. #10
    Utente di HTML.it L'avatar di clasku
    Registrato dal
    Aug 2006
    Messaggi
    3,197
    una cosa tipo questa

    file che presenta la tabella con un form
    Codice PHP:
    <?php


    $file_in 
    "db_file.csv";


    $output "";


    echo 
    "<form method = 'post' action = 'get_data.php'>\n";
    echo 
    "<input type='submit' value='invia'>\n";
    echo 
    "<table border=1>\n";


    // prende i dati e li mette in array
    if(($handle_in fopen($file_in"r")) !== FALSE) {
        while((
    $get_data fgetcsv($handle_in1000",")) !== FALSE) {
            
    $get_data_array[] = $get_data;
        }
    }


    foreach (
    $get_data_array as $key => $value) {
        
    $out "<tr>";
        if (
    $key == 0) {
            foreach (
    $value as $key_r => $value_r) {
                
    $out .= "<td>$value_r<input type='hidden' name='value[$key][$key_r]' value='$value_r'></td>\n";
            }
        }
        else {
            foreach (
    $value as $key_r => $value_r) {
                if (
    $key_r != 0) {
                (
    $value_r == "on") ? $ch_on "checked" $ch_on "";
                (
    $value_r == "off") ? $ch_off "checked" $ch_off "";
                
    $out .= "<td><input type='radio' name='value[$key][$key_r]'' value='on' $ch_on>on<br />\n";
                
    $out .= "<input type='radio' name='value[$key][$key_r]'' value='off' $ch_off>off<br /></td>\n";
                }
                else {
                    
    $out .= "<td>$value_r<input type='hidden' name='value[$key][$key_r]' value='$value_r'></td>\n";
                }
            }
        }
        
    $out .= "</tr>\n";
        echo 
    $out;
    }


    echo 
    "</table>\n</form>\n";


    ?>
    file get_data.php che crea il nuovo csv
    Codice PHP:
    <pre>
    <?php
    $file_out 
    "db_file_out.csv";
    $output "";


    $get_data_array $_POST['value'];


    // prepara i dati (da array a csv)
    $handle_out fopen($file_out"w");
    foreach(
    $get_data_array as $fields) {
        
    $output .= fputcsv($handle_out$fields";");
    }
    fclose($handle_out);


    ?>

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.