Cita:
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. 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();
?>