Alertas php y mysql tengo código pero no se como adaptarlo a como yo quiero

Tengo un sistema de contratos donde el empleado tiene 30 días de contrato lo que necesito es como mandar una alerta de los empleados que están por vencerse el contrato faltando 5 días hice esta consulta pero no genera nada.

$consulta=mysql_query("select * FROM empleados where f_contrato between curdate() and date_add(curdate(), interval 5 day)");

2 respuestas

Respuesta
1

¿Me puedes enviar la estructura de tu tabla?

Muchísimas gracias por contestar Javier muy amable te mando imágenes de mi estructura de mi tabla de mi base de datos please ayúdame

Disculpa creo que no se ve estos son los datos que tengo en mi tabla empleados

clave_em pint(50)  auto_increment

nombre varchar(50 ) utf8_general_ci

puesto varchar(40) utf8_general_ci

est_civil varchar(50) utf8_general_ci

sexo varchar(20) utf8_general_ci

edad varchar(40) utf8_general_ci

rfc varchar(50) utf8_general_ci

curp varchar(70) utf8_general_ci

domicilio varchar(500) utf8_general_ci

postal varchar(40) utf8_general_ci

i_contrato varchar(40) utf8_general_ci

f_contrato varchar(80)utf8_general_ciNo

salario_base float(7,2)No

No veo ningún campo tipo fecha.

creo una variable;

$hoy=strftime( "%Y-%m-%d", time() );

$nuevafecha = strtotime ( '-2 day' , strtotime ( $fecha ) ) ;

$nuevafecha = date ( 'Y-m-d' , $nuevafecha );

mi consulta seria asi;

select  campo 1 , campo2 , campo3    from mi tabla 

where  mi_campo_fecha =$nuevafecha.

Cualquier duda estaré atento

<?php
$timeActual= time(); // Obtenemos el timestamp del momento actual
$timeVencimiento = strtotime($f_contrato); // Obtenemos timestamp de la fecha de vencimiento
// Calculamos el número de segundos que tienen esos 3 días
$segundos = 3 * 24 * 60 * 60;
// Condición: Si la diferencia entre la fecha de vencimiento y la fecha actual es menor de 3 días
if($timeVencimiento-$timeActual < $segundos) 
{
if($rowAlertaPago['status']=='PENDIENTE')
{ 
// Va a expirar en menos de 3 días
echo '<div class="mensaje-alerta">
<p><img src="imagenes/images.jpg" />Le recordamos LOS CONTRATOS QUE ESTAN POR VENCERSE. </p>
</div>';
}
// if($rowAlertaPago['status']=='CANCELADO')
{ 
// Va a expirar en menos de 3 días
echo '';
}
}
else
{
// Todavía no
// echo '<div class="mensaje-alerta-2"><p>Ya cancelaste tu cuota.</p></div>'; 
}
?>

Ese es mi código para generar la alerta lo tome en un ejemplo pero algo me hace falta para generarlo en mi base de datos utilice el tipo fecha timestamp que son yyyy-mm-d h:s:i

Si manejas con minutos y segundos deberías probar con datadiff

La verdad soy nueva en esto ayúdame por favor no tienes un ejemplo para guiarme de ahí por favor si no sera mucha la molestia

Enviame por favor el la estructura de tu tabla y con 2 datos de referencia

Y el código que estas usando.

mmmmm el código que uso es la que esta arriba y mi estructura de la tabla es la misma que ya me habías pedido amigo

Varias cosas con tu ejemplo

Uno time te devuelve este valor 1447092053

Debes leer esta documentación.

http://php.net/manual/es/function.time.php 

Dos. No veo tu consulta a la base de datos.

Hice esta, no se si te sirva, te va a mostrar todos los registros que coincidan con tu criterio de búsqueda.

<?php require_once('siscos.php');?>
<?php
$fecha = date('Y-m-d', strtotime('-5 day'));
echo $fecha;

mysql_select_db($database_siscos, $siscos);
$query_Recordset2 = "SELECT * FROM prueba WHERE CAST( fecha as date) = '$fecha'";
$Recordset2 = mysql_query($query_Recordset2, $siscos) or die(mysql_error());
$row_Recordset2 = mysql_fetch_assoc($Recordset2);
$totalRows_Recordset2 = mysql_num_rows($Recordset2);

¿

¿

?>

¿Ese código es para mostrar el mensaje amigo? Pero no veo una conexión a mi tabla de la base de datos

<?php require_once('siscos.php');?>

Llama a tu conexión en mi caso el archivo se llama siscos.php y hay están todo los datos de conexión

Respuesta

¿Intentaste ejecutar la consulta en la base datos? Si ejecutas esta consulta, ¿qué resultados trae?
SELECT curdate( ) , date_add( curdate( ) , INTERVAL 5
DAY )

Gracias marcelo por contestar pues la ejecuto y no me arroga resultados de echo registro empleados faltando 5 días y no ejecuta nada

Me refiero en la base de datos, no en php (ya sea desde la consola de mysql, o con phpmyadmin o con el workbench de mysql o dbeaber, etc.)

ok ya lo ejecute en phpmyadmin y me sale error

¿Incluiste la parte de abajo de la consulta?
SELECT curdate( ) , date_add( curdate( ) , INTERVAL 5 DAY )

¿Tu consulta original también muestra error? ¿Qué error? ¿Qué version de mysql estas usando?

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas