Problema javascript en consulta php.

ZHoNNe

Hola muy buenas tengo un problema con una cuenta atras con javascript,
la idea es cargar unos eventos y en cada evento una cuenta atras, he conseguido que haya una cuenta atras pero no logro conseguir que haya una cuenta atras por cada evento, aqui teneis el código, gracias de antemano:

$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='Quedan ' + dias + ' D&iacute;as, ' + horas + ' Horas, ' + minutos + ' Minutos, ' + segundos + ' Segundos'
}
}
</script>
</head>
EnZo

A bote pronto, estas imprimiendo N

<body onload="countdown('contador')">

.

Además cada div no tiene un id diferente

<div id='contador'></div>

Tienes un gran follon montao.

1 respuesta
ZHoNNe

#2
Entonces que propones que haga???? xD, lo necesito es urgente!! si pones algo de codigo te lo agradeceria ando perdidisimo con javascript.

1 respuesta
Merkury

#3 Básicamente primero cambiar el id de cada div que debe ser único si no (como es lógico) el GetElementByID no va a saber que hacer porque todos IDs son iguales.

Y luego no se que más decirte, porque tu codigo es un follon de la ostia XD

1 respuesta
ZHoNNe

#4
Entonces le asigno un valor diferente al div cada vez que recorro el bucle no? , algo de codigo no me vendría mal llevo 2 semanas con esto XD.

1 respuesta
Merkury

#5 Basicamente como en todo se supone que el ID a de ser único para un elemento por lo que si quieres que los divs tengan cosas diferentes, tendrás que definir un ID para cada DIV

1 respuesta
ZHoNNe

#6
entonces tendria que hacer un $contador ++, por cada vez que recorro el bucle para que fueran ids diferentes no?. si puede ser ponme un ejemplo en codigo. gracias.

1 respuesta
Merkury

#7 si, pero no voy a picarte el código (ya tengo bastante con el mio XD) te hemos dado la idea y la solución ahora a dejarte las yemas de los dedos en el teclado

1 respuesta
ZHoNNe

#8
de todas formas no tienes que picarme nada , la gran parte del trabajo ya lo he hexo XD, creeme si no fuera por que me he quedado estancado no pediria ayuda xD.

1 respuesta
Merkury

#9 Si no te digo que no hayas hecho el trabajo, pero vamos que picar un bucle con un contador y concatenar al ID no tiene ningún misterio.

ZHoNNe

Ya esta problema solucionado, gracias a todos por las ayudas.

Si alguien tiene el mismo problema aqui dejo mi codigo.

LLamada a la función

<script type='text/javascript'>
	
var ayo = <?echo substr($fecha , 0,4);?>;
var mes = <?echo $mes;?>; //1 = Enero
var dia =<?echo substr($fecha , 8,2);?>;
var hora = 0;
var minuto = 00;
var segundo = 0;
var evento = "Mi evento";
 
var id;
if (!id) { id = 1; }
else { id++; }
 
 
document.write("<table border='0' width='100%'>");
document.write("<span><b>· Nombre del evento:</b></span><br>");
document.write("<span><font color='#FF0000'><b>"+evento+"</b></font></span><br>");
document.write("<span><b>· D&iacute;a del evento:</b></span><br>");
document.write("<span id='evento" + id + "'></span>");
document.write("<span><b>· Tiempo Restante:</b></span><br>");
document.write("<span id='contar" + id + "'></span>");
document.write("</table>");
document.write("<p><small><b><a href='miweb' style='text-decoration: none'>miweb</a></b></small></p>");
 
setInterval('contar('+ayo+','+mes+','+dia+','+hora+','+minuto+','+segundo+',' + id + ')',1000);
</script>

la funcion javascript

<script type='text/javascript'>
function contar(ayo,mes,dia,hora,minuto,segundo,id) {
	var dif = dia + ' del ' + mes + ' de ' + ayo + ', a las ' + hora + ':';
	if (minuto < 10) { dif+='0'; }
	dif+=minuto + '<br>';
	document.getElementById('evento' + id).innerHTML=dif
	var a = new Date();
	dif = new Date(ayo,mes - 1,dia,hora,minuto,segundo);
	dif = (dif.getTime() - a.getTime())/1000;
	if (dif < 0) { document.getElementById('contar' + id).innerHTML="<font color='#FF0000'>Lleg&oacute; el evento!!</font>"; }
	else {
		dia= Math.floor(dif/60/60/24);
		hora= Math.floor((dif - dia*60*60*24)/60/60);
		minuto= Math.floor((dif - dia*60*60*24 - hora*60*60)/60);
		segundo= Math.floor(dif - dia*60*60*24 - hora*60*60 - minuto*60);
		var txt = '';
		if (dia > 0) {
			txt=dia+' d&iacute;a';
			if (dia != 1) { txt+='s'; }
			txt+= '<br />';
		}
		if (hora > 0 || dia > 0) {
			txt+=hora+' hora';
			if (hora != 1) { txt+='s'; }
			txt+= '<br />';
		}
		if (minuto > 0 || hora > 0 || dia > 0) {
			txt+=minuto+' minuto';
			if (minuto != 1) { txt+='s'; }
			txt+= '<br />';
		}
		txt+=segundo+' segundo';
		if (segundo != 1) { txt+='s'; }
		document.getElementById('contar' + id).innerHTML=txt;
	}
}
</script>

Usuarios habituales

  • ZHoNNe
  • Merkury
  • EnZo