Foros del Web » Programando para Internet » PHP »

Warning: Division by zero in

Estas en el tema de Warning: Division by zero in en el foro de PHP en Foros del Web. Aunque la funcionalidad es correcta , me sale este error, se lo que significa, pero no se como sacarlo. error -> Warning: Division by zero ...
  #1 (permalink)  
Antiguo 17/06/2011, 23:41
 
Fecha de Ingreso: junio-2008
Mensajes: 59
Antigüedad: 16 años, 5 meses
Puntos: 0
Warning: Division by zero in

Aunque la funcionalidad es correcta , me sale este error, se lo que significa, pero no se como sacarlo.

error -> Warning: Division by zero in /home/7384732984732948/public_html/wp-content/plugins/bp-album/includes/bp-album-templatetags.php on line 80

Código PHP:

class BP_Album_Template {
    
    var 
$current_picture = -1;
    var 
$picture_count 0;
    var 
$pictures;
    var 
$picture;

    var 
$in_the_loop;

    var 
$pag_page;
    var 
$pag_per_page;
    var 
$pag_links;

    function 
BP_Album_Template$args '' ) {
        
$this->__construct$args);
    }
    
    function 
__construct$args '' ) {
        global 
$bp;

        
        
$defaults bp_album_default_query_args();
        
        
$r apply_filters('bp_album_template_args',wp_parse_args$args$defaults ));
        
extract$r EXTR_SKIP);

        
$this->pag_page $page;
        
$this->pag_per_page $per_page;
        
$this->owner_id $owner_id;
        
$this->privacy$privacy;
        
        
/***
         * You can use the "type" variable to fetch different things to output.
         * For example on the groups template loop, you can fetch groups by "newest", "active", "alphabetical"
         * and more. This would be the "type". You can then call different functions to fetch those
         * different results.
         */

        
$total bp_album_get_picture_count($r);
        
$this->pictures bp_album_get_pictures($r);

        
// Item Requests
        
if ( !$max || $max >= $total )
            
$this->total_picture_count $total;
        else
            
$this->total_picture_count $max;

        if ( !
$max || $max >= count($this->pictures))
            
$this->picture_count count($this->pictures);
        else
            
$this->picture_count $max;

        
$this->pag_links paginate_links( array(
            
'base' => $bp->displayed_user->domain $bp->album->slug .'/'$bp->album->pictures_slug .'/%_%',
            
'format' => '%#%',
            
'total' => ceil( (int) $this->total_picture_count / (int) $this->pag_per_page ), /// es aqui donde el error !
            
'current' => (int) $this->pag_page,
            
'prev_text' => '←',
            
'next_text' => '→',
            
'mid_size' => 1
        
));
        

        if (
$this->picture_count)
            
$this->picture $this->pictures[0];
        
    } 
He probado con esto pero no funciona

if(empty($this))
{
echo "M";
}
else
{
echo "O";
}
  #2 (permalink)  
Antiguo 17/06/2011, 23:46
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: Warning: Division by zero in

Dice que división por 0 no es valida (lo cual es lógico), lo único que tienes que hacer es verificar si tiene como valor 0 y si es así muestras una cosa y si no pues haces la división
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 18/06/2011, 01:19
 
Fecha de Ingreso: junio-2008
Mensajes: 59
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Warning: Division by zero in

Cita:
Iniciado por abimaelrc Ver Mensaje
Dice que división por 0 no es valida (lo cual es lógico), lo único que tienes que hacer es verificar si tiene como valor 0 y si es así muestras una cosa y si no pues haces la división
Pero al ser un array no entiendo muy bien como hacerlo :( esta claro que me estas diciendo que verifique si la variable tiene el valor 0 con un if, si fuera zero pues le pondria un echo"loquesea" y si no es zero que continue con el codigo, pero al ser un array no se que variable tengo que cojer o_O
  #4 (permalink)  
Antiguo 18/06/2011, 03:02
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: Warning: Division by zero in

Hola Lazard

La variable pag_per_page es la que está dando el error. ¿A que se refiere esa variable?, ¿a páginas?. Si se refiere a páginas, no creo que un album pueda tener cero páginas. Tendrá por lo menos una, así que esa variable no tendría por qué ser cero. Verifica que esté tomando valores correctos, o donde definas la variable asegúrate que no puede ser cero nunca.
  #5 (permalink)  
Antiguo 18/06/2011, 03:48
 
Fecha de Ingreso: junio-2008
Mensajes: 59
Antigüedad: 16 años, 5 meses
Puntos: 0
Respuesta: Warning: Division by zero in

Cita:
Iniciado por Nexus10 Ver Mensaje
Hola Lazard

La variable pag_per_page es la que está dando el error. ¿A que se refiere esa variable?, ¿a páginas?. Si se refiere a páginas, no creo que un album pueda tener cero páginas. Tendrá por lo menos una, así que esa variable no tendría por qué ser cero. Verifica que esté tomando valores correctos, o donde definas la variable asegúrate que no puede ser cero nunca.
Entiendo, hmmm sigue igual después de haberle introducido el siguiente codigo para arreglar el valor inicial de la variable pag_per_page

Código PHP:
        $this->pag_links paginate_links( array(
            
'base' => $bp->displayed_user->domain $bp->album->slug .'/'$bp->album->pictures_slug .'/%_%',
            
'format' => '%#%',
            
'total' => ceil( (int) $this->total_picture_count / (int) $this->pag_per_page ),
            
'current' => (int) $this->pag_page,
            
'prev_text' => '←',
            
'next_text' => '→',
            
'mid_size' => 1
        
));
        
        if (
$pag_per_page '0')
        {
            
$pag_per_page ++;
        } 
  #6 (permalink)  
Antiguo 18/06/2011, 04:50
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Warning: Division by zero in

Estas asignando el valor en el if no comparando, debería ser:

Código PHP:
Ver original
  1. if ($pag_per_page == 0) {
  2.     $pag_per_page ++;
  3. }

Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 18/06/2011, 06:04
 
Fecha de Ingreso: febrero-2010
Mensajes: 295
Antigüedad: 14 años, 9 meses
Puntos: 58
Respuesta: Warning: Division by zero in

Cita:
Iniciado por Lazard Ver Mensaje
Entiendo, hmmm sigue igual después de haberle introducido el siguiente codigo para arreglar el valor inicial de la variable pag_per_page

Código PHP:
        $this->pag_links paginate_links( array(
            
'base' => $bp->displayed_user->domain $bp->album->slug .'/'$bp->album->pictures_slug .'/%_%',
            
'format' => '%#%',
            
'total' => ceil( (int) $this->total_picture_count / (int) $this->pag_per_page ),
            
'current' => (int) $this->pag_page,
            
'prev_text' => '←',
            
'next_text' => '→',
            
'mid_size' => 1
        
));
        
        if (
$pag_per_page '0')
        {
            
$pag_per_page ++;
        } 
No creo que sea ahí donde debas poner ese if porque el array ya está construído, y si la variable valía cero te seguirá dando error.
Yo no estoy muy puesto en programación orientada a objetos, pero entiendo que en alguna parte de tu programa estarás usando la clase BP_Album_Template. Cuando creas un objeto de esa clase y le pasas los parámentros al constructor, es ahí cuando tienes que asegurarte de que el valor de $pag_per_page que le pasas es distinto de cero.

Puede que sea mejor que preguntes en el subforo de PHP OO, quizá ahí puedan orientarte mejor sobre tu problema.

Etiquetas: division, warning
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 22:40.