Foros del Web » Programando para Internet » PHP »

Cannot redeclare Funcion() (previously declared (SIN RESOLVER)

Estas en el tema de Cannot redeclare Funcion() (previously declared (SIN RESOLVER) en el foro de PHP en Foros del Web. tengo una funcion detro de un paginador y cuando posteo mas de un comentario me da el siguiente error: Fatal error: Cannot redeclare tiempo() (previously ...
  #1 (permalink)  
Antiguo 25/09/2010, 06:39
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 3
Cannot redeclare Funcion() (previously declared (SIN RESOLVER)

tengo una funcion detro de un paginador y cuando posteo mas de un comentario me da el siguiente error:

Fatal error: Cannot redeclare tiempo() (previously declared in C:\xampp\htdocs\members\pgcom.php:47) in


como puedo solucionar esto?
  #2 (permalink)  
Antiguo 25/09/2010, 07:02
 
Fecha de Ingreso: julio-2008
Mensajes: 208
Antigüedad: 15 años, 10 meses
Puntos: 5
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

El tema es q en el archivo que te esta dando error puede estar pasando dos cosas...1) que tengas una funcion con el nombre tiempo al igual que en el archivo pgcom.php linea 47 ó 2) Que estes incluyendo al archivo pgcom.php multiples veces...por lo que te recomiendo revises todos los includes y require que tengas en tu pagina y los cambies todos por include_once y require_once...

Es todo..
Saludos.
  #3 (permalink)  
Antiguo 25/09/2010, 07:33
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

Hola sandinosaso, gracias, probe sacando la funcion del pgcom.php y la puse con include_once y ya no me da el error, pero el problema haora es que solo me trae el ultimo registro que en este caso es una fecha, entonces los comentarios estan bien de primero a ultimo pero todos con la fecha del ultimo comentario. A que se deve esto???
  #4 (permalink)  
Antiguo 25/09/2010, 08:17
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

esta es la funcion, probe sacandola del while pero al sacarla del while es cuando me repite el ultimo registro de la fecha en todos los comentarios espero que alguien me pueda ayudar, gracias...

Código PHP:

$result 
mysql_db_query($database"select * from comentarios  WHERE bid = '$username' order by id desc LIMIT  $RegistrosAEmpezarr, $RegistrosAMostrarr",$con) or die (mysql_error()); 
if (
mysql_num_rows($result)) {
while (
$qry mysql_fetch_array($result)) {


$date $qry[fecha];

function 
nicetime($date)
{
    if(empty(
$date)) {
        return 
"No date provided";
    }
    
    
$periods         = array("second""minute""hour""day""week""month""year""decade");
    
$lengths         = array("60","60","24","7","4.35","12","10");
    
    
$now             time();
    
$unix_date         strtotime($date);
    
       
// check validity of date
    
if(empty($unix_date)) {    
        return 
"Bad date";
    }

    
// is it future date or past date
    
if($now $unix_date) {    
        
$difference     $now $unix_date;
        
$tense         "ago";
        
    } else {
        
$difference     $unix_date $now;
        
$tense         "from now";
    }
    
    for(
$j 0$difference >= $lengths[$j] && $j count($lengths)-1$j++) {
        
$difference /= $lengths[$j];
    }
    
    
$difference round($difference);
    
    if(
$difference != 1) {
        
$periods[$j].= "s";
    }
    
    return 
"$difference $periods[$j] {$tense}";
}

$fecha nicetime($date); 
  #5 (permalink)  
Antiguo 25/09/2010, 11:25
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 5 meses
Puntos: 21
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

Yo creo que se debe porque te falta cerrar el IF y el WHILE... te faltan dos } al final del codigo ;)
  #6 (permalink)  
Antiguo 25/09/2010, 12:42
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

El resultado de tu funcion nicetime() lo estás asignando siempre a la misma variable $fecha, al final del while esta tendrá el último valor que se le asinó en el wihile.

Saca la función nicetime() fuera del while y para cambiar el formato de la fecha podrias hacer
Código PHP:
Ver original
  1. $qry['fecha'] = nicetime($qry['fecha']);

Con eso el array $qry tendrá todos tus datos pero con los cambios en la fecha.
  #7 (permalink)  
Antiguo 25/09/2010, 16:39
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: por que me da este error: Cannot redeclare tiempo() (previously declared

Hola, Gracias pero no entendi muy bien lo que dice lisandro Arg, probe y al final lo deje asi, y haora me trae todos los registros bien pero la funcion solo funciona con el ultimo registro y los demas los deja como estan alguien le a pasado antes algo parecido?
pongo todo el condigo completo para ver si ubican el problema...




tiempo.php


Código PHP:

$date 
$qryy[fecha2];

function 
nicetime($date)
{
    if(empty(
$date)) {
        return 
"No date provided";
    }
    
    
$periods         = array("second""minute""hour""day""week""month""year""decade");
    
$lengths         = array("60","60","24","7","4.35","12","10");
    
    
$now             time();
    
$unix_date         strtotime($date);
    
       
// check validity of date
    
if(empty($unix_date)) {    
        return 
"Bad date";
    }

    
// is it future date or past date
    
if($now $unix_date) {    
        
$difference     $now $unix_date;
        
$tense         "ago";
        
    } else {
        
$difference     $unix_date $now;
        
$tense         "from now";
    }
    
    for(
$j 0$difference >= $lengths[$j] && $j count($lengths)-1$j++) {
        
$difference /= $lengths[$j];
    }
    
    
$difference round($difference);
    
    if(
$difference != 1) {
        
$periods[$j].= "s";
    }
    
    return 
"$difference $periods[$j] {$tense}";
}


$qryy[fecha2] = nicetime($date);

?> 

pgcom.php

Código PHP:

<?php
$username 
$_COOKIE['loggedin'];
require(
'conect.php');
$RegistrosAMostrarr=10;
//estos valores los recibo por GET
if(isset($_GET['pag'])){
    
$RegistrosAEmpezarr=($_GET['pag']-1)*$RegistrosAMostrarr;
    
$PagActual=$_GET['pag'];
//caso contrario los iniciamos
}else{
$RegistrosAEmpezarr=0;
$PagActual=1;
}include 
"config.php"
mysql_connect($server$db_user$db_pass) or die (mysql_error()); 
$resu mysql_db_query($database"select * from users  WHERE username = '$username'") or die (mysql_error()); 
if (
mysql_num_rows($resu)) {
while (
$qr mysql_fetch_array($resu)) {
    
$us $qr[username];

    
}
}



$result mysql_db_query($database"select * from comentarios  WHERE bid = '$username' order by id desc LIMIT  $RegistrosAEmpezarr, $RegistrosAMostrarr",$con) or die (mysql_error()); 
if (
mysql_num_rows($result)) {
while (
$qryy mysql_fetch_array($result)) {
    
    
    
    if ( 
$us == $qryy [bid] ) { 
    
$del "Delete"

    
 
include_once 
"tiempo.php";

    
?>

<br>
<div id="contenedor">
    <div id="avatar">
        
        <img src='<?php echo $qryy["avatar"]?>' alt='Avatar' width='60' height='60'/>
        
<p><a href='profile.php?sbbu=<?php echo $qryy[de];?>'><?php echo $qryy[de];?></a></p>
</div>
<div id="punta"></div>

<div id="to"><p><strong></strong></p></div>
<div id="mensage"> <br>
    
<p><?php echo $qryy[comentario]?> </p>
    <br><br>
    </div>
        <div id="fe"> <p>
<font color="white"> <?php echo  $qryy[fecha2];  ?> </font> <?php echo  $qryy[fecha]; ?> <a href="delete_com.php?id=<?php echo $qryy[id]; ?>"><?php echo $del ?></a></p></div>
        <br>
</div>


<?php

}
     


//******--------determinar las páginas---------******//
$NroRegistross=mysql_num_rows(mysql_query("select * from comentarios WHERE bid = '$username' ",$con));

$PagAnterior=$PagActual-1;
$PagSiguiente=$PagActual+1;
$PagUltima=$NroRegistross/$RegistrosAMostrarr;

//verificamos residuo para ver si llevará decimales
$Ress=$NroRegistross%$RegistrosAMostrarr;
// si hay residuo usamos funcion floor para que me
// devuelva la parte entera, SIN REDONDEAR, y le sumamos
// una unidad para obtener la ultima pagina
if($Ress>0$PagUltima=floor($PagUltima)+1;

//desplazamiento
echo "<div id='lin'><p>";
echo 
"<a onclick=\"Pag('1')\"><strong>First</strong></a> ";
if(
$PagActual>1) echo "<a onclick=\"Pag('$PagAnterior')\"><strong>Previous</strong></a> ";
echo 
"<strong><font color='yellow'>Pag ".$PagActual."/".$PagUltima."</font></strong>";
if(
$PagActual<$PagUltima)  echo " <a onclick=\"Pag('$PagSiguiente')\"><strong>Next</strong></a> ";
echo 
"<a onclick=\"Pag('$PagUltima')\"><strong>Last</a></strong>";
echo 
"</div></p>";
}

?>


<script type="text/JavaScript">

function objetoAjax(){
    var xmlhttp=false;
    try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
        try {
           xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
            xmlhttp = false;
          }
    }

    if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
    }
    return xmlhttp;
}

function Pag(nropage){
    //donde se mostrará los registros
    divbeats = document.getElementById('comentarios');
    
    ajax=objetoAjax();
    //uso del medoto GET
    //indicamos el archivo que realizará el proceso de paginar
    //junto con un valor que representa el nro de pagina
    ajax.open("GET", "pgcom.php?pag="+nropage);

    divbeats.innerHTML= '<br><p>Loading...<br><img src="anim.gif"><br></p>';
    ajax.onreadystatechange=function() {
        if (ajax.readyState==4) {
            //mostrar resultados en esta capa
            divbeats.innerHTML = ajax.responseText
        }
    }
    //como hacemos uso del metodo GET
    //colocamos null ya que enviamos 
    //el valor por la url ?pag=nropagina
    ajax.send(null)
}
</script>
  #8 (permalink)  
Antiguo 27/09/2010, 06:55
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Cannot redeclare Funcion() (previously declared (SIN RESOLVER)

Colocá el include_once "tiempo.php"; antes del while (es muy malo que lo hagas dentro de un while) y que este archivo SOLO contenga la función nicetime(), después solo tenés que llamar a la función al momento de imprimirse en pantalla.
Código PHP:
Ver original
  1. <font color="white"> <?php echo  nicetime($qryy[fecha2]);  ?> </font>
  #9 (permalink)  
Antiguo 27/09/2010, 08:18
 
Fecha de Ingreso: agosto-2010
Ubicación: Oakland california
Mensajes: 393
Antigüedad: 13 años, 9 meses
Puntos: 3
De acuerdo Respuesta: Cannot redeclare Funcion() (previously declared (SIN RESOLVER)

Cita:
Iniciado por lisandro Arg Ver Mensaje
Colocá el include_once "tiempo.php"; antes del while (es muy malo que lo hagas dentro de un while) y que este archivo SOLO contenga la función nicetime(), después solo tenés que llamar a la función al momento de imprimirse en pantalla.
Código PHP:
Ver original
  1. <font color="white"> <?php echo  nicetime($qryy[fecha2]);  ?> </font>
Gracias lisandro Arg, haora si Funciona....

Etiquetas: funcion
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 01:08.