probleme avec une function

Eléphanteau du PHP | 45 Messages

16 oct. 2008, 16:19

bonjour
voila je comprend pas pourquoi??
2mn pour faire ma ptit function et 15mn pour comprendre mon bug

function SIZE($file,$oct){
//$oct=1 => Ko =2 =>Mo =3 =>Go
($oct=='0')? $FileZipSize=(filesize($file)/'1024').'Ko':'';
($oct=='1')? $FileZipSize=((filesize($file)/'1024')/1000).'Mo':'';
($oct=='2')? $FileZipSize=(((filesize($file)/'1024')/1000)/1000).'Go':'';
echo $FileZipSize;
}

SIZE($filename_zip,1);

il m'affiche
0.0018994140625Mo0.0018994140625Mo
ce qui est bon mais en 2 fois

je me suis dit j'enleve le echo $FileZipSize de la function

la j'ai plus rien dutout

avec
echo SIZE($filename_zip,1); //j'ai rien non plus
et si je met hors function
echo $FileZipSize; //j'ai rien non plus

c'est ou en double ou rien???

merci

Mammouth du PHP | 19672 Messages

16 oct. 2008, 16:39

Tu as surtout écrit de façon pour le moins bizarre tes opérateurs ternaires.

Je vais te suggérer une autre méthode utilisant un switch :
<?php
function SIZE($file,$oct)
{
    //$oct=1 => Ko =2 =>Mo =3 =>Go
    switch ($oct)
    {
        case '1':
            $FileZipSize = (filesize($file)/1024) .'Ko';
            break;
        case '2':
            $FileZipSize = ((filesize($file)/1024) / 1024) .'Mo';
            break;
        case '3':
            $FileZipSize = (((filesize($file)/1024) / 1024) / 1024) .'Go';
            break;
        default:
            $FileZipSize = false;
    }
    return $FileZipSize;
}

echo(SIZE($filename_zip, 1));
essaye ça, ça devrait mieux fonctionner :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Eléphanteau du PHP | 45 Messages

16 oct. 2008, 16:46

merci a toi

on a meme pas le temps de cherché que l'on a deja la reponse d'un membre sur ce forum ca fait deja 2 question aujourd'hui que je poses et que l'on me répond tres rapidement
ca chapeau c'est tres rare de trouvé un forum si réactif vite dans mes favori


je viens de trouvé c'est
return $FileZipSize; au lieux de echo echo $FileZipSize;

et ca marche
function SIZE ($file,$oct){
//$oct=1 => Ko =2 =>Mo =3 =>Go
($oct=='0')? $FileZipSize=(filesize($file)/'1024').'Ko':'';
($oct=='1')? $FileZipSize=((filesize($file)/'1024')/1000).'Mo':'';
($oct=='2')? $FileZipSize=(((filesize($file)/'1024')/1000)/1000).'Go':'';
return $FileZipSize;
}

??? echo() je ne connaisais pas !!

merci encore

Mammouth du PHP | 19672 Messages

16 oct. 2008, 16:56

Les parenthèses sont facultatives avec echo, personnellement, je les mets systématiquement.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

16 oct. 2008, 17:03

L'ancien matheux que je suis apprécierait un truc du genre :
$FileZipSize = filesize($file) / pow(1024,$oct);
:langue:

Mammouth du PHP | 19672 Messages

16 oct. 2008, 17:05

L'ancien matheux que je suis apprécierait un truc du genre :
$FileZipSize = filesize($file) / pow(1024,$oct);
:langue:
Astucieux :)
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Administrateur PHPfrance
Administrateur PHPfrance | 11457 Messages

16 oct. 2008, 17:10

J'avais suggéré cette manière pour le clin d'œil
mais en y réfléchissant, elle est plus intéressante qu'il n'y paraît :
plus de switch, plus d'opérateur ternaire, plus de tests... une exécution directe !

si un forcené veut s'amuser à faire un benchmark... :lol:

Eléphanteau du PHP | 45 Messages

17 oct. 2008, 11:13

merci je voit pas trot le pow ??? pourquoi???

voila ma fonction terminé ptit function toute simple de mise en forme de la taille d'un fichier
mais comme vous avez pris le temps de m'aidé c'est normale , ca pourait aidé d'autre

function SIZE ($file){
(filesize($file)>='1000')? $FileZipSize=round(filesize($file)/'1024',2).' Ko' :'' ;
(filesize($file)>='1000000')? $FileZipSize=round((filesize($file)/'1024')/1024,2).' Mo' :'';
(filesize($file)>='1000000000')? $FileZipSize='<span class="txtroug"><b>'.round(((filesize($file)/'1024')/1024)/1024,2).' Go</b></span >' : '';
return $FileZipSize;
}

pour l'appeler
SIZE('nomdufichier');

je pense qu'il y a plus simple mais j'ai pas trouvé