AJAX - Cargar datos en un div con AJAX dentro de un WHILE php

 
Vista:

Cargar datos en un div con AJAX dentro de un WHILE php

Publicado por Esteban (2 intervenciones) el 14/01/2014 15:45:44
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 ---------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
<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 ---------------------------------------


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
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.responseText;
 
                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 ---------------------------------------

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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
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
Imágen de perfil de xve
Val: 90
Oro
Ha mantenido su posición en AJAX (en relación al último mes)
Gráfica de AJAX

Cargar datos en un div con AJAX dentro de un WHILE php

Publicado por xve (222 intervenciones) el 14/01/2014 18:24:31
Hola Esteban, el problema que tienes, es que el id se repite... en teoría, no se puede repetir ningún id...
<div id="time"><div name="timediv" id="timediv"></div></div>

al denominarse todos los id's iguales (time), pone el valor en el ultimo o el primero..., ya que entiende que no puede haber ninguno repetido.

Espero que te sirva...
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

Cargar datos en un div con AJAX dentro de un WHILE php

Publicado por Esteban (2 intervenciones) el 14/01/2014 18:26:47
Gracias por tu respuesta,
Y cómo puedo solucionarlo ?
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