Foros del Web » Programando para Internet » PHP »

Problema contador javascript en consulta php

Estas en el tema de Problema contador javascript en consulta php en el foro de PHP en Foros del Web. Hola muy buenas estoy desesperado, llevo 2 semanas con esto y no logro completarlo , la idea es crear un contador de tiempo hacia atrás ...
  #1 (permalink)  
Antiguo 02/03/2012, 11:59
 
Fecha de Ingreso: marzo-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Información Problema contador javascript en consulta php

Hola muy buenas estoy desesperado, llevo 2 semanas con esto y no logro completarlo , la idea es crear un contador de tiempo hacia atrás con la fecha final del evento. logro crear una cuenta atrás pero solo del ultimo registro que me da la base de datos. quiero hacer un contador para cada evento. este es el codigo, gracias de antemano. Ya no se a quien recurrir.



$result = mysql_query("SELECT * FROM planes ");
if ($row = mysql_fetch_array($result)){
echo "<h1>Eventos disponibles<h1>";
echo "<table border = '1'>";
echo "<tr>";
echo "<th>nombre</th>";
echo "<th>fecha</th>";
echo "<th>Tiempo</th>";
echo "</tr> n";
do {
echo "<tr> n";
echo "<td>".$row["nombre"]."</td> n";
echo "<td>".$row["hora"]."</td>n";
echo "<td>".$row["fecha"]."</td>n";
$mes=substr($fecha , 5,2) - 1;
$fecha=$row["fecha"];
?>
<td><body onload="countdown('contador')">
<div id='contador'></div>
...
</body></td>
<?
echo "</tr>";
} while ($row = mysql_fetch_array($result));

echo "</table>";

} else {

echo "No hay eventos creados";

}
<head>
<script type="text/javascript" language="JavaScript">
function countdown(id){
var fecha=new Date('<?echo substr($fecha , 0,4);?>','<?echo $mes;?>','<?echo substr($fecha , 8,2);?>','00','00','00')
var hoy=new Date()
var dias=0
var horas=0
var minutos=0
var segundos=0
if (fecha>hoy){
var diferencia=(fecha.getTime()-hoy.getTime())/1000
dias=Math.floor(diferencia/86400)
diferencia=diferencia-(86400*dias)
horas=Math.floor(diferencia/3600)
diferencia=diferencia-(3600*horas)
minutos=Math.floor(diferencia/60)
diferencia=diferencia-(60*minutos)
segundos=Math.floor(diferencia)

document.getElementById(id).innerHTML='Quedan ' + dias + ' D&iacute;as, ' + horas + ' Horas, ' + minutos + ' Minutos, ' + segundos + ' Segundos'

if (dias>0 || horas>0 || minutos>0 || segundos>0){
setTimeout("countdown(\"" + id + "\")",1000)
}
}
else{
document.getElementById('restante').innerHTML='Que dan ' + dias + ' D&iacute;as, ' + horas + ' Horas, ' + minutos + ' Minutos, ' + segundos + ' Segundos'
}
}
</script>
</head>
  #2 (permalink)  
Antiguo 02/03/2012, 12:20
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema contador javascript en consulta php

Si quieres un contador por cada registro, tienes que llamar a las funciones del contador con diferentes parámetros por cada registro. No te funciona porque llamas a las funciones mil veces pero siempre se guardan los valores en las mismas variables, por tanto todo se sobreescribe y se pierde, sólo funciona el ultimo. POR CADA registro de tu DB necesitas un div con u nnombre único y el proceso que describes realizarlo para cada registro.
Saludos
__________________
Fere libenter homines, id quod volunt, credunt.
  #3 (permalink)  
Antiguo 02/03/2012, 12:29
 
Fecha de Ingreso: marzo-2012
Mensajes: 3
Antigüedad: 12 años, 1 mes
Puntos: 0
Respuesta: Problema contador javascript en consulta php

muchas gracias!!, pero aún asi no me ha quedado muy claro podrías ponerme un ejemplo de como sería? gracias!!
  #4 (permalink)  
Antiguo 04/03/2012, 02:26
Avatar de repara2  
Fecha de Ingreso: septiembre-2010
Ubicación: München
Mensajes: 2.445
Antigüedad: 13 años, 7 meses
Puntos: 331
Respuesta: Problema contador javascript en consulta php

El div que contiene en contador requiere un nombre UNICO, por cada registro de la db, DENTRO DEL WHILE creas un div por cada elemento, cada uno con su nombre unico:

Código PHP:
Ver original
  1. <!-- Este div tiene que tener un nombre UNICO, por eso uso $row nombre, pero asegúrate de que sea unico. Si no lo es, utiliza un número -->
  2. <body onload="countdown('<?=$row["nombre"]?>')">
  3. <div id='<?=$row["nombre"]?>'></div>

Quita el DO...WHILE y utiliza unicamente WHILE, simplifica el código. Por ejemplo:

Código PHP:
Ver original
  1. select * from tabla
  2. echo Cabecera de tabla
  3. while($registros){
  4.   <div id="nombre">....
  5. }
  6. FIn tabla
  7. //Fin codigo php
  8. funcion contador...
__________________
Fere libenter homines, id quod volunt, credunt.

Etiquetas: javascript+php, php+basedatos
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:00.