Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18
  1. #1
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Creare dinamicamente nuovi file txt dopo aver verificato la presenza dell'ultimo...

    Mi servirebbe del codice affinchè:

    data la presenza sul mio spazio di tot file txt:

    file1 .txt
    file2 .txt
    file3 .txt


    verificasse appunto il numero dell'ultimo presente e ne aggiungesse automaticamente il progressivo:

    in questo caso file4 .txt

    Spero di essere stato sufficientemente chiaro ma nel caso non esitate a domandarmi dettagli!


    Grazie!!!


  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    44
    Ciao , ho un po di fretta ma potresti partire da questo:

    <?php

    // percorso della directory da leggere
    $directory = "test";

    // instanziamo l'oggetto e apriamo la directory
    $d = dir($directory);

    // impostiamo un ciclo while() per scorrere tutto il contenuto
    while ($read = $d->read()) {


    if($read != "." && $read != "..") {

    // in questo esempio stampi a video i nomi di file e directory
    // qui dovresti inserire un controllo sul nome del file e effettuare l'incremento
    // quando trovato l'ultimo
    echo $read . "
    \n";

    }

    }

    // chiudiamo la directory
    $d->close();

    ?>

    Più tardi gli do un'occhiata e te lo posto se riesco....

  3. #3
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    //es
    $file = array('file3.txt','file2.txt','file1.txt');
    usort($file,"strnatcmp");
    $ultimo_file array_pop($file); // estrai l'ultimo file
    $numero =preg_replace("/[^\\d]/",'',$ultimo_file); // recuperi il numero
    echo $numero// hai l'ultimo numero e puoi incrementarlo per il successivo 

  4. #4
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    Grazie a tutti e due ma...

    Per il primo caso...

    // in questo esempio stampi a video i nomi di file e directory
    // qui dovresti inserire un controllo sul nome del file e effettuare l'incremento
    // quando trovato l'ultimo

    Come fare?

    Per il secondo...


    $file = array('file3.txt','file2.txt','file1.txt');

    Come posso rendere il tutto dinamico? Perchè non so quanti elementi l'array contenga...

    GRAZIE COMQUE A TUTTI E DUE!


  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Il mio era solo un esempio. Una volta che ti cicli la directory e hai tutti i nomi dei file il discorso è lo stesso.

  6. #6
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    si si ho capito che era un es.

    Ma mi uniresti il discorso del ciclare tutti i nomi dei files con il tuo script?

    Mi manca questo passaggio

    GRAZIE 1000 comque!


  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    // supponendo che la directory che contiene i file si chiami elenco
    $elenco_file = array();
    if (
    $handle opendir('elenco')) {
       while (
    false !== ($file readdir($handle))) {
           if (
    $file != "." && $file != "..") {
               
    $elenco_file[] = $file;
           }
       }
       
    closedir($handle); 
    }
    /*
    echo "<pre>";
    var_dump($elenco_file);
    echo "</pre>";
    */ 
    A questo punto il tuo array contenete i file è $elenco_file.
    Su questo puoi applicare il codice d'esempio di prima.

  8. #8
    Utente di HTML.it L'avatar di freetom
    Registrato dal
    Nov 2001
    Messaggi
    3,725

    grazie infinite e se volessi...

    creare dinamicamente il filenumeromancante .txt?

    Mi spiego meglio...

    Ho necessità che:

    lo script postato sopra riesca a capire.. non solo l'ultimo numero mancante progressivo ma anche quelli eventualmente mancanti nel mezzo...

    es...

    nella directory elenco posso avere questa situazione:

    file1.txt
    file3.txt
    file4.txt

    in questa situazione, mi piacerebbe se fosse possibile, riempire prima gli "spazi progressivi vuoti" cioè di file2.txt (in questo caso) prima di aggiungere il file5.txt

    Sperando di essere stato abbastanza chiaro... attendo lumi in merito

    GRAZIE!


  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Codice PHP:
    <?php
    $files 
    = array("file1.txt","file6.txt","file4.txt","file3.txt"); // array di esempio

    function primoMancante($array) {
    usort($array,"strnatcmp");
    $numeri = array();
    foreach(
    $array as $file) {
        
    $numero preg_replace("/[^\\d]/",'',$file);
        
    $numeri[] = $numero;
        }
    $maggiore array_pop($numeri);
    $mancanti array_diff(range(1,$maggiore),$numeri);
    $primo_mancante array_slice($mancanti,0,1);
    return 
    $primo_mancante[0];
    }

    $numero_mancante primoMancante($files);
    echo 
    $numero_mancante// restituisce 2. Nel caso non ci siano numeri mancanti restituisce il maggiore
    ?>
    per avere direttamente il nome del file basta che sostituisci l'ultima riga della funzione
    return $primo_mancante[0];
    con questa
    return 'file'.$primo_mancante[0].'.txt';

  10. #10
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Ignora il codice precedente, c'era un problema. Con questo nel caso non ci siano numeri mancanti nella sequenza dei nomi dei file ti restituisce il nome successivo all'ultimo già pronto per l'uso, se invece ne mancano ti restituisce il primo nome utilizzabile.
    Codice PHP:
    <?php
    $files 
    = array("file1.txt","file6.txt","file4.txt","file3.txt","file2.txt","file5txt"); 
    // in questo caso restituirebbe file7.txt perchè non ne manca nessuno 

    // $files = array("file1.txt","file6.txt","file4.txt","file3.txt","file2.txt");
    // in questo caso restituirebbe file5.txt, cioè il primo mancante

    function prossimoFile($array) {
    usort($array,"strnatcmp");
    $numeri = array();
    $tmp = array();
    foreach(
    $array as $file) {
        
    $numero preg_replace("/[^\\d]/",'',$file);
        
    $numeri[] = $numero;
        
    $tmp[] = $numero;
        }
    $maggiore array_pop($tmp);
    $mancanti array_diff(range(1,$maggiore),$numeri);
    if (
    count($mancanti) == 0){
        
    $maggiore $maggiore+1;
        return 
    "file".$maggiore.".txt";
        }
    else {
        
    $primo_mancante array_slice($mancanti,0,1);
        return 
    'file'.$primo_mancante[0].'.txt';
        }
    }    

    $successivo prossimoFile($files);
    echo 
    $successivo
    ?>

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.