Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Jak obliczyć ile miejsca na serwerze zajmą pliki
--Ramzes--
post 28.04.2008, 18:06:21
Post #1





Goście







Witam
W szkole na informatyce, nauczyciel nam zadał zadanie w którym musimy napisać kalkulator który ma obliczyć ile miejsca na serwerze zajmie nam dana ilość plików np po 3KB. Mógłby mnie ktoś nakierować jak to zrobić, ponieważ nigdy wcześniej nie miałem do czynienia z php. Z uwzględnieniem tego że np 1000kb to jeden megabajt
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 9)
Lejto
post 28.04.2008, 18:13:24
Post #2





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


a ile miejsca ma mieć serwer?


--------------------
Go to the top of the page
+Quote Post
--Ramzes--
post 28.04.2008, 18:16:01
Post #3





Goście







To niema znaczenia, chodzi o to żeby obliczyć ile miejsca zajmie np 1000 plików po 3kb, To ma być prosty kalkulator który to obliczy i wyświetli wynik, że np 1000 plików po 3kb to 3MB. jak się zapisuje 3KB tak 0.03 czy 0.3?
Go to the top of the page
+Quote Post
Lejto
post 28.04.2008, 18:22:17
Post #4





Grupa: Zarejestrowani
Postów: 1 385
Pomógł: 48
Dołączył: 23.05.2007

Ostrzeżenie: (0%)
-----


takie coś?
  1. <?php
  2. $a = 1000;
  3. $b = 0,3;
  4.  
  5. echo $a * $b;
  6. ?>

to nie jest do końca pełno działający kod operatory matematyczne to podstawa php poczytaj na manualu o tym


--------------------
Go to the top of the page
+Quote Post
maziak
post 28.04.2008, 18:30:45
Post #5





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


Generalnie rzecz biorac to tutaj nie trzeba niczego podnad proste podstawowe funckje.
Po 1. obsługa formularza
Po 2. operatory

Sprobuj to sam wykombinowac, jak bedziesz mial problemy to postnij to co wykombinowales, chetnie pomoge.
Powiedz tylko czy masz uwzglednic to ze 1MB to 1024 KB (a nie 1000) itd., czy mozesz miec to w pompce?

Ten post edytował maziak 28.04.2008, 18:34:12
Go to the top of the page
+Quote Post
--Ramzes--
post 28.04.2008, 18:46:59
Post #6





Goście







Wykombinowałem takie coś:
  1. <form method="post" action="oblicz.php">
  2. Wpisz ilość plików:
  3. <input type="text" name="pliki">
  4. Wpisz rozmiar pliku:
  5. <input type="text" name="rozmiar">
  6. <input type="submit" value="Policz">
  7. </form>

policz.php
  1. <?php
  2. $pliki=$_POST['pliki'];
  3. $rozmiar=$_POST['rozmiar'];
  4.  
  5. $wynik=$pliki * $rozmiar;
  6. echo $wynik.'kb';
  7. ?>

Cytat
Powiedz tylko czy masz uwzglednic to ze 1MB to 1024 KB (a nie 1000) itd., czy mozesz miec to w pompce?


Muszę
Go to the top of the page
+Quote Post
maziak
post 28.04.2008, 20:01:41
Post #7





Grupa: Zarejestrowani
Postów: 155
Pomógł: 17
Dołączył: 9.07.2007

Ostrzeżenie: (0%)
-----


No, to git, a to z tym 1024 generalnie mozesz rozwiazac tak :
  1. <?php
  2. $pliki=$_POST['pliki']; 
  3. $rozmiar=$_POST['rozmiar']; //Z tym, że wielkosc pliku wejsciowa podana ma byc w KB.
  4.  
  5.  
  6. $wynik=$pliki * $rozmiar;
  7.  
  8.  
  9. $zm=$wynik;
  10. $mnoz=0;
  11. for ($i=0;$i < 4; $i++) {
  12. if (($zm/1024) > 1 ){
  13. $mnoz++;
  14. $zm=$zm/1024;
  15. }
  16.  
  17. }
  18.  
  19. switch ($mnoz) {
  20. case 0: $przed="KB"; break;
  21. case 1: $przed="MB"; break;
  22. case 2: $przed="GB"; break;
  23. case 3: $przed="TB"; break;
  24. }
  25.  
  26. printf(" %.2f", $zm);
  27. echo $przed;
  28. ?>


Jezeli sie myle to mnie poprawcie. smile.gif Mam wrazenie ze sluzy do tego jedna funkcja, ktora mozna wszystko zalatwic, lecz niestety nie moge sobie przypomniec jaka. biggrin.gif Daj znac czy dziala.

Ten post edytował maziak 28.04.2008, 20:03:36
Go to the top of the page
+Quote Post
Crozin
post 28.04.2008, 21:41:30
Post #8





Grupa: Zarejestrowani
Postów: 6 476
Pomógł: 1306
Dołączył: 6.08.2006
Skąd: Kraków

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. header('Content-type: text/html; charset=utf-8');
  4.  
  5. if(isset($_POST['submit'])){
  6. $units = array(1 => 'B', 'KB', 'MB', 'GB', 'TB', 'PB');
  7.  
  8. $unit = $_unit = (int) $_POST['unit'];
  9. $size = $_size = (int) $_POST['size'];
  10. $amount = (int) $_POST['amount'];
  11.  
  12. $unitWord = isset($units[$unit]) ? $units[$unit] : $units[2];
  13.  
  14. $_size = $_size * $amount;
  15.  
  16. while($_unit > 1){
  17. $_size *= 1024;
  18. $_unit--;
  19. }
  20.  
  21. $resultSize = $_size;
  22. $resultUnit = $_unit;
  23. $resultUnitWord = $units[1];
  24.  
  25. while(($resultSize / 1024) > 1){
  26. $resultSize /= 1024;
  27. $resultUnit++;
  28. $resultUnitWord = isset($units[$resultUnit]) ? $units[$resultUnit] : ' W cholere....';
  29. }
  30.  
  31. echo sprintf('<p>%s plik(ów) po %s%s = %s%s</p>', $amount, $size, $unitWord, round($resultSize, 2), $resultUnitWord);
  32. }
  33.  
  34. ?><form action="" method="post">
  35. <fieldset>
  36. <legend>Kalkulator</legend>
  37. <label style="display: block;">Ilość plików: <input type="text" name="amount" value="<?php echo isset($_POST['amount']) ? (int) $_POST['amount'] : null; ?>" /></label>
  38. <label>
  39. Wielkość: <input type="text" name="size" value="<?php echo isset($_POST['size']) ? (int) $_POST['size'] : null; ?>" />
  40. <select name="unit">
  41. <option value="1" <?php echo (== $_POST['unit']) ? 'selected="selected"' : null; ?>>Bajty</option>
  42. <option value="2" <?php echo (== $_POST['unit']) ? 'selected="selected"' : null; ?>>Kilobajty</option>
  43. <option value="3" <?php echo (== $_POST['unit']) ? 'selected="selected"' : null; ?>>Megabajty</option>
  44. <option value="4" <?php echo (== $_POST['unit']) ? 'selected="selected"' : null; ?>>Gigabajty</option>
  45. </select>
  46. </label>
  47. <input type="submit" name="submit" value="Oblicz!" style="display: block" />
  48. </fieldset>
  49. </form>
Pisane z palca - ale może akurat zadziała biggrin.gif
Go to the top of the page
+Quote Post
marcio
post 28.04.2008, 21:55:41
Post #9





Grupa: Zarejestrowani
Postów: 2 291
Pomógł: 156
Dołączył: 23.09.2007
Skąd: ITALY-MILAN

Ostrzeżenie: (10%)
X----


  1. <?php
  2. function konwertuj($number) {
  3. $len = strlen($number);
  4. if($len < 4) {
  5. return sprintf("%d b", $number);
  6. }
  7. if($len >= 4 && $len <= 6) {
  8.  return sprintf("%0.2f Kb", $number / 1024);
  9. }
  10. if($len >= 7 && $len <= 9) {
  11. return sprintf("%0.2f Mb", $number / 1024 / 1024);
  12. }  
  13. return sprintf("%0.2f Gb", $number / 1024 / 1024 / 1024);
  14. }
  15. ?>

Funckja z mojego shell'a

P.S nie zawsze dobrze oblicza smile.gif

Ten post edytował marcio 28.04.2008, 21:56:38


--------------------
Zainteresowania: XML | PHP | MY(SQL)| C# for .NET | PYTHON
http://code.google.com/p/form-builider/
Moj blog
Go to the top of the page
+Quote Post
Kicok
post 29.04.2008, 07:16:09
Post #10





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

Ostrzeżenie: (0%)
-----


  1. <?php
  2.  
  3. function rozmiar( $bajty, $po_przecinku = 1 )
  4. {
  5. $jednostki = array( 'B', 'kB', 'MB', 'GB', 'TB' );
  6.  
  7.  
  8. $i = 0;
  9. while( $bajty >= 1024 ) 
  10. {
  11. $bajty /= 1024;
  12. ++$i;
  13. }
  14.  
  15. return round( $bajty, $po_przecinku ) . ' ' . $jednostki[$i];
  16. }
  17.  
  18.  
  19. echo rozmiar( 500 ) . '<br />';
  20. echo rozmiar( 1024 ) . '<br />';
  21. echo rozmiar( 11111, 2 ) . '<br />';
  22. echo rozmiar( 10000000000 ) . '<br />';
  23.  
  24. ?>


--------------------
"Sumienie mam czyste, bo nieużywane."
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 13.08.2025 - 22:41