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

    [funzioni] problema con return

    ciao,
    questa è la funzione che uso per ridimensionare le immagini:

    Codice PHP:
    function crea_immagine ($file_upload,$path,$dest_temporanea,$larghezza_massima,$dest_finale)
    {
    if ( 
    $_FILES[$file_upload]['type'] == "image/gif") { $compressione 85;  $ext=gif$funzione="imagecreatefromgif";  $funzione2="imagegif";}
    if ( 
    $_FILES[$file_upload]['type'] == "image/x-png") { $compressione 9;  $ext=png$funzione="imagecreatefrompng";  $funzione2="imagepng";}
    if ( 
    $_FILES[$file_upload]['type'] == "image/pjpeg") { $compressione 85;  $ext=jpg$funzione="imagecreatefromjpeg"$funzione2="imagejpeg";}
    $nome_temp=date ("ymdhi");
    move_uploaded_file($_FILES[$file_upload]['tmp_name'],"$path/$dest_temporanea/$nome_temp.$ext") or die ("Non pubblica $_FILES[$file_upload]['tmp_name']") ;
    $imagesize=GetImageSize("$path/$dest_temporanea/$nome_temp.$ext");
    if ( 
    $imagesize[0] > $larghezza_massima )
    $larghezza_finale $larghezza_massima$altezza_finale $imagesize[1]/($imagesize[0]/$larghezza_massima); } else { $larghezza_finale $imagesize[0]; $altezza_finale$imagesize[1];}
    $dest_finale "$path/$dest_finale.$ext";
    $thumb =  imageCreateTrueColor ($larghezza_finale$altezza_finale) or die("Impossibile creare l immagine");
    $src $funzione("$path/$dest_temporanea/$nome_temp.$ext") or die ("Impossibile aprire l'immagine originale"); 
    imagecopyresampled ($thumb$src0000$larghezza_finale$altezza_finaleimageSx($src), imageSy($src)) or   die("Impossibile ridimensionare l'immagine"); 
    $funzione2($thumb$dest_finale$compressione) or   die("Impossibile salvare l immagine"); 
    unlink ("$path/$dest_temporanea/$nome_temp.$ext");

    Tutto funziona correttamente, quindi no problem.
    Ho pero' bisogno di portare fuori anche il valore della variabile $ext,
    Ho provato a mettere return $ext;
    Ma non funziona, non prende niente se scrivo echo $ext; nella pagina dove uso la funzione.
    E non posso fare cosi:
    $ext= crea_immagine (**parametri);
    perchè mi andrebbe a ricreare anche l' immagine, come faccio??
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  2. #2
    Beh, prima di tutto ti consigliere di dichiare $ext fuori dagli if
    codice:
    $ext = '' ;
    if (....
    Poi sarebbe piu corretto usare else if al posto di tutti quegli if

    E sopratutto
    $ext=gif;
    se fai cosi vuol dire che gif è una costante, non una stringa, quindi dovresti metterlo tra virgolette
    $ext='gif';
    anche per gli altri.

    Poi per $ext ti consiglierei di assegnare un volore standard in caso non sia nessuno dei tre oppure far un "return false;" o "return null;" nel caso non possa andare avanti se nessun if ha riscontro positivo.

    Molte dei punti sopra potrebbero essere la causa del fatto che "return $ext" non restituisca nulla
    Poi ovviamente il "return $ext" lo devi mettere alla fine della funzione, prima della chiusura delle graffe.
    Ed il valore ritornerà in queto modo
    $variabile_che_deve_contenere_ext = crea_immagine ( ... ) ;
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  3. #3
    si ho capito cosa intendi.
    Ma Se alla fine di tutta la funzione metto echo $ext in invece di retur, mi da il valore corretto, quindi il valore di $ext lo prende correttamente.

    Il problema è che mi sembra un po strano che per poter estrarre il valore di $ext devo fare:
    $estensione = crea_immagine(bla bla bla);

    Anche perchè lo scopo della funzione non è appunto sapere l' estensione, ma è bensi ridimensionare l' immagine.

    non so se mi son spiegato bene... cmq intanto grazie per l aiuto che mi stai dando...
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

  4. #4
    Ed invece è proprio cosi, per estrarre un valore da una funzione devi usare return, perchè le variabili dichiarate all'interno solo utilizzabili solo da quel blocco/funzione
    Non vedo perchè non far ritornare $ext visto che è un valore che serve e attualmente la funziona non ritorna nulla.
    Unico modo per fare come vuoi tu sarebbe usare "global" ma non è proprio bello da fare, sarebbe piu sbagliato che far ritornare l'estensione da una funzione che ridimensiona , meglio il return
    Chiamatemi sven se volete non ho voglia di fare una nuova email per una nuova registrazione xD
    Mac Future User , Ventilatore for PC Cooler user , - dry is coming -

  5. #5
    ok, allora faro' cosi.. grazie mille!!
    IN REALTA' SONO REGISTRATO DAL 2001 PERO' MI HANNO BANNATO PER AVER SCRITTO DUE MESSAGGI NELLA SEZIONE ERRATA...CHE RICONOSCENZA!!!

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.