Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Kalkulator podsieci oraz skrypt do przeliczania jednostak danych i czasu
Forum PHP.pl > Forum > Przedszkole
akurczyk
Witam,
Napisałem na konkurs 2 kalkulatory. Pierwszy z nich służy do obliczania adresu sieciowego oraz rozgłoszeniowego hosta (we wszystkich możliwych notacjach) na podstawie adresu IP (również w dowolnej notacji) oraz maski podsieci.

Pierwszy skrypt:
http://kklodzka.pdg.pl/subnet_calculkator.php
http://kklodzka.pdg.pl/subnet_calculkator.txt (kod)

Proszę o jakieś sugestie i uwagi. Może da się to jakoś zoptymalizować lub uprościć.

Drugi skrypt służy do przeliczania danych pomiędzy jednostkami danych i czasu, np. 100Mb/s na GB/10min. Jest mi to potrzebne do popularnego zadania z kurierem niosącym pendrivea między oddziałami firmy. W takim zadaniu trzeba zazwyczaj określić czy kureir jest szybszy od sieci Fast Ethernet (100Mb/s).

Pierwsza wersja skryptu:
http://kklodzka.pdg.pl/unit_calculator.php
http://kklodzka.pdg.pl/unit_calculator.txt (kod)

Wersja z << i >>:
http://kklodzka.pdg.pl/unit_calculator2.php
http://kklodzka.pdg.pl/unit_calculator2.txt (kod)

Druga wersja skryptu niestety nie działa, najprawdopodobniej dlatego że gdy zamieniam TB na b muszę zrobić << lub >> o więcej niż 32. Proszę o pomoc w rozwiązaniu tego problemu oraz o sugestie jak jeszcze mogę usprawnić ten skrypt.
wookieb
Cytat
Proszę o jakieś sugestie i uwagi. Może da się to jakoś zoptymalizować lub uprościć.

http://forum.php.pl/index.php?showtopic=13...mp;#entry685885

Kod
//From TB
if($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "TB") $result = $_POST["input_data_value"];
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "Tb") $result = $_POST["input_data_value"]*8;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "GB") $result = $_POST["input_data_value"]*1024;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "Gb") $result = $_POST["input_data_value"]*1024*8;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "MB") $result = $_POST["input_data_value"]*1024*1024;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "Mb") $result = $_POST["input_data_value"]*1024*1024*8;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "kB") $result = $_POST["input_data_value"]*1024*1024*1024;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "kb") $result = $_POST["input_data_value"]*1024*1024*1024*8;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "B") $result = $_POST["input_data_value"]*1024*1024*1024*1024;
elseif($_POST["input_data_unit"] == "TB" && $_POST["output_data_unit"] == "b") $result = $_POST["input_data_value"]*1024*1024*1024*1024*8;
... i tak dla wszystkich jednostek czyli 10 * 10 = 100 linii na samo przeliczenie

Myślałem, że padne...

Wicepsik
Tylko nie mów że wygrałeś haha.gif
Zbyt dużo zbędnego kodu. Nie myślałeś by go skrócić?
akurczyk
LOL Myślałem, ale nie wiem jak i właśnie dlatego tutaj piszę. Macie jakieś pomysły jak można usprawnić te kody?questionmark.gif Jak mogę zrobić << lub >> o więcej niż 32?questionmark.gif
P.S. Nie chcę korzystać z żadnych dodatkowych klas, bo wiem że da się to zrobić w paru linijkach, gdzieś już taki kod widziałem, tylko wtedy nie był mi on potrzebny, a teraz nie mogę go znaleźć.
wookieb
A klasa nie może się składać z paru linijek? Przerób sobie na funkcje i nie będzie to klasą... Dałem ci link jak można to w łatwy nie inwazyjny sposób rozwiązać.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.