Hola buenos días,
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);
}
y el error que marca es el siguiente:
Cita: 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
donde la línea 30 es esta:
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));
Algo se me debe estar pasando por alto, pero no lo visualizo... alguna idea?
De antemano, gracias por sus comentarios.
Saludos!!