[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Скрипт перевода размера файла из байтов в КБ, МБ
MishaNesoleniy
Ребят я не особо шарю в PHP, вообщем при нажатии на кнопку "Добавить" в базу заносится размер файла в байтах и выводится тоже в байтах...нужно чтобы в printf выводился размер в МБ или КБ в зависсимости от загружаемого файла....Спасибо кто поможет





<?php

include ("../../blocks/db.php");

$result = mysql_query ("SELECT buhsel FROM obprof_buh WHERE page = 'obprof'");
$myrow = mysql_fetch_array ($result);

?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<title><?php echo $myrow ['buhsel']?></title>
</head>
<body>


<?php


$result = mysql_query("SELECT id,
namebooks,
autorbooks,
typebooks,
splacebooks,
changebooks,
NewFilePatch,
date_format(datetime_today, '%d.%m.%Y в %H:%i') as datetime_today,
sizebooks
FROM addbooks_buh",$db);


$myrow = mysql_fetch_array ($result);

do {

printf ("<table width='1200' border='1' align='center' class='tablebuh'>
<tr>
<td><a href='../%s?id=%s'>%s</a></td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>%s</td>
</tr>
<tr>
<td>Изменено: %s</td>
</tr>
<tr>
<td>Размер: %s</td> //вот тут выводится в байтах
</tr>
</table>", $myrow ["NewFilePatch"],
$myrow ["id"],
$myrow ["namebooks"],
$myrow ["autorbooks"],
$myrow ["typebooks"],
$myrow ["splacebooks"],
$myrow ["changebooks"],
$myrow ["datetime_today"],
$myrow ["sizebooks"]);

}

while ($myrow = mysql_fetch_array ($result));

?>
</body>
</html>



Спустя 16 минут (17.05.2012 - 11:07) Nikitian написал(а):

Спустя 2 минуты, 37 секунд (17.05.2012 - 11:10) sergeiss написал(а):
Цитата (MishaNesoleniy @ 17.05.2012 - 11:51)
нужно чтобы в printf выводился размер в МБ или КБ в зависсимости от загружаемого файла....

На эту тему анекдот есть.

---
Только начинающий юзер думает, что в килобайте 1000 байт. Продвинутый же юзер ЗНАЕТ, что в километре - 1024 метра wink.gif
---

Намек понятен, я надеюсь?

Спустя 2 минуты, 7 секунд (17.05.2012 - 11:12) MishaNesoleniy написал(а):
я это понимаю...но мне нужно как то внедрить это в мой код..вот в чем проблема

Спустя 3 минуты, 27 секунд (17.05.2012 - 11:15) sergeiss написал(а):
Да, и еще. Замени цикл do-while() на while()!!! "Поповский" код - не самое лучшее изобретение в мире.

Спустя 6 минут, 21 секунда (17.05.2012 - 11:22) sergeiss написал(а):
Цитата (MishaNesoleniy @ 17.05.2012 - 12:12)
но мне нужно как то внедрить это в мой код..вот в чем проблема

Ты для начала подумай сам, что же именно ты будешь внедрять. Тут задача на уровне где-то 1 класса церковно-приходской школы wink.gif

Спустя 1 минута, 22 секунды (17.05.2012 - 11:23) MishaNesoleniy написал(а):
Пытаюсь вот с этим делом справиться


function filesize_get($file)
{
// проверяем существует ли файл
if(!file_exists($file)) return "Файл отсутствует.";

//определяем размер файла
$filesize = filesize($file);

// Если размер переданного в функцию файла больше 1кб
if($filesize > 1024)
{
$filesize = ($filesize/1024);
// если размер файла больше одного килобайта
// пересчитываем в мегабайтах
if($filesize > 1024)
{
$filesize = ($filesize/1024);
// если размер файла больше одного мегабайта
// пересчитываем в гигабайтах
if($filesize > 1024)
{
$filesize = ($filesize/1024);
$filesize = round($filesize, 1);
return $filesize." ГБ";

}
else
{
$filesize = round($filesize, 1);
return $filesize." MБ";
}

}
else
{
$filesize = round($filesize, 1);
return $filesize." Кб";
}

}
else
{
$filesize = round($filesize, 1);
return $filesize." байт";
}

}

Спустя 13 минут, 40 секунд (17.05.2012 - 11:37) Игорь_Vasinsky написал(а):
увидел топик, заинтересовало, начал писать функцию по преобразованию в разные размеры, в итоге понял что будет простыня.. бросил :lol:

 $data = 111234312112; //КБ

function getSize($data, $in_metric = 'b', $out_metric = 'mb')
{
switch($in_metric)
{
case 'b':

if($out_metric == 'b')
return $data . 'b';
elseif($out_metric == 'kb')
return ($data / 1024) . 'Kb';
elseif($out_metric == 'mb')
return ($data / 1024 / 1024) . 'Mb';
elseif($out_metric == 'gb')
return ($data / 1024 / 1024 / 1024) . 'Gb';
elseif($out_metric == 'tb')
return ($data / 1024 / 1024 / 1024 /1024) . 'Tb';

break;

case 'kb':

if($out_metric == 'b')
return $data * 1024 . 'b';
elseif($out_metric == 'kb')
return $data . 'Kb';
elseif($out_metric == 'mb')
return ($data * 1024 * 1024) . 'Mb';
elseif($out_metric == 'gb')
return ($data / 1024) . 'Gb';
elseif($out_metric == 'tb')
return ($data / 1024 / 1024) . 'Tb';

break;

......

}

}


echo getSize(1000, 'b', 'gb');

Спустя 16 минут, 43 секунды (17.05.2012 - 11:53) MishaNesoleniy написал(а):
проблема как функцию по преобразованию внедрить в printf.....вот этот момент меня интересует...если есть идеи помогите

Спустя 2 минуты, 7 секунд (17.05.2012 - 11:56) Игорь_Vasinsky написал(а):
printif не будет в такие пропорции конвертировать. кратные на 1024

Спустя 3 минуты, 10 секунд (17.05.2012 - 11:59) MishaNesoleniy написал(а):
получается тогда в printf не выведешь конвертированный размер....нужно отдельно выводить?

Спустя 13 минут, 6 секунд (17.05.2012 - 12:12) sergeiss написал(а):
MishaNesoleniy - я не знаю, зачем тебе это всё нужно. Но, по-моему, программирование - это не твоё дело.

Спустя 6 минут, 7 секунд (17.05.2012 - 12:18) MishaNesoleniy написал(а):
я тоже так думаю...ладно спасибо за ответы))

Спустя 15 минут, 8 секунд (17.05.2012 - 12:33) forza написал(а):
Вот она беда то в чем заключается...
Попов сказал: "do-while"... Все! Кроме do-while ничего не приемлено.
Попов сказал: "printf" ... Все! Кроме printf никаких функций для вывода нельзя использовать.
Мой вам совет. Если хотите научиться программировать, начните с ИРБИС куросв. Очень хорошо и подробно все расписано, и что самое главное - правильно.

Спустя 20 дней, 1 час, 44 минуты, 3 секунды (7.06.2012 - 14:17) Эли4ка написал(а):
вот готовый код функции,надеюсь разобраться не очень сложно..да и работает вроде нормально..
$size = htmlspecialchars($_POST['size']);
$x = 1;
function myfilesize($x, $size){
while ($size>1024) {
$size = $size/1024;
$x++;
}
$healthy = array("1", "2","3","4","5","6","7","8","9");
$yummy = array("б","кб","мб","гб","тб","пб","эб","зб","йб");
$newphrase = str_replace($healthy, $yummy, $x);
$size = round($size , 1);
$finish = $size . ' ' . $newphrase . '<br>';
return $finish;
}
echo myfilesize($x, $size);
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.