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.
>