Re: problema bucle for while y mysql
[email protected] ("El Ale...") Mon, 17 Sep 2012 16:38:45 -0300
| Newsgroups | php.general.es |
|---|---|
| Message-ID | <CAAu=vQc1bmkGK_=XkZpNZNSL8uaS6UmvZuMQ0jihjVRqkmkAHA@mail.gmail.com> |
bueno gente al fin lo logre gracias a sus consejos, este es el script
completo:
<?
include("tempconex.php");
$stop = "SELECT estado FROM mensajes WHERE estado is NOT NULL";
do {
### comienzo script de conexion ###
$queEmp = "SELECT numero, mensaje FROM mensajes WHERE estado is NULL";
$resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
if ($resEmp == true) {
while ($rowEmp = mysql_fetch_assoc($resEmp)) {
$numero = $rowEmp['numero'];
$mensaje = $rowEmp['mensaje'];
### comienza el break ###
}
sleep(13);
$comando = exec('datos.log | grep "Error 500"');
if($comando == TRUE){
echo " error encontrado NO SE ENVIA! SE BORRA Y PAUSA 30 SEG | ";
#mysql_query("UPDATE mensajes SET estado = 'no enviado', date = NOW()
WHERE numero = $numero", ($conexion));
exec('cat /dev/null > datos.log');
sleep(30);
echo " se reanuda | ";
### termina el break ###
}
else
{
### comienza el envio de el mensaje ya que no se encontro ningun error en
los logs ###
echo " Se prepara | ";
exec("comando de envio");
echo " ya se envio (no se encontro ningun error) | ";
#mysql_query("UPDATE mensajes SET estado = 'enviado', date = NOW()
WHERE numero = $numero", ($conexion));
### finaliza el envio ###
}
}
### fin script de conexion ###
} while ($stop == true);
continue;
break;
?>
lo corre barvaro!, ahora lo unico que no logro es que while si es verdad
que : SELECT estado FROM mensajes WHERE estado is NOT NULL lo ejecute pero
si no es verdad lo deje de ejecutar. Intente hacerlo de esta manera:
$stop = "SELECT estado FROM mensajes WHERE estado is NOT NULL";
y el while:
} while ($stop == true);
continue;
break;
pero no cumple la funcion, o sea si estado esta vacio que no ejecute el
bucle y si esta lleno no lo ejecute.
Saludos!
El 16 de septiembre de 2012 18:21, El Ale... <[email protected]>escribió:
> buenas tardes a todos, estoy en un aprieto y la verdad no se como
> resolverlo, tengo un bucle:
>
> prueba.php:
>
> <?
> include("conexion.php");
>
> do {
>
>
> echo "$numero";
> sleep(1);
>
>
> if ($numero == 1)
> continue;
> break;
> } while (true);
>
> ?>
>
> ############################################################3
>
> y la conexion a mysql
>
> conexion.php:
>
> <?
>
> $conexion = mysql_connect("localhost", "alexis", "123456");
> mysql_select_db("probando", $conexion);
> $queEmp = "SELECT n FROM numero WHERE n LIKE 1";
> $resEmp = mysql_query($queEmp, $conexion) or die(mysql_error());
> $totEmp = mysql_num_rows($resEmp);
> if ($totEmp> 0) {
> while ($rowEmp = mysql_fetch_assoc($resEmp)) {
> $numero = $rowEmp['n'];
>
> }
> echo "$numero";
> }
> mysql_close($conexion);
> ?>
>
> Lo que hago con el bucle es que corra siempre y cuando el valor "$numero"
> sea igual a "1", en mysql tengo un solo campo llamado "n" con el valor "1"
> y corre barvaro, ahora el problema es el siguiente, hago correr el bucle
> con el valor "1" en mysql y lo corre bien, pero cuando entro a mysql y
> cambio el valor por "2" (que vendria a ser un valor incorrecto y deberia
> salir) el bucle lo ignora y sigue corriendo, estuve leyendo mucho sobre los
> bucles pero no logro hacer que funcione de esta forma ¿podrian por favor
> darme una mano con esto? o si estoy errado ¿con que otro comando puedo
> hacer un infinito si cumple una funcion y si no que no lo haga?.
>
> Saludos y desde ya muchisimas gracias.
>