Ver Mensaje Individual
  #1 (permalink)  
Antiguo 10/03/2009, 04:31
karagounis24
 
Fecha de Ingreso: diciembre-2008
Mensajes: 21
Antigüedad: 15 años, 4 meses
Puntos: 0
Problemas para entrar en un bucle

Hola amigos, tengo el siguiente código:

Cita:
Código PHP:
<?php
include('functions.php'); 
 

//CONEXIÓN A LA BASE DE DATOS
 
Conectarse();
    
 
//CONSULTA VISTA TERMINALES
 
  
$term mssql_query("SELECT * FROM vTraficoIrregularCyD WHERE [Terminal]='DCC0044056A4'");
 
  
//TABLA POLLS
 
  /* echo "<table border=\"3\">\n";
        echo "<tr><td><center><b>TERMINAL</b></td><td><center><b>ID</b></td><td><center><b>INICIO</b></td>
              <td><center><b>FIN</b></td><td><center><b>EMITIDOS</b></td>
              <td><center><b>TEORICOS</b></td><td><center><b>DESVIO</b></td>
              <td><center><b>INTERVALO</b></td><td><center><b>POLL</b></td><td><center><b>FECHA</b></td></tr>";    
     */
     //Empezamos si existen terminales en la vista
     
       
while($linea=mssql_fetch_array($term)){
     
       
       
//Terminales D
   
         
if($linea['Tipo']==5){
       
   
          
//Guardo variables que me harán falta
 
            
$idtd $linea['Id Terminal'];
            
$terminal $linea['Terminal'];
             
$intd $linea['Intervalo programado'];
            
$emitidos $linea['Mensajes Emitidos'];
             
$teoricos $linea['Mensajes Teoricos'];
             
$desvio $emitidos $teoricos;
             
       
       
//Guardamos las fechas(GMT)inicio y fin como números enteros y le sumamos una hora(GMT+1)para compararlas con
       //la fecha de terminales_tx_spool(GMT+1) 
         
         
$inicio = ((strtotime($linea['Fecha Inicio']))+3600);
         
$fin = ((strtotime($linea['Fecha Fin']))+3600);
       
         
       
       
//Pasamos las fechas inicio y fin al formato de sql para incluirlas en el query
         
         
$inicio1 date("d-m-Y H:i:s"$inicio);
         
$fin1 date("d-m-Y H:i:s"$fin);
                     
        
//Miramos si hay programaciones en la tabla terminales_tx_spool
        
         
$prog=mssql_query("SELECT terminalid, messageid, intervalo, fecha FROM terminales_tx_spool
                                 WHERE intervalo is not null"
);
             
                                       
                                   
             
//Si hay algo en $prog
             
             
if($prog==true){
             
              
//Buscamos la última programación correcta, seleccionamos filas de terminales_tx_spool
           //Buscamos la última prog. correcta en la tabla terminales_rx_status_log(mensaje 106)
        
            
$statuslog=mssql_query("SELECT top 1 terminales_tx_spool.intervalo, terminales.identificador
                                                ,terminales_rx_status_log.estado, terminales_rx_status_log.fecha
                                    FROM terminales_rx_status_log 
                    INNER JOIN terminales_tx_spool ON terminales_rx_status_log.messageid = terminales_tx_spool.messageid 
                    INNER JOIN terminales ON terminales_tx_spool.terminalid = terminales.ref
                      WHERE terminales.identificador ='$terminal' and terminales_rx_status_log.estado = 106 
                             and terminales_tx_spool.intervalo is not null
                             ORDER BY terminales_rx_status_log.fecha desc"
);    
              
           
           
//Si está en terminales_rx_status_log el mensaje que hace efectiva la programación(106)entra                                                                       
            
              
$intervalo 0;
              
             
//Recorremos las filas de terminales_rx_status_log
                                             
              
while($linea1=mssql_fetch_array($statuslog)){
            
                     
                    
$intervalo=$linea1['intervalo'];
                     
              
              }
//while(linea1) 
              
              
if($intervalo!=0){
                  
              
              echo
"El Terminal $terminal tiene un último intervalo efectivo programado a $intervalo"."</br>";   
              
              }
//if(intervalo!=0)
              
                
if($intervalo==0){
                   
                                   
                    
$status=mssql_query("SELECT top 1  terminales_rx_status.messageid, terminales_rx_status.terminalid
                                                    ,terminales_rx_status.messagestatus,terminales_rx_status.gatewaytimestamp
                                                    ,terminales_tx_spool.terminalid,terminales_tx_spool.intervalo
                                                 ,terminales_tx_spool.messageid,terminales_tx_spool.fecha
                                                 ,terminales.ref, terminales.identificador
 
                                    FROM terminales_tx_spool 
                            INNER JOIN terminales_rx_status on terminales_tx_spool.messageid=terminales_rx_status.messageid
                            INNER JOIN terminales on terminales_tx_spool.terminalid=terminales.ref
                                    WHERE terminales_rx_status.messagestatus=6 and terminales_tx_spool.intervalo is not null
                                        and terminales.identificador='$terminal' ORDER BY gatewaytimestamp desc"
);
           
                               
                     while(
$linea2=mssql_fetch_array($status)){
                    
                       
$intervalo1=$linea2['intervalo'];
                      
                        echo
"El Terminal $terminal tiene un último intervalo efectivo programado a $intervalo1"."</br>";
   
          
                      }
//while(linea2)
                                                                                                                                                                                   
               
}//if(intervalo=0)
  
    
               
}//if($message)                        
       
         // echo"hasta aqui llega";
                                                            
     
             
else{
             
                         
$terminales=mssql_query("SELECT * FROM terminales WHERE identificador='$terminal'");
             
                            while(
$linea3=mssql_fetch_array($terminales)){
                 
                             
$intervalo2=$linea3['intervalo'];
                 
                             echo
"El Terminal $terminal tiene un intervalo programado a $intervalo2"."</br>"
                 
             }
//While(linea3)
                        
                 
         
}//else 
         
        
}//IF(TERMD)
     
       
}//WHILE(TERM) 
       
        
Desconectarse();
           
?>
El problema lo tengo en el último bucle else, pues no me entra en el , también he probado escribiendo: if($prog==false) ó if($prog!=true) y otras cosas, y no me entra en el bucles de ningún modo, estoy seguro que el problema está en ese bucle , porque si no pongo ningún bucle entra y realiza las acciones perfectamente, haber si alguien me puede decir que estoy haciendo mal, gracias.