PHP - Porcentajes PHP

 
Vista:
Imágen de perfil de santi
Val: 588
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentajes PHP

Publicado por santi (204 intervenciones) el 19/05/2017 18:08:45
Hola,

me gustaría saber como puedo calcular un porcentaje sobre 1000 por ejemplo, me explico:

Tengo esta variable que calcula un porcentaje sobre distintos items -> $percent = round($item/$numeroVotos*100).'%'; Y el resultado es correcto, el problema es cuando el resultado es mayor a 100.

Si para mostrarlo añado una barra con un style="width:<?php echo $percent; ?>", si es mayor de 100 se pasa de largo (normal) pero quiero saber como pudo hacerlo para que sea cual sea el resultado aunque pase de 100 siempre sea sobre el 100% y no más.

Un ejemplo sería como el que adjunto que he visto en este portal, que muestra los porcentajes sobre un total de 11.558 votos. En mi caso para que la barra e porcentaje no traspase, no puede haber más de 100 votos en cada item...

Espero haberme explicado correctamente,

Gracias! ::)
Captura
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Porcentajes PHP

Publicado por Gordon (4 intervenciones) el 20/05/2017 23:44:12
hola algo asi te podria servir.
Saludos
1
2
3
4
5
6
7
8
9
10
11
12
13
$item=200;
$numeroVotos=5000;
 
$percent = round($item/$numeroVotos*100);
 
if ($percent<=100){
 
	echo $percent;
}
else {
	echo "100";
 
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 2.325
Plata
Ha disminuido 1 puesto en PHP (en relación al último mes)
Gráfica de PHP

Porcentajes PHP

Publicado por kip (877 intervenciones) el 21/05/2017 05:01:39
Hola, creo que tienes mal el concepto de como sacar el porcentaje, debes tener claro que un porcentaje siempre tendra un valor total que sera el 100% y es este la base para calcular los porcentajes correctos de nuevas cantidades que podrian ser menores o iguales a este valor base.

Por ejemplo en la grafica que colocas de la web, el valor total base para obtener el porcentaje seria el total de votos, ya luego aplicando la regla de 3 se podria calcular el porcentaje de cierta cantidad que es una parte del valor total, algo asi:

Screenshot_484

Veamoslo con este codigo:

Simulo un conjunto de preguntas con ciertos votos cada una:

1
2
3
4
5
6
7
$preguntas = array(
    'Pregunta 1' => 15,
    'Pregunta 2' => 2,
    'Pregunta 3' => 0,
    'Pregunta 4' => 7,
    'Pregunta 5' => 2,
);

Obtengo el total de los votos sumando todos los votos obtenidos hasta ahora, este sera el valor total para obtener el porcentaje de votos de cada pregunta:

1
$totalVotos = array_sum($preguntas);

Luego hacemos una iteracion con un foreach sobre el array de preguntas para aplicar la formula y obtener el porcentaje de cada una:

1
2
3
4
5
6
foreach ($preguntas as $pregunta => $votos) {
    $porcentaje = (100 * $votos) / $totalVotos;
    $barraPorcentaje = str_pad('', $porcentaje, '+');
    $barra = str_pad($barraPorcentaje, 100, '-');
    printf("[%s]\n%.2f%%\n", $barra, $porcentaje);
}

En la iteracion tenemos $porcentaje que es el resultado de la formula y sera el porcentaje segun los votos de la pregunta.
1
$porcentaje = (100 * $votos) / $totalVotos;

$barraPorcentaje sera el valor grafico a rellenar que representara el porcentaje en la siguiente variable $barra que es una grafica vacia con un limite de 100 elementos que en el ejemplo coloque como '-', si conoces str_pad() de seguro se te hara mas facil entenderlo, es sencillo.

Luego con printf() muestro la grafica total con su porcentaje, que seria algo asi:

Screenshot_485

Si te das cuenta cada grafica representa el porcentaje del valor de votos de cada pregunta, si sumamos los porcentajes nos da un valor de 100% o muy muy cercano a este por los decimales que quizas se pierden.

Ahora bien, que pasa si cambiamos el valor de votos de la primera pregunta ? Veamos la grafica resultante:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
$preguntas = array(
    'Pregunta 1' => 100,
    'Pregunta 2' => 2,
    'Pregunta 3' => 0,
    'Pregunta 4' => 7,
    'Pregunta 5' => 2,
);
 
$totalVotos = array_sum($preguntas);
 
foreach ($preguntas as $pregunta => $votos) {
    $porcentaje = (100 * $votos) / $totalVotos;
    $barraPorcentaje = str_pad('', $porcentaje, '+');
    $barra = str_pad($barraPorcentaje, 100, '-');
    printf("[%s]\n%.2f%%\n", $barra, $porcentaje);
}

Screenshot_486


En el ejemplo use PHP solamente, pero en tu caso deberias almacenar aquel valor de porcentaje obtenido a partir de la formula para luego aplicarlo como atributo width al elemento que representara la grafica en tu codigo HTML.

Espero me haya dado a entender, intenta aplicarlo y cualquier duda nos comentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
Imágen de perfil de santi
Val: 588
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

Porcentajes PHP

Publicado por santi (204 intervenciones) el 21/05/2017 17:46:34
Perfecto kip, voy a probar lo que dices.

Os mantengo informados ;)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Porcentajes PHP

Publicado por juan (1 intervención) el 19/12/2022 20:27:07
como podría pasar ese array a una tabla para capturar los datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Porcentajes PHP

Publicado por hodrah Van Radix (1 intervención) el 11/04/2024 04:54:59
Que buena respuesta, graaaaaaaaaaaacias!!!!!!!!!!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar