Visualizzazione dei risultati da 1 a 4 su 4
  1. #1

    Funzione richiamare se stessa

    Scusate il titolo ma capirete tra un po cosa significa.
    Ho fatto una funzione che mi va a controllare se un file inviato ha lo stesso nome di un file già salvato:

    Codice PHP:
    function gallery($dir$image$ciclo){
    $file=$dir.$image;

    if(
    file_exists($file)){ // controllo se il file esiste
    $ciclo++; // aumento di 1 unita il ciclo
    $images=explode(".",$image); // converto in array l'immagine
    $ext=$images[count($images) - 1]; // mi creo una variabile dove vado a salvare l'estensione del file
    unset($images[count($images) - 1]); // elimino l'ultimo array che sarebbe l'estensione
    $newimage=implode(".",$images); // riunisco il nome del file
    $newimage.="_$ciclo.$ext"// aggiungo il ciclo e l'estensione al nome del file.

    // ora il problema viene qui e non capisco il perchè e cioè mi dovrebbe rifare la funzione per verificare se questo nuovo nome esiste oppure no ma non lo fa
    gallery($dir$newimage$ciclo);
    }else{
    return 
    $image;
    }
    }
    echo 
    gallery("../direcotry/""image.jpg"0); 

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,503
    // ora il problema viene qui e non capisco il perchè e cioè mi dovrebbe rifare la funzione per verificare se questo nuovo nome esiste oppure no
    E invece cosa fa?

  3. #3
    Scusate me ne vergogno tanto ma mi ero dimenticato il return.
    Comunque può servire a qualcun'altro come tutorial.
    Spero che chi lo userà mi ringrazierà , scherzo

  4. #4
    Rettifico la mia funzione per un bug:

    Codice PHP:
    function gallery($dir$image$ciclo){
    $file=$dir.$image;

    if(
    file_exists($file)){ // controllo se il file esiste
    $ciclo++; // aumento di 1 unita il ciclo
    $images=explode(".",$image); // converto in array l'immagine
    $ext=$images[count($images) - 1]; // mi creo una variabile dove vado a salvare l'estensione del file
    unset($images[count($images) - 1]); // elimino l'ultimo array che sarebbe l'estensione

    // verifico se vi è un backslash nell'ultimo array e se la variabile ciclo è maggiore di 1
    // questo perche al primo passaggio queste righe verranno ignorate
    if(strpos($images[count($images) - 1], "_") == true && $ciclo>1){
    $lastarr=$images[count($images) - 1]; // inserisco l'ultimo array in una variabile
    $char=substr($lastarr,-1); // ne estraggo l'ultimo carattere
    if(is_numeric($char)) $images[count($images) - 1]=substr($lastarr,0,-2); // verifico se quest'ultimo carattere è numerico, se è affermativo tolgo gli ultimi 2 caratteri alla stringa $lastarr e la salvo il rimanente della stringa nell'ultimo array images
    }

    $newimage=implode(".",$images); // riunisco il nome del file
    $newimage.="_$ciclo.$ext"// aggiungo il ciclo e l'estensione al nome del file.


    // riprendo la funzione
    return gallery($dir$newimage$ciclo);
    }else{
    return 
    $image;
    }
    }
    echo 
    gallery("../direcotry/""image.jpg"0); 

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.