Ver Mensaje Individual
  #1 (permalink)  
Antiguo 14/01/2014, 09:04
carvaec
 
Fecha de Ingreso: abril-2009
Mensajes: 37
Antigüedad: 15 años, 9 meses
Puntos: 0
AJAX - Cargar datos en un div con AJAX dentro de un WHILE php

Buenas
estoy haciendo una web con comentarios y el tiempo transcurrido de cada comentario, lo que deseo actualizar cada 5 segundos es el tiempo transcurrido de cada comentario usando AJAX, pero al imprimir los datos, el tiempo solo se muestra en el ultimo resultado del WHILE, no en todos..

Este es el código que uso:

--------------------------------------- index.php ---------------------------------------

<script src="ajax.js"></script>
<?php
//include("conec.php");
$comentarios=mysql_query("SELECT * FROM comentarios ORDER BY id DESC",$link);
while($rowcomentarios = mysql_fetch_array($comentarios)) { ?>

codigo...

<!-- Aca sigue el tiempo !-->
<div id="time"><div name="timediv" id="timediv"></div></div>

<?php } ?>


--------------------------------------- ajax.js ---------------------------------------


var seconds = 5; // el tiempo en que se refresca

var divid = "time"; // el div que quieres actualizar!

var url = "tiempo.php"; // el archivo que ira en el div



function refreshdiv(){



// The XMLHttpRequest object



var xmlHttp;

try{

xmlHttp=new XMLHttpRequest(); // Firefox, Opera 8.0+, Safari

}

catch (e){

try{

xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer

}

catch (e){

try{

xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e){

alert("Tu explorador no soporta AJAX.");

return false;

}

}

}



// Timestamp for preventing IE caching the GET request

var timestamp = parseInt(new Date().getTime().toString().substring(0, 10));

var nocacheurl = url+"?t="+timestamp;



// The code...



xmlHttp.onreadystatechange=function(){

if(xmlHttp.readyState== 4 && xmlHttp.readyState != null){

document.getElementById(divid).innerHTML=xmlHttp.r esponseText;

setTimeout('refreshdiv()',seconds*1000);

}

}

xmlHttp.open("GET",nocacheurl,true);

xmlHttp.send(null);

}



// Empieza la función de refrescar



window.onload = function(){

refreshdiv(); // corremos inmediatamente la funcion

}

--------------------------------------- tiempo.php ---------------------------------------

function tiempo_transcurrido($fecha) {
if(empty($fecha)) {
return "No hay fecha";
}

$intervalos = array("segundo", "minuto", "hora", "dí*a", "semana", "mes", "año");
$duraciones = array("60","60","24","7","4.35","12");

$ahora = time();
$Fecha_Unix = strtotime($fecha);

if(empty($Fecha_Unix)) {
return "Fecha incorrecta";
}
if($ahora > $Fecha_Unix) {
$diferencia = $ahora - $Fecha_Unix;
$tiempo = "Hace";
} else {
$diferencia = $Fecha_Unix - $ahora;
$tiempo = "Dentro de";
}
for($j = 0; $diferencia >= $duraciones[$j] && $j < count($duraciones)-1; $j++) {
$diferencia /= $duraciones[$j];
}

$diferencia = round($diferencia);

if($diferencia != 1) {
$intervalos[5].="e"; //meses... la magia del español
$intervalos[$j].= "s";
}

return "$tiempo $diferencia $intervalos[$j]"; }
?>

<p class="social-time-publication"><?php echo tiempo_transcurrido("2014-01-14 07:58:00"); ?> <i class="icon-globe"></i></p>

Ese sería el codigo
Gracias de ante mano