+ Rispondi alla Discussione
Risultati da 1 a 12 di 12

Cancellare riga di testo in file txt in base alla data

Ultimo Messaggio di Cosina il:
  1. #1
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina

    Cancellare riga di testo in file txt in base alla data

    Ciao a tutti, come posso fare ad automatizzare la cancellazione di una riga di testo, in base alla data di scrittura, da un file data.txt?
    Per esempio:

    Giorgio;xxxxxxxxxxxxxxxxxxx;2019-02-23
    Laura;xxxxxxxxxxxxxxxxxxx;2019-03-30

    Mettiamo che voglia far cancellare ogni rispettiva riga dopo un anno dalla data impressa.
    E` una cosa possibile? In alternativa, mi andrebbe bene anche spostarla in un altro file, per esempio data2.txt. Grazie mille per l'aiuto

  2. #2
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    705
    Aggiungi Ultima su Facebook
    Ciao Cosina,
    dovresti creare un file che esegue il parse del documento txt, andando ad individuare la riga secondo l'anno per poi eseguire la cancellazione ove necessaria. A questo devi poter implementare, accedendo al server, un cron, che magari ogni giorno alle ore 00:00:00 esegue il file di controllo realizzato in precedenza.

    Codice PHP:
    $txt_file    file_get_contents('path/to/file.txt');
    $rows        explode("\n"$txt_file);

    unlink('path/to/file.txt');
    $new_file fopen('path/to/file.txt''a+');
    foreach(
    $rows as $row)
    {
        
    $data explode(';'$row);
        
    //esempio, se il tuo valore data è la terza occorrenza
        
    if( ( strtotime($data[2]) + 31536000 ) >= time() ) {
            
    fwrite$new_file$row );
        }

    }
    fclose$new_file ); 
    Mi raccomando, prima di eseguire il file come test, esegui un backup del tuo file txt in quanto ho aggiunto l'istruzione unlink() sul file che lo rimuove in maniera inreversibile.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  3. #3
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Grazie mille Ultima, so come impostare un cron. Nei prossimi giorni faccio le prove. Sei stato gentilissimo

  4. #4
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Ciao, ho provato ed ha funzionato perfettamente (grazieeeee!!!). Unico problema: le righe, nel file di testo originale, sono incolonnate, cosi`:

    Giorgio;xxxxxxxxxxxxxxxxxxx;2019-02-23
    Laura;xxxxxxxxxxxxxxxxxxx;2019-03-30

    Quando il sistema copia e ricrea il file, me le mette tutte in linea, così:

    Giorgio;xxxxxxxxxxxxxxxxxxx;2019-02-23Laura;xxxxxxxxxxxxxxxxxxx;2019-03-30

    C'è il modo per farle riscrivere incolonnate come originariamente? Altrimenti la consultazione diventa quasi impossibile. Grazie mille

  5. #5
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    705
    Aggiungi Ultima su Facebook
    Di nuovo ciao Cosina. Certo che c'è il modo.
    Modifica questa istruzione:
    Codice PHP:
    fwrite$new_file$row ); 
    In questo modo:
    Codice PHP:
    fwrite$new_file$row "\n" ); 
    Fammi sapere.
    Ciao.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  6. #6
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Ha funzionato perfettamente, grazie mille, mi hai dato un grande aiuto. Lo devo dire, questo forum e` il migliore che conosca. Competenza, professionalita` e disponibilita`. In altri ho trovato spesso arroganza e anche mascherate finalita` di guadagno. Premesso che tutti dobbiamo guadagnare, io credo che la collaborazione tra professionisti e non, nelle piccole cose, sia cosa giusta e reciprocamente utile. Buona giornata a te e a tutti. Ciao

  7. #7
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    705
    Aggiungi Ultima su Facebook
    Citazione Originariamente Scritto da Cosina Visualizza Messaggio
    Ha funzionato perfettamente, grazie mille, mi hai dato un grande aiuto. Lo devo dire, questo forum e` il migliore che conosca. Competenza, professionalita` e disponibilita`. In altri ho trovato spesso arroganza e anche mascherate finalita` di guadagno. Premesso che tutti dobbiamo guadagnare, io credo che la collaborazione tra professionisti e non, nelle piccole cose, sia cosa giusta e reciprocamente utile. Buona giornata a te e a tutti. Ciao
    Io ti ringrazio per le belle parole che hai scritto. Fa sempre piacere ricevere elogi.
    Per quanto mi riguarda, sono contento che ti abbia aiutato a risolvere il tuo grattacapo. Esattamente come hai scritto, siamo qui per confronto e anche darci una mano a vicenda.
    Per qualsiasi altra problematica, siamo sempre qui!
    Ciao.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  8. #8
    L'avatar di Giorgiotave
    Data Registrazione
    Oct 2004
    Località
    Monasterace
    Messaggi
    40,832
    Visita il canale Youtube di Giorgiotave
    Citazione Originariamente Scritto da Cosina Visualizza Messaggio
    Ha funzionato perfettamente, grazie mille, mi hai dato un grande aiuto. Lo devo dire, questo forum e` il migliore che conosca. Competenza, professionalita` e disponibilita`. In altri ho trovato spesso arroganza e anche mascherate finalita` di guadagno. Premesso che tutti dobbiamo guadagnare, io credo che la collaborazione tra professionisti e non, nelle piccole cose, sia cosa giusta e reciprocamente utile. Buona giornata a te e a tutti. Ciao
    Grazie mille Cosina per questo feedback, è per questo che il forum gt è nato, proprio perché quando sono arrivato sulla rete per la prima volta avevo riscontrato troppa arroganza e poca voglia di aiutarsi. Io credo nella condivisione della conoscenza per una crescita globale.

    E ci sono persone come Stefano che condividono questa filosofia e la applicano concretamente, anche se sono strapieni di lavoro

    In una grande Internet dove l'arroganza dilaga, sapere che esiste un ambiente come questo è un sollievo.

    FastForward: per un'Internet Migliore
    Su YouTube, Telegram, Spreaker, Spotify. Ci vediamo al Festival!

  9. #9
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Grazie Ultima, sei davvero gentilissimo e grazie anche a te, Giorgio, per il tuo gradito intervento. Quello che dite e` verissimo. Anch'io, nell'ambito delle mie competenze (webdesign), non ho mai perso l'occasione di dare consigli e aiuto agli utenti che mi scrivono e la considero una cosa che, prima di tutto, gratifica e arricchisce me stessa.
    Ultima modifica di Cosina; 11-06-19 alle 09:54

  10. #10
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Approfitto ancora una volta della vostra competenza per un ultimo suggerimento.
    Sempre considerando il file di testo oggetto della discussione, vorrei sapere se sarebbe possibile creare un form tramite il quale un utente possa cancellare direttamente la riga corrispondente ai suoi dati. Qualcosa di simile per intenderci:

    Codice HTML:
    <form class="form-contact" action="action.php" method="post" enctype="multipart/form-data">
    
    <p><label>Nome:<br></label><input type="text" name="name"/></p>
    
    <p><label>Password:<br></label><input type="text" name="password"/></p>
           
    <input class="button" type="submit" value="Delete">
    
    </form>
    Considerando che nel file di testo data.txt e nella riga di esempio:

    Laura;xxxxxxxxxxxxxxxxxxx;2019-03-30

    lo spazio occupato dalle crocette equivale alla password criptata.
    In pratica, vorrei sapere cosa mettere nel file action.php per ottenere questo risultato.

    Di nuovo, immensamente grazie

  11. #11
    Moderatore L'avatar di Ultima
    Data Registrazione
    Jan 2013
    Località
    Senigallia
    Messaggi
    705
    Aggiungi Ultima su Facebook
    Ciao Cosina. L'esempio che avevo scritto in precedenza, lo puoi piegare in base alle tue esigenze aggiungendo o rimuovendo parti che possano tornarti utili.
    Il procedimento è il medesimo della data: Si effettua un riconoscimento tramite una condizione e in caso di esito positivo, non riscriviamo la riga nel file. Questo è il sunto, così apprendi meglio la logica. Questo è il codice d'esempio:

    Codice PHP:
    // recuperi i parametri in POST
    // Quindi prima di tutto effettui un controllo se POST è valorizzato, in caso contrario, non fai nulla
    if( $_POST != null ) {
        
        
    // a questo punto recuperiamo i dati
        
    $name $_POST['name'];
        
    $pass $_POST['password'];
        
        
    // ora eseguiamo lo stesso identico processo realizzato in precdenza
        // modificando i parametri di confronto

        
    $txt_file    file_get_contents('path/to/file.txt');
        
    $rows        explode("\n"$txt_file);

        
    unlink('path/to/file.txt');
        
    $new_file fopen('path/to/file.txt''a+');
        foreach(
    $rows as $row)
        {
            
    $data explode(';'$row);
            
    //esempio, se il tuo valore data è la terza occorrenza
            
    if( $data[0] == $name && $data[1] == $pass ) {
                
    // non faccio nulla
            
    } else {
                
    fwrite$new_file$row "\n" );
            }

        }
        
    fclose$new_file );  


    Detto questo però, dovresti dover aggiungere diversi controlli sui campi, così da non creare confusioni o tentativi malevoli di esecuzione del tuo script.
    Mi raccomando: prima di qualsiasi test, effettua sempre un backup dei dati, perchè il sistema, prima cancella e poi riscrive il file.
    Ciao e fammi sapere.
    MODWordpress
    Senior Web Developer to http://www.canenero.com - https://www.stefanopascazi.com
    Magento Specialist - WP Addicted (e Netflix dipendente XD )

  12. #12
    User L'avatar di Cosina
    Data Registrazione
    Dec 2016
    Località
    Lugano
    Messaggi
    20
    Segui Cosina su Twitter Aggiungi Cosina su Facebook Aggiungi Cosina su Linkedin Visita il canale Youtube di Cosina
    Grazie, tu non sai quanto mi piaccia imparare cose nuove! Tranquillo, quanto alla sicurezza ho tutto sotto controllo nei form attivi; piuttosto esagero, ma non sottovaluto mai in questo campo. Grazie mille di nuovo, sei super

+ Rispondi alla Discussione

^ Permessi di Scrittura

  • Tu non puoi inviare nuove discussioni
  • Tu non puoi inviare risposte
  • Tu non puoi inviare allegati
  • Tu non puoi modificare i tuoi messaggi
  •  
  • Il codice BB è Attivato
  • Le faccine sono Attivato
  • Il codice [IMG] è Attivato
  • Il codice [VIDEO] è Attivato
  • Il codice HTML è Disattivato
  • Trackbacks Attivato
  • Pingback Attivato
  • Refback Attivato

SEO by vBSEO 3.6.0 PL2 ©2011, Crawlability, Inc.