KGRKJGETMRETU895U-589TY5MIGM5JGB5SDFESFREWTGR54TY
Server : Apache/2.4.62
System : FreeBSD fbsdweb2.web.rcn.net 14.1-RELEASE FreeBSD 14.1-RELEASE releng/14.1-n267679-10e31f0946d8 GENERIC amd64
User : www ( 80)
PHP Version : 8.3.8
Disable Function : NONE
Directory :  /domains/logicswapweb/aplicaciones/admon/noticias/tb_noticias/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Current File : /domains/logicswapweb/aplicaciones/admon/noticias/tb_noticias/pruebanoticiasactivas.php
<?php
/******************************************************************
  clase realizar operaciones en la base de datos                 
 ******************************************************************/
class met_noticias{
//Atributos de la clase
	var $db_HOST = "localhost";
	var $db_USER = "root";
	var $basedatos='intranet';
	var $vinculo ;			//link de conexi�n a la base de datos
	var $registros;			//almacena el resultado de una consulta a la base de datos
	var $maxnotact=20;
/************************************************************
M�TODO: 		conectar
DESCRIPCION: 	se conecta a una base de datos	
PARAMETROS:	
	$basedatos:	base de datos a la que se conectara
RETORNA:
	error:		si la conexion lo genera 
*************************************************************/
	function conectar(){
		if (!$this->vinculo = mysql_connect($this->db_HOST,$this->db_USER))
		{
			$mensaje = "Error conectando a la base de datos";
			$this->dis_mensaje($mensaje);
			return false;
		}
		if (!mysql_select_db($this->basedatos,$this->vinculo))
		{
			$mensaje = "Error seleccionando la base de datos";
			$this->dis_mensaje($mensaje);
			return false;
		}
	}
/************************************************************
M�TODO: 		consultar
DESCRIPCION: 	Realiza conexion a la base de datos y 
				Verifica que la base de datos sea la adecuada	
PARAMETROS:	
	$consulta:	consulta a realizar en la base de datos
	$basedatos:	base de datos en la que se realizar� la consulta
RETORNA:
	error:		cuando la consulta genera algun error
	$registros:	cuando la consulta no genera errores
*************************************************************/
	function consultar($consulta){
		$this->conectar();
		$this->registros  = mysql_query($consulta,$this->vinculo);
							echo mysql_error();
		return $this->registros;
	}
/************************************************************
M�TODO: 		liberar
DESCRIPCION: 	Libera los recursos asociados a el cursor registros	
PARAMETROS:	
RETORNA:
*************************************************************/
	function liberar()
	{
		mysql_free_result($this->registros);
	}
/************************************************************
M�TODO: 		cerrar
DESCRIPCION: 	cierra la conexi�n
PARAMETROS:	
RETORNA:
*************************************************************/
	function cerrar()
	{
		mysql_close($this->vinculo);
	}
 
/************************************************************
M�TODO: 		dis_mensaje
DESCRIPCION: 	despliega un mensaje en la pantalla
PARAMETROS:		mensaje a desplegar
RETORNA:
*************************************************************/
	function dis_mensaje($mensaje)
	{
			echo "<tr>
					<td colspan=\"4\" class='pront' align='center'>
						<br><FONT color=#000099 face='Arial, Helvetica, sans-serif' size=2>".$mensaje."</FONT><br><br>
					</td>
				</tr>";
	}
 
function chkmaxnotact($fechapublic, $fechafin){
//selecciona todas las noticias que se traslapan con el periodo dado
//condiciones:	1. fechapublic esta en  [bdfechapublic, bdfechafin] --> fechapublic  >= bdfechapublic  && fechapublic   <= bdfechafin
//				2. fechafin    esta en  [bdfechapublic, bdfechafin] --> fechafin     >= bdfechapublic  && fechafin      <= bdfechafin
//				3. bdfechapublic esta en  [fechapublic, fechafin]   --> bdfechapublic >= fechapublic   && bdfechapublic <= fechafin
//				4. bdfechafin    esta en  [fechapublic, fechafin]   --> bdfechafin    >= fechapublic   && bdfechafin    <= fechafin
	$indicador='FALSE';//asume que ning�n dia se pasa del n�mero de noticias activas
	$consulta = "select noticia_id, noticia_fechapublic, noticia_fechafin
				from   noticias
				where   ('$fechapublic'      >= noticia_fechapublic and '$fechapublic' <= noticia_fechafin)
				or		('$fechafin'         >= noticia_fechapublic and '$fechafin'    <= noticia_fechafin)
				or		(noticia_fechafin    >= '$fechapublic' and noticia_fechafin    <= '$fechafin')
				or     	(noticia_fechapublic >= '$fechapublic' and noticia_fechapublic <= '$fechafin')";
	$resultado = $this->consultar($consulta); 
//para cada dia del periodo se cuenta el n�mero de noticias activas
	//carga matriz con:cada fila corresponder� a las fechas de una noticia
	//                 cada columna corresponde a cada dia 
	//                 cada celda contendr� (1)activo o (0) no dentro del rango
	if($resultado) echo $cantidad_registros = mysql_num_rows($resultado).'<br>';
	if($cantidad_registros>0){
		//convierte fechas a dias para facilitar la comparaci�n
			list($ano, $mes, $dia) = explode('-',$fechapublic);
			$fechap = $ano*365+$mes*30+$dia;
			list($ano, $mes, $dia) = explode('-',$fechafin);
			$fechaf = $ano*365+$mes*30+$dia;
		//carga matriz
		$fnoticia=0;//iniciliza apuntador de filas 
		while($filas = mysql_fetch_assoc($resultado)){//para cada una de las noticias
			//convierte fechas de la base de datos a dias para facilitar la comparaci�n
				list($ano, $mes, $dia) = explode('-',$filas['noticia_fechapublic']);
				$bdfechap = $ano*365+$mes*30+$dia;
				list($ano, $mes, $dia) = explode('-',$filas['noticia_fechafin']);
				$bdfechaf = $ano*365+$mes*30+$dia;
				echo $filas['noticia_fechapublic'].'***'.$filas['noticia_fechafin'].'<br>';
			$fecha =  $fechap;//inicializa apuntador de fechas
			$cdiactivo=0;//iniciliza apuntador de columnas
			//carga la fila de la notica activa con 1 � 0
			while($fecha <= $fechaf){
				if($fecha >= $bdfechap && $fecha <= $bdfechaf) 	//si la fecha es activa
						$matnotact[$fnoticia][$cdiactivo]=1;
				else	$matnotact[$fnoticia][$cdiactivo]=0;
				$cdiactivo++;//incrementa el apuntador de las columnas
				$fecha++;//incrementa el apuntador de fechas
			}
			$fnoticia++; //incrementa el apuntador de las filas
		}//fin while($filas = mysql_fetch_assoc($resultado))
		////para cada dia calcula el n�mero de noticias activas
			echo 'filas:'.$filas=$cantidad_registros; echo 'columnas'.$columnas=$fechaf-$fechap.'<br>';//calcula filas y columnas de la matriz
			$ptrdias=0;//apuntador para arreglo d dias  exceden noticias activas
			for($i=0;$i<=$columnas;$i++){
				$suma=0; 
				for($j=0;$j<$filas;$j++){
					echo $matnotact[$j][$i];
					$suma+=$matnotact[$j][$i];
				}
				echo 'suma'.$suma.'<br>';
				if($suma >= $this->maxnotact){ 
					$dias[$ptrdias]=$i;//sirve para calcular los dias en que se excedi� el n�mero de noticias activas
					$ptrdias++;
					$indicador='TRUE';  
				}
			}
		for($i=0;$i<$ptrdias;$i++)
			$dias_excede[$i] = $fechap+$dias[$i];//expresado en dias
	}//fin if($cantidad_registros>0)
	//calcula los dias en que se excedi� el n�mero de noticias
//retorna el indicador
	return $indicador;
}


}//*********fin de la clase****************

$met_noticias = new met_noticias;
echo '****'.$indicador=$met_noticias->chkmaxnotact('2005-07-25', '2005-07-25');

?>

Anon7 - 2021