Page 1 sur 1
probleme avec une function
Posté : 16 oct. 2008, 16:19
par traker
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
Posté : 16 oct. 2008, 16:39
par Cyrano
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

Posté : 16 oct. 2008, 16:46
par traker
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
Posté : 16 oct. 2008, 16:56
par Cyrano
Les parenthèses sont facultatives avec echo, personnellement, je les mets systématiquement.
Posté : 16 oct. 2008, 17:03
par albat
L'ancien matheux que je suis apprécierait un truc du genre :
$FileZipSize = filesize($file) / pow(1024,$oct);

Posté : 16 oct. 2008, 17:05
par Cyrano
L'ancien matheux que je suis apprécierait un truc du genre :
$FileZipSize = filesize($file) / pow(1024,$oct);

Astucieux

Posté : 16 oct. 2008, 17:10
par albat
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...

Posté : 17 oct. 2008, 11:13
par traker
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é