• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
تبدیل واحد حجم فایل ها در جدول php
#1
سلام
یک جدول php دارم که فایل ها داخلش آپلود میشن و در هر سطر یک فایل قرار میگیره ... رو به روی هر سطر یک ستونی قرار داره که حجم فایل ها رو مشخص می کنه ... مشکلی که وجود داره اینه که همه حجم ها به بایت هستند !
میخوام کدی رو به جدولم اضافه کنم که حجم ها رو بر اساس تعداد کاراکترشون به واحد های دیگه تبدیل کنه ...

این کدیه که برای این منظور پیداش کردم ... :
کد:
<?php


    function formatSizeUnits($bytes)
    {
        if ($bytes >= 1073741824)
        {
            $bytes = number_format($bytes / 1073741824, 2) . ' GB';
        }
        elseif ($bytes >= 1048576)
        {
            $bytes = number_format($bytes / 1048576, 2) . ' MB';
        }
        elseif ($bytes >= 1024)
        {
            $bytes = number_format($bytes / 1024, 2) . ' KB';
        }
        elseif ($bytes > 1)
        {
            $bytes = $bytes . ' bytes';
        }
        elseif ($bytes == 1)
        {
            $bytes = $bytes . ' byte';
        }
        else
        {
            $bytes = '0 bytes';
        }

        return $bytes;
}
?>


و این هم کد خودم هستش ... :


کد:
<?php
echo"<style>
.highlighted { background: magenta; }
span + span .highlighted { background: magenta; }
form.filter + table { border: solid thin #aaa; }
form.filter + table th { margin: 2px; padding: 5px; border: solid thin #bbb; }
form.filter + table td { margin: 2px; padding: 5px; border: solid thin #ccc; }
</style>";

// Connect to the database
$dbLink = new mysqli('localhost', 'root', '', 'myfiles');
if(mysqli_connect_errno()) {
    die("MySQL connection failed: ". mysqli_connect_error());
}

// Query for a list of all existing files
$sql = 'SELECT `id`, `name`, `mime`, `size`, `date`, `created`, `firstname`,  `lastname` ,  `stnumber` , `Email` FROM `file`';
$result = $dbLink->query($sql);

// Check if it was successfull
if($result) {
    // Make sure there are some files in there
    if($result->num_rows == 0) {
        echo '<p>There are no files in the database</p>';
    }
    else {

        // Print the top of a table

        echo '
                <form method="post" action="delete2.php" >
                <table border="1" cellpadding="0" cellspacing="0" width="70%" class="filterable">
                <tr>
                    <th><b><input name="checkall" type="checkbox" onclick="check()"/></b></th>
                    <th><b>ID</b></th>
                    <th><b>Name</b></th>
                    <th><b>Size (bytes)</b></th>
                    <th><b>Created date</b></th>
                    <th><b>Uploded Time</b></th>
                    <th><b>First Name</b></th>
                    <th><b>Last Name</b></th>
                    <th><b>Student Number</b></th>
                    <th><b>Email</b></th>
                    <th><b>&nbsp;</b></th>
                    <th><b>Edit</b></th>
                    <th><b>&nbsp</b></th>
                </tr>';

        // Print each file
        while($row = $result->fetch_assoc()) {
            echo "
                <tr>
                    <td><input name='selector[]' type='checkbox' id='myCheck' value='{$row["id"]}'</td>
                    <td>{$row['id']}</td>
                    <td>{$row['name']}</td>
                    <td>{$row['size']}</td>
                    <td>{$row['date']}</td>
                    <td>{$row['created']}</td>
                    <td>{$row['firstname']}</td>
                    <td>{$row['lastname']}</td>
                    <td>{$row['stnumber']}</td>
                    <td>{$row['Email']}</td>
                    <td><a href='get_file.php?id={$row['id']}'>Download</a></td>
                    <td><a href='edit.php?id=" . $row['id'] . "'>Edit</a></td>
                    <td><a href='delete.php?id=" . $row['id'] . "'>Delete</a></td>
                </tr>";
        }

        // Close table
        echo '</table>
<br>
<input type="submit" class="btn btn-danger" value="Delete" name="delete">

</form>';
    }

    // Free the result
    $result->free();
}
else
{
    echo 'Error! SQL query failed:';
    echo "<pre>{$dbLink->error}</pre>";
}

// Close the mysql connection
$dbLink->close();
echo'<script type="text/javascript" src="filter.js"></script>';
?>

</br>
<head>
<title>Multiple Upload</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
</head>
<body>
  <form action="upload5-1.php" method="post" enctype="multipart/form-data">
        <p><input type="file" name="file[]" id="fileField" multiple="multiple"></p>
        <p><button type="submit" name="submit">آپلود فایل ها</button></p>
  </form>


</body>
</html>


کسی میتونه کمکم کنه که این دو کد رو با هم ترکیب و سازگار کنم ...
یا کسی هست که کد بهتری برای این کار داشته باشه ؟!

اینم تصویری از جدول ... :

[عکس: 82354169860986671872.gif]
ممنون
  پاسخ
تشکر شده توسط :
#2
اون فانکشن رو تو صفحه include کن یا مثلا کپی/پیست کن، بعد جایی که می خوای حجم رو نشون بدی به جای $row['size'] بنویس:
کد پی‌اچ‌پی:
formatSizeUnits($row['size']) 
غایب
  پاسخ
تشکر شده توسط : mohammad ali
#3
(۱۳۹۳ دى ۰۷, ۱۲:۲۶ ب.ظ)Alaa نوشته: اون فانکشن رو تو صفحه include کن یا مثلا کپی/پیست کن، بعد جایی که می خوای حجم رو نشون بدی به جای $row['size'] بنویس:
کد پی‌اچ‌پی:
formatSizeUnits($row['size']) 


نمیشه ... ! formatSizeUnits هم میاد توی خروجی چاپ می شه !!
اینطوری : ( formatSizeUnits(1457087
به عنوان خروجی چاپش می کنه ...
کد:
<td>formatSizeUnits({$row['size']})</td>

به این سادگی نیست ...
  پاسخ
تشکر شده توسط :
#4
خب به خاطر اینه که داره به دید اچ‌تی‌ام‌ال بهش نگاه میکنه!
کد پی‌اچ‌پی:
<td>{formatSizeUnits($row['size'])}</td
این رو امتحان کن.
به همین سادگیه، فقط باید تابع رو فراخوانی کنی !
غایب
  پاسخ
تشکر شده توسط : mohammad ali
#5
ارور میده ...

Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in E:\xampp\htdocs\upload9\list_files4.php on line 90
  پاسخ
تشکر شده توسط :
#6
اون خط رو اینجوری بنویس :
کد پی‌اچ‌پی:
<td>" . formatSizeUnits($row['size']) . "</td
این دیگه جواب میده.
غایب
  پاسخ
تشکر شده توسط : mohammad ali
#7
(۱۳۹۳ دى ۰۸, ۰۱:۳۷ ب.ظ)Alaa نوشته: اون خط رو اینجوری بنویس :
کد پی‌اچ‌پی:
<td>" . formatSizeUnits($row['size']) . "</td
این دیگه جواب میده.


بازم نشد ... !

Fatal error: Call to undefined function formatSizeUnits() in E:\xampp\htdocs\upload9\list_files4.php on line 90
  پاسخ
تشکر شده توسط :
#8
این کد رو اول فایلت کپی کن تا تابع رو بشناسه دیگه. تابع رو پیدا نکرده.
کد پی‌اچ‌پی:
function formatSizeUnits($bytes)
    {
        if (
$bytes >= 1073741824)
        {
            
$bytes number_format($bytes 10737418242) . ' GB';
        }
        elseif (
$bytes >= 1048576)
        {
            
$bytes number_format($bytes 10485762) . ' MB';
        }
        elseif (
$bytes >= 1024)
        {
            
$bytes number_format($bytes 10242) . ' KB';
        }
        elseif (
$bytes 1)
        {
            
$bytes $bytes ' bytes';
        }
        elseif (
$bytes == 1)
        {
            
$bytes $bytes ' byte';
        }
        else
        {
            
$bytes '0 bytes';
        }

        return 
$bytes;

غایب
  پاسخ
تشکر شده توسط : mohammad ali
#9
درست شد ...
خیلی ممنون از لطفتون .
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان