Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Php - bardziej skomplikowane obliczenia z procentami
Forum PHP.pl > Forum > PHP
denis94
Witam. Proszę o pomoc z bardziej skomplikowanymi obliczeniami procentów w php.

Tabela user składa się z imienia oraz czasu przebuwania na stronie (w minutach)

Przykład:

Marek 20
Ania 55
Łukasz 120
Agata 40
Michał 300

LINK DO PRZYKŁADU Z WYKRESEM

itd

Na stronie chcę umieścić wykres który przedstawiał by użytkowników oraz ich czas przebywania na stronie w procenntach. Problem w tym, że najpierw trzeba obliczyć ile wynosi 100% a następnie czasy przebywania na stronie każdego użytkownika przekształcić na ilość w procentach w stosunku do całości.
Skrypt samego tworzenia wykresu to nie problem (korzystam z google apis) lecz nieiwem w jaki sposób za pomocą php wykonać takie obliczenia

Prosiłbym o pomoc w wykonaniu takiego skryptu.
Wicepsik
A jak byś zrobił to na kartce? Dodajesz wszystko, potem dzielisz liczbę każdego użytkownika przez sumę wszystkich i mnożysz przez 100.
magu112
Jeżeli chodzi o obliczenie samego procentu to matematyka ;]:

  1. $czas_minuty = "120"; // czas przebywania na stronie
  2. $czas_calkowity = "600"; // całkowity czas od rejestracji na stronie
  3. $czas_wyjsciowy = $czas_minuty/$czas_calkowity*100; // obliczam procent
  4. echo $czas_wyjsciowy. '%'; // wyświetlam procent


musisz mieć datę rejestracji użytkownika ;]
darko
1. wyciągasz łączny czas przebywania użytkowników na stronie, przy założeniu, że kolumna przechowująca czas nazywa się czas masz:
  1. $suma = mysql_fetch_row(mysql_query('select sum(czas) from nazwa_tabeli')) or die(mysql_error());



2. następnie wyciągając kolejne czasy przebywania kolejnych użytkowników:

  1. mysql_query('select czas * 100 / '. $suma[0] . ' from nazwa_tabeli where warunek_dla_użytkownika') or die(mysql_error());

gdzie warunek_dla_użytkownika to warunek identyfikujący użytkownika, np wartość ID w bazie.
Można to też zrobić jednym zapytaniem, np.
  1. mysql_query('select czas * 100 / (select sum(czas) from nazwa_tabeli) from nazwa_tabeli where warunek_dla_użytkownika') or die(mysql_error());

Jeśli nie podasz warunku where, to zostaną wyciągnięte wszystkie wartości procentowe w całości dla każdego rekordu i o to chodziło
denis94
Dziękuję wszystkim za pomoc smile.gif

Jest tylko jedno niedociągnięcie. Suma procentów w skrypcie nie wynosi 100% lecz 98% winksmiley.jpg. To zapewne przez to, że gdy procent wynosi 15,6 ja wyświetlam tylko dwie pierwsze cyfry więc wyświetla się 15 lecz powinno być 16 w zaokrągleniu. Jak temu zapobiec?
magu112
o ile pamiętam to funkcja round
  1. $zaokraglony_wynik = round($liczba)
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.