Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [HTML][PHP]Glosowanie
Forum PHP.pl > Forum > Przedszkole
marcin-1981
Witam, mam pytanie jak zrobić taki suwak jak na wp.pl w każdym art.

Mamy dwa kciuki i style generujące wypełnienie ale jak to zrobić

Mam kciuki i pasek kiedy ręcznie wpiszę w jednym 60 a w drugim 40 wszystko ładnie wygląda ale jak to zrobić w php

chodzi mi o obliczenia (pewnie procentowe a nie jestem z nich dobry)
wiem że funkcja zawsze musi zwrócić w sumie 100 i jak to zrobić

Artykuly na wp

zamper
Chcesz zrobić wykres ?

Procenty chodzą tak:
Liczba głosów: 20000
Tak: 13000
Nie: 7000
Lubie placki: 10000

Tak to 5000/20000 czyli 0.65
0.65 * 100 = 65%

Nie
to 7000/20000 czyli 0.35
0.35 * 100 = 35%


Tak + Nie = 65% + 35% = 100% = OK

Potem robisz dwa divy.
Pokarze to na przykładzie YouTuba.

Całe dwa divy (taki poziomy wykres) mają mieć 200px;

65% = 0.65;
0.65 * 200px = 130px na TAK (zielony)

35% = 0.35;
0.3 * 200px = 70px na NIE(czerwony)

O to Ci chodzi questionmark.gif
marcin-1981
A jeżeli jedna z liczb jest zerem?
nie ma to znaczenia?
zamper
0/20000 = 0;
0*100 = 0

0/100 = 0
0 * 200px = 0px


Co ty miałeś/masz z matmy ?
marcin-1981
Żarcik z tym zerem ale jestem kiepski w obliczeniach procentowych
granice ciągów, całki, macierze nie stanowią dużego wyzwania ale procenty zawsze omijałem smile.gif
Cytat
Tak to 5000/20000 czyli 0.65


skąd 5000

smile.gif gdyby ktoś potrzebował
plik licz.php
  1. function tak($plus,$minus) {
  2. if ($plus==0 and $minus==0){
  3. $tak=50;
  4. } else {
  5. $suma=($plus+$minus);
  6. $tak=($plus/$suma)*100;
  7. $tak=number_format($tak, 0);
  8. }
  9. return $tak;
  10. }
  11. function nie($plus,$minus) {
  12. if ($plus==0 and $minus==0){
  13. $nie=50;
  14. } else {
  15. $suma=($plus+$minus);
  16. $nie=($minus/$suma)*100;
  17. $nie=number_format($nie, 0);
  18. }
  19. return $nie;
  20. }


uzycie


  1. <div class="oceny">
  2. <div class="lubie-green" style="width: <? echo tak(''.$m['plus'].'',''.$m['minus'].''); ?>.0%"></div>
  3. <div class="nielubie-red" style="width: <? echo nie(''.$m['plus'].'',''.$m['minus'].''); ?>.0%"></div>
  4. </div>
zamper
Powinno działać. Ale zamiast number_format użyj floor(). Ta funkcja zaokrągla w dół.
Później odejmij od sumy głosów tak i otrzymujesz nie.
Wtedy ominiesz błąd z tym że liczby będą zaokrąglane i divy nie będą miały poprawnej szerokości dającej w sumie 100px;
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.