Foros del Web » Programando para Internet » PHP »

Divide entre Zero

Estas en el tema de Divide entre Zero en el foro de PHP en Foros del Web. Estoy haciendo una encuesta en PHP, pero resulta que el sistema me dice, Warning: Division by zero. No se como hacer para que no pase ...
  #1 (permalink)  
Antiguo 04/03/2009, 21:08
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 3 meses
Puntos: 15
Divide entre Zero

Estoy haciendo una encuesta en PHP, pero resulta que el sistema me dice, Warning: Division by zero. No se como hacer para que no pase eso. Pego el código y pongo en negritas las lineas que entran en conflicto, ojalá puedan ayudarme

$votos=$total1a+$total2a;
$por1=$total1*100/$votos;
$por1=intval($por1 ,10);
$por2=$total2*100/$votos;
$por2=intval($por2 ,10);

Eso pasa tanto en el servidor Apache que tengo en mi PC como en el hosting :(
  #2 (permalink)  
Antiguo 04/03/2009, 21:16
 
Fecha de Ingreso: marzo-2009
Mensajes: 39
Antigüedad: 15 años
Puntos: 2
Respuesta: Divide entre Zero

Lo vuelvo a copiar el codigo
$votos=$total1a+$total2a;
$por1=$total1*100/$votos;
$por1=intval($por1 ,10);
$por2=$total2*100/$votos;
$por2=intval($por2 ,10);

Bueno a simple vista se nota que en las lineas en negrita, indica que es igual a $total1, pero si lees $votos indica que la variable deberia de llamarse $total1a faltando la leta (a) al final; y en la segunda linea en negrita deberia ser igual = $total2a y no solo $total2, tambien falta la letra (a)
  #3 (permalink)  
Antiguo 04/03/2009, 21:20
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 3 meses
Puntos: 15
Respuesta: Divide entre Zero

Ah es que hice una prueba, y puse el código a la mitad de ella, pero sin la "a" sucede lo mismo, pongo el código tal y como es

$votos=$total1+$total2;
$por1=$total1*100/$votos;
$por1=intval($por1 ,10);
$por2=$total2*100/$votos;
$por2=intval($por2 ,10);
  #4 (permalink)  
Antiguo 04/03/2009, 21:31
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 7 meses
Puntos: 8
Respuesta: Divide entre Zero

La variable $votos tiene valor 0, eso es lo que te esta diciendo el error. Si haces un echo $votos deberias comprobarlo.

Puede ser que no te esten llegando bien los valores desde $total1 y $total2? Si estas variables vienen desde un formulario puede que tengas que accesarlas usando $_POST['total1'] o $_GET['total1'] y asi con total2.


Saludos!
  #5 (permalink)  
Antiguo 04/03/2009, 22:06
 
Fecha de Ingreso: diciembre-2008
Mensajes: 738
Antigüedad: 15 años, 3 meses
Puntos: 15
Respuesta: Divide entre Zero

El problema del "Division by Zero" ya se soluciono cambiando el valor de los txt de 0 a 1, ahora el problema es que no se agregan las votaciones a los txt y queda con el mismo número.

Dejo aquí todo el código
<?
$archivo1= "si.txt";
$archivo2= "no.txt";
$abre1 = fopen($archivo1, "r");
$abre2 = fopen($archivo2, "r");
$total1 = fread($abre1, filesize($archivo1));
$total2 = fread($abre2, filesize($archivo2));
fclose($abre1);
fclose($abre2);
if($op=="a")
{
$abre1 = fopen($archivo1, "w");
$total1=$total1+1;
$grabar1=fwrite($abre1, $total1);
fclose($abre1);
}
else if($op=="b")
{
$abre2 = fopen($archivo2, "w");
$total2=$total2+1;
$grabar2=fwrite($abre2, $total2);
fclose($abre2);
}
$votos=$total1+$total2;
$por1=$total1*100/$votos;
$por1=intval($por1 ,10);
$por2=$total2*100/$votos;
$por2=intval($por2 ,10);
echo "<br>";
echo "<br>";
echo "<p align=center>";
echo "<img height=15 width=$por1 SRC=figura14-2.jpg>";
echo "<br>";
echo "<br>";
echo "Sí: <b>$total1</b> votos - <b>$por1%</b>";
echo "<img height=15 width=$por2 SRC=figura14-2.jpg>";
echo "<br>";
echo "<br>";
echo "No: <b>$total1</b> votos - <b>$por2%</b>";
echo "<br>";
echo "<br>";
echo "Total Votos: <b>$votos</b>";
echo "<br>";
echo "<br>";
echo "<a href=vota.php>Volver</a>";
?>

Última edición por alvarols; 04/03/2009 a las 22:14
  #6 (permalink)  
Antiguo 04/03/2009, 22:08
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Divide entre Zero

Comprueba con un simple if:
Código php:
Ver original
  1. if( $votos == 0 ) {
  2.       echo "no hay votos";
  3. } else {
  4.       // operaciones
  5. }

Saludos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:10.