Gracias por responder GatorV
Esta es la pagina principal, como verás para actualizar la tabla cada x seg. uso la clase prototype.
En ésta pagina solo muestro la tabla como está inicialmente en la base de datos.
Código:
<html>
<head>
<title></title>
<script src="prototype.js" language="javascript"></script>
<script language="JavaScript" type="text/javascript">
function nuevoAjax()
{
var xmlhttp=false;
try
{
// Creacion del objeto AJAX para navegadores no IE
xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
}
catch(e)
{
try
{
// Creacion del objet AJAX para IE
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(E) { xmlhttp=false; }
}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp=new XMLHttpRequest(); }
return xmlhttp;
}
function cargaenvios()
{
ajax=nuevoAjax();
ajax.open("POST", "enviar.php", true);
document.getElementById("empezar").value= "Enviando";
document.getElementById("empezar").disabled= "disabled";
ajax.onreadystatechange=function()
{
if (ajax.readyState==4)
{
document.getElementById("envi").innerHTML=ajax.responseText;
}else{
document.getElementById("envi").innerHTML='<img src="loader.gif" align="middle" /> Enviando...';
}
}
ajax.send();
}
function tablamail() {
var target = $('tabla');
if (!target) return false;
new Ajax.PeriodicalUpdater(target, 'tabla.php',{frequency:'2'});
}
</script>
</head>
<body onload="tablamail()">
<input type="button" id="empezar" name="empezar" value="Empezar envio" onclick="javascript:cargaenvios();" />
<div id="envi"></div>
<br><br>
<div id="tabla">
<?
include ("../../conexion.php");
$link=Conectarse();
$query = mysql_query("SELECT * FROM empleados ") or die(mysql_error());
echo "<table border=\"1\">
<tr><td><b>nombre</b></td>
<td><b>puesto</b></td>
<td><b>departamento</b></td>
<td><b>email</b></td>
<td><b>status</b></td>
</tr>";
while ($row = mysql_fetch_array($query)){
echo "<tr><td>$row[nombre]</td><td>$row[puesto]</td><td>$row[departamento]</td><td>$row[email]</td><td>$row[status]</td></tr>";
}
echo "</table>";
?>
</div>
</body>
</html>
luego llamo con ajax a la pagina enviar.php, haciendo click en el boton "Empezar envio", que me hace todos los envios de cada uno de los mails que va sacando de la base con un while y me actualiza uno por uno el status en la base.
Por otro lado la llamada ajax a la pagina de actualizacion (tabla.php) cada x segundos tiene practicamente esto, donde solo recoge nuevamente los valores y actualiza la tabla principal:
Código:
<?
include ("../../conexion.php");
$link=Conectarse();
$query = mysql_query("SELECT * FROM empleados ") or die(mysql_error());
echo "<table border="1">
<tr><td><b>nombre</b></td>
<td><b>puesto</b></td>
<td><b>departamento</b></td>
<td><b>email</b></td>
<td><b>status</b></td>
</tr>";
while ($row = mysql_fetch_array($query)){
echo "<tr><td>$row[nombre]</td><td>$row[puesto]</td><td>$row[departamento]</td><td>$row[email]</td><td>$row[status]</td></tr>";
}
echo "</table>";
?>
El problema es que hasta que no termina el envío y el primer ajax recoge "envio terminado" desde el script php (enviar.php) recién ahí me muestra la tabla actualizada.
no lo hace en tiempo real o cada 2 seg. se actualizara para que pareciera en tiempo real.
Ojala me haya explicado un poco mas con el codigo...