Visualizzazione dei risultati da 1 a 10 su 15

Hybrid View

  1. #1
    Sono queste le cose che ti bloccano per giorni... Comunque la soluzione era semplice:
    supponiamo di avere alcune immagini in una cartella, una deve essere cancellata e le altre rinominate come le precedenti in sequenza. Ma inevitabilmente si verificherà che un file inizierà ad avere il nome di un file gìà presente ecc.
    Un pò come il gioco delle Torri di Hanoi ho pensato che fosse necessario risolvere con 2 cicli while, uno che rinomina i file restanti in sequenza con un nome temporaneo e l'altro che riporta i file al nome che mi serve.

    Grazie a tutti e ancora Buon Anno
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    Quote Originariamente inviata da carlaravelli Visualizza il messaggio
    Ma inevitabilmente si verificherà che un file inizierà ad avere il nome di un file gìà presente ecc.
    Un pò come il gioco delle Torri di Hanoi ho pensato che fosse necessario risolvere con 2 cicli while, uno che rinomina i file restanti in sequenza con un nome temporaneo e l'altro che riporta i file al nome che mi serve.

    è il peggior modo di farlo credo! se a quanto ho capito i tuoi nomi sono numeri (o stringhe costanti + numeri), puoi sfruttare l'ordinamento e evitare il problema...Oppure in ogni caso basta usare un ordinamento di stringhe (che so, quello alfabetico)...
    Nel peggiore dei casi (e non so bene cosa stai facendo) ti basta dare un nome temporaneo a UN solo file, rinominare gli altri e poi risistemare quello.

    Così fai fare un lavoro inutile, lento, eccessivo e raddoppi la potenzialità di errori!

  3. #3
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    codice:
    $listafile={primo,secondo,terzo,quarto}
    $handle1=$listafile[0];
    $handle2;//puoi anche non dichiararla, o puoi metterla uguale a quello che vuoi, cambia niente
    rename($listafile[0];'_temp');
    for($i=1;$i<4;++$i){
     $handle2=$listafile[$i];
     rename($listafile[$i];$handle1);
     $handle1=$handle2;
    }
    rename($listafile[0];$handle1);
    dove rename è un'ipotetica funzione che prende in input il nome del file da rinominare e il nome da dargli... ovviamente poi te l'adatti

  4. #4
    Non ho ben capito il codice, lo commento per vedere se ho capito bene:
    Codice PHP:
    $listafile={primo,secondo,terzo,quarto// diciamo che metto in un array i nomi delle immagini
    // in realtà come avevi intuito, le immagini hanno un nome del tipo bg_XX.jpg SEMPRE
    $handle1=$listafile[0]; // $handle1 == primo (in questo caso)
    $handle2;// è una variabile
    rename($listafile[0];'_temp'); // il vettore $listafile diventa (_temp,secondo,terzo,quarto)
    for($i=1;$i<4;++$i){ // ciclo per quanti sono gli elementi di $listafile escluso quello di posto 0
     
    $handle2=$listafile[$i]; // al primo ciclo è $handle2 == secondo
     
    rename($listafile[$i];$handle1); // La funzione rinomina il file che si chiamava secondo in primo
     
    $handle1=$handle2// $handle1 == secondo
    // alla fine del ciclo dovrei avere rinominato i files in _temp primo secondo terzo
    // e una variabile $handle1 == quarto
    rename($listafile[0];$handle1); // rinomino il file _temp in quarto 
    alla fine ho rinominato i file come erano prima o mi sbaglio? se dopo la cancellazione ne avevo eliminato
    uno allora esso sarà sempre mancante... Sicuramente ho capito male qualcosa!
    Viviamo tutti in una palude di fango, ma alcuni di noi guardano le Stelle http://www.comunicareoltre.it

  5. #5
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    228
    Codice PHP:
    if(isset($_GET['del'])){// è un numero o è una stringa tipo bg_7 o bg_7.jpg? 
        //se è una stringa del tipo bg_NUMERO usi $k=split('bg_',$_GET['del'],2)[1]; 
        //->>>>puoi evitare losplit passando direttamente il numero in GET, ma devi rivedere il tuo sistema
        //ALTRIMENTI $k=$_GET['del'];
        
    $eliminato 0;
        
    $nome_bg $_GET['del'].".jpg";
        
    $directory "../immagini/sfondi/";
        
    $fildel $directory.$nome_bg;
        
    $i=0;//IMPORTANTE
        
    if (unlink($fildel)){
            
    //if(is_dir($directory)){->lo saprai se è una cartella o no*
            
    $dir opendir($directory); // apro la directory FIN QUI TUTTO OK!!!!!!!!!!!!!!!!
            
            
    while (false !== ($file readdir($directory))) {//li conti
                
    if ($file != "." && $file != "..") {
                    
    $file $directory.'/'.$file;
                    if(
    is_file($file)){ 
                        ++
    $i;
                    }
                }
            }
            
    $j=$k;
            while(
    $j<=$i){//parti da quello successivo a quello eliminato
                
    $file $directory.$j.".jpg" ;
                    
    rename($directory.$file$directory."bg_" $j-".jpg");  // lo rinomino e gli do il nome del primo, ciascuno successivo potrà prendere il nome del precedente perchè sarà l'unico a chiamarsi così
                
    ++$j;
            }
            
    //}VEDI SOPRA*
            
    $eliminato 1// cambio a 1 la variabile di conferma
        
    // fine if di cancellazione del file

    Ultima modifica di SimoX90; 07-01-2014 a 19:26

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 © 2026 vBulletin Solutions, Inc. All rights reserved.