Tengo el siguiente código, el cuál se va a ejecutar para un CronJob, les comento como funciona:
Este código va a revisar una tabla en la base de datos, donde están almacenados los datos de los usuarios (usuario, password, fecha de alta, fecha de baja, vigencia). Los usuarios tienen una vigencia de 3 meses con su password, entonces, cuando la fecha actual se aproxima a la de la vigencia, si es menor a 7 días y mayor a 0 te manda avisos; si la fecha es igual al día de la vigencia, entonces bloquea al usuario con un update a ese campo (0 = desbloqueado, 1= bloqueado).
El problema, es que cuando el día es igual a la fecha de vencimiento, entra a la opción en un case y marca error el update.
Este es el código en PHP:
Código PHP:
$hoy = date('Y-m-d');
// Seleccionamos a los usuarios
$sqlSelectPassword = mysqli_query($connect, "Select id_usuario, usu_usuario, usu_nombre, usu_password, usu_alta, usu_vigencia, usu_baja, usu_correo From sys_usuarios", MYSQLI_USE_RESULT);
while ($rowSelectPassword = mysqli_fetch_array($sqlSelectPassword, MYSQLI_ASSOC)) {
$alta = $rowSelectPassword['usu_alta'];
$baja = $rowSelectPassword['usu_baja'];
$usuario = $rowSelectPassword['id_usuario'];
// Calculamos la diferencia de días
$dias = diff_dte($hoy, $baja);
switch($dias){
case '0': // Si es igual a la fecha de vigencia, se actualiza el campo
$sqlUpdateUsuarios = mysqli_query($connect, "Update sys_usuarios Set usu_bloqueo = 1 Where id_usuario = $usuario", MYSQLI_USE_RESULT) or die(mysql_error($connect));
mysql_free_result($sqlUpdateUsuarios);
echo 'Bloqueado';
break;
case ($dias < 7 && $dias > 0): // Si es menor a 7 o mayor a 0 manda avisos (por email, aún no implementados)
echo 'Cuenta por bloquear.';
}
} mysql_free_result($sqlSelectPassword);
// Función para calcular la diferencia entre los días
function diff_dte($date1, $date2){
if (!is_integer($date1)) $date1 = strtotime($date1);
if (!is_integer($date2)) $date2 = strtotime($date2);
return floor(abs($date1 - $date2) / 60 / 60 / 24);
}
Cita:
donde la línea 30 es esta:Warning: mysql_error() expects parameter 1 to be resource, object given in E:\XAMPP\htdocs\Sistema Facturacion\scripts\cronjobs-vigencia-pass.php on line 30
Código PHP:
$sqlUpdateUsuarios = mysqli_query($connect, "Update sys_usuarios Set usu_bloqueo = 1 Where id_usuario = $usuario", MYSQLI_USE_RESULT) or die(mysql_error($connect));
De antemano, gracias por sus comentarios.
Saludos!!