• User Attivo

    Duplicare uno stupido file .txt aggiungendo un ciclo for

    Ciao a tutti,

    avrei la necessità di duplicare un semplice file txt però aggiungendo un numero...

    file.txt
    file0.txt
    file1.txt
    file2.txt
    file3.txt

    In pratica l'utente premendo uno stupido pulsante...
    Deve poter duplicare il file che si chiama: **file.txt

    **Aggiungendo un numero... forse un ciclo for oppure un numero che si incrementa... come posso fare?

    Grazie

    File di invio duplica.html

    
    <form  action="duplica.php" method="POST">
    <input type="submit" value="duplica">
    </form>
    
    ```file di ricezione **duplica.php**
    

    <?
    $n=0;
    $t=$n+1;
    ...
    file.txt + $t (bòòòòò)
    ....
    ?>

    grazie
    ?>

  • User Attivo

    @max_400 said:

    oppure un numero che si incrementa...
    Potresti usare il timestamp.


  • User Attivo

    il timestamp? 😮

    e che cos'è? :mmm:
    qualkosa che si mangia?... ih ih ih

    ho bisogno esempi concreti ... io conosco poco php e molto actionscript

    gradirei un bel esempio
    grazie :yuppi:


  • User Attivo

    Prova a fare un:

    echo time();
    

    E' il numero dei secondi intercorsi tra l'istante attuale e il primo Gennaio 1970


  • User Attivo

    ho provato come dici tu
    maxgiulia.altervista.org/max/08-agosto/textarea/prova/timestamp.php

    e vedo tanti numeri di cui l'ultimo aumenta in modo progressivo
    ma come faccio a collegarlo al file txt? :mmm:

    che sintassi devo usare affinchè avvenga la duplicazione in modo progressivo del seguente file cucu.txt? :bho:

    attendo risposta

    grazie :yuppi:


  • User Attivo

    Allora, se il contenuto del file non cambia mai, prima di produrre un nuovo txt devi copiare il contenuto in una variabile:

    
    $var=fopen("cucu.txt","r"); 
    $dim=filesize("cucu.txt"); 
    $contenuto=fread($var,$dim); 
    fclose($var);
    
    

    Poi, ricavi il timestamp attuale, componi il nuovo nome del file e lo scrivi:

    
    $time=time();
    $nome='cucu_'.$time.'_.txt';
    $var=fopen($nome,"w+"); 
    fwrite($var,$contenuto); 
    fclose($var);
    
    

    Ti ritrovi dei nuovi file con questi nomi:
    cucu_3456344757_.txt
    cucu_4454567567_.txt
    ecc...

    Tra l'altro, con il timestamp impresso nel nome del file, estrapolandolo con la funzione explode(), potresti ricavare data, ora, minuti e secondi del momento in cui quel file è stato creato!


  • User Attivo

    Oppure, molto più semplicemente:

    
    copy('cucu.txt','cucu_'.time().'_.txt');
    
    

    Non ci avevo pensato... :wink3:


  • User Attivo

    senti però non ci sarebbe un altro modo
    anzicchè il timestamp un semplice numero che aumenta prograssivamente

    tipo
    $num=1;
    $tot=$num+1;

    ed aggiungerlo al posto di time()


    ho provato e me lo duplica una volta sola


  • User Attivo

    Forse intendi questo:

    <?php
    $limit=5; //Cambia questo numero per cambiare il numero di duplicati
    
    for($i=0;$i<$limit;$i++) copy('file.txt','file'.$i.'.txt');
    ?>
    
    ```Occhio che devi settare i permessi di scrittura sulla cartella dove si trova file.txt
    
    Attento anche al fatto che ogni volta il nome del file deve essere diverso, altrimenti il primo utente duplica il file 5 volte e il secondo ricrea il file 5 volte sovrascrivendo quelli precedenti... in pratica così è inutile.
    Se ci spieghi a che ti serve magari è più semplice capirti e darti uno script che faccia al caso tuo.

  • User Attivo

    ho provato il tuo script e funziona
    però a me serve una sola copia in modo progressivo

    perchè non mi funziona quella semplice addizione?

    Ps: tu che sei un utente premium come si fa a diventarlo ho provato quelle 20 domande ne ho indovinate 15 su 20.. il limite degli errori quant'è?
    e come si fa conoscere le risposte?

    permessi di scrittura? :mmm:

    aspetta vostra risposta ragazzi... :yuppi:
    adesso sto uscendo
    mi collego dopo mezzanotte come il lupo


  • User Attivo

    Questo dovrebbe fare al caso tuo.
    Si poteva fare in modi più efficienti (e anche più fail safe), ma questo se ti vai a vedere cosa fanno le funzioni lo capisci anche.

    <?php
    
    $prefisso_file = 'file';
    $suffisso_file = '.txt';
    $directory_file='/cartella/';
    
    
    $pre = $_SERVER{'DOCUMENT_ROOT'}.$directory_file.$prefisso_file;
    $n=0;
    while ( file_exists($pre.$n.$suffisso_file) ) $n++;
    copy($prefisso_file.$suffisso_file,$prefisso_file.$n.$suffisso_file);
    ?>
    

    Siccome la funzione file_exists non accetta url relativi, devi sostituire "/cartella/" con la directory nella quale si trova il tuo file.txt, a partire dalla cartella principale (quella in cui hai caricato la index del tuo sito, per capirci).

    Per diventare utente premium gli errori massimi sono..... zero! 😉
    Per conoscere le risposte è sufficiente studiarsi il regolamento, è tutto scritto lì.


  • User Attivo

    ho provato il tuo script e me lo duplica 1 volta sola :mmm:

    il nome del file originale file.html

    quello duplicato file0.html
    e poi non duplica più :mmm:


  • User Attivo

    vabbè, fai così:

    <?php
    
    $prefisso_file = 'file';
    $suffisso_file = '.txt';
    
    $n=0;
    while (  file_exists($prefisso_file.$n.$suffisso_file) ) $n++;
     copy($prefisso_file.$suffisso_file,$prefisso_file.$n.$suffisso_file);
    ?>
    

  • User Attivo

    perfetto... :yuppi:

    alla prossima
    au revoir..
    by max :fumato: