PHP - insertar datos si se cumple una condición y otro si se cumple otra

 
Vista:
sin imagen de perfil

insertar datos si se cumple una condición y otro si se cumple otra

Publicado por Hugo (37 intervenciones) el 04/01/2022 16:13:15
Hola amigos, buenas tardes.

Tengo el siguiente problema y no sé realmente como puedo resolverlo, ya que estoy dando mis primeros pasos en php.

Estoy haciendo una web donde se seleccionan 2 fechas de las cuales si una es viernes y la otra es lunes, debe descontar 1 día (el domingo).

A su vez, si el usuario selecciona alguna fecha que no cumpla esta condición (ser viernes y lunes) debe contar de corrido pero no excederse de 3 días.

El problema lo tengo en insertar 3 días cuando se cumple la condición de que selecciona un viernes y un lunes (y no 4) e insertar también 3 días pero si selecciona otros días que no sean viernes y lunes.

Espero no haber entreverado mucho.

Si alguien me puede ayudar estaría realmente muy agradecido porque me está complicando mucho.

Copio aquí el código:

html>
<head>
<title>Intranet</title>
<meta charset="utf-8">
<link rel="stylesheet" type="text/css" href="../Cabecera/cabecera.css">
<link rel="stylesheet" type="text/css" href="../Login/iniciar_session.css">
<link rel="stylesheet" type="text/css" href="../Avatar/avatar.css">
<link rel="stylesheet" type="text/css" href="../Internacion/internacion2.css">
<link rel="stylesheet" type="text/css" href="../Formato_Form/formularios.css">
<link rel="stylesheet" type="text/css" href="estudio.css">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css">
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<link href="https://fonts.googleapis.com/css2?family=Kaisei+HarunoUmi:wght@500&display=swap" rel="stylesheet">
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.css"/>
<script src="https://code.jquery.com/jquery-3.2.1.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/limonte-sweetalert2/6.11.0/sweetalert2.js"></script>
</head>
<body>
<?php
include ("../Conexion/conexion.php");
?>
<div id="Logo">
<img src= "../logo.jpg" class="soc"/>
</div>
<div id="Cabecera">
<?php
require ("../Login/iniciar_session.php");
?>
<?php
//error_reporting(E_ERROR | E_WARNING | E_PARSE);
date_default_timezone_set("America/Montevideo");
if(isset($_POST['ingresar'])){
$usuario=$_SESSION['usuario'];
$nom=$_SESSION['nombre'];
$ape=$_SESSION['apellido'];
$seccion=$_SESSION['seccion'];
$tipo='Licencia por Estudio';
$desc=$_POST['examen'];
$carrera=$_POST['carrera'];
$instituto=$_POST['instituto'];
$desde=$_POST['desde'];
$hasta=$_POST['hasta'];
$fecha1=new DateTime($_POST['desde']);
$fecha2=new DateTime($_POST['hasta']);
$control_fecha= $fecha1->diff($fecha2);
$dia=intval('1');
$control_fecha2=$control_fecha->days + $dia;
$pendiente='Pendiente';
$extrae_año=strtotime($desde);
$anio = date('Y', $extrae_año);

//Calculo para los días de anticipación de solicitud
$fecha_actual=date('Y-m-d');
$fecha1= new DateTime($fecha_actual);
$fecha2= new DateTime($_POST['desde']);
$diff = $fecha1->diff($fecha2);
$dif=$diff->days;

$anticipacion=intval('5');

$total_dias="SELECT SUM(cantDias) as cantDias FROM licespec WHERE numFunc='$usuario' && tipoLic='$tipo' && anioDesde='$anio'";
$query_suma=$conexion->query($total_dias);
$array_suma=$query_suma->fetch_assoc();
$total_suma=$array_suma['cantDias'];


$registro="INSERT INTO licespec(numFunc,nombre,apellido,seccion,tipoLic,descripcion,carrera_curso,institucion,fechaDesde,fechaHasta,cantDias,fechaSolicitud,anioDesde,estado) VALUES ('$usuario','$nom','$ape','$seccion','$tipo','$desc','$carrera','$instituto','$desde','$hasta','$control_fecha2',NOW(),'$anio','$pendiente')";

if($dif<$anticipacion){
echo "<script>
function alerta(){
swal({
title: 'Ups...!',
text: 'La fecha para ingresar tu solicitud expiró, recuerda que debes hacerlo con al menos 5 días de anticipación.',
type: 'error',
}).then(function(){
window.location='estudio.php';
});
}
alerta();

</script>";
exit();
}

//Verifico que no haya una solicitud para ese día
$total_dia="SELECT fechaDesde FROM licespec WHERE numFunc='$usuario' && tipoLic='$tipo' && fechaDesde='$desde' && anioDesde='$anio'";
$total_verif=mysqli_num_rows($conexion->query($total_dia));

if($total_verif>0){
echo "<script>
function alerta(){
swal({
title: 'No se ingresará su solicitud',
text: 'Ya existe una solicitud para el día seleccionado, por favor verifique.',
type: 'info',
}).then(function(){
window.location='estudio.php';
});
}
alerta();
</script>";
exit();
}

if($fecha2<$fecha1){

echo "<script>
function alerta(){
swal({
title: 'Error!',
text: 'La fecha desde debe ser igual o mayor a la fecha hasta.',
type: 'error',
}).then(function(){
window.location='estudio.php';
});
}
alerta();

</script>";
exit();

}
if($control_fecha2>3){
echo "<script>
function alerta(){
swal({
title: 'Error!',
text: 'Los días solicitados deben ser iguales o menores a 3.',
type: 'error',
}).then(function(){
window.location='estudio.php';
});
}
alerta();
</script>";
exit();

}

//sumo el total de días tomado en el año
$total_dias="SELECT SUM(cantDias) as cantDias FROM licespec WHERE numFunc='$usuario' && tipoLic='$tipo' && anioDesde='$anio'";
$query_suma=$conexion->query($total_dias);
$array_suma=$query_suma->fetch_assoc();
$total_suma=$array_suma['cantDias'];

$total= $control_fecha2+$total_suma;

if($total>15){
echo "<script>
function alerta(){
swal({
title: 'Ups...!',
text: 'Ya tienes '+$total_suma+' días tomados en el año '+$anio,
type: 'error',
}).then(function(){
window.location='estudio.php';
});
}
alerta();
</script>";
exit();
}

//controlo si hay un domingo en el medio de la solicitud

$dato_desde=date('w',strtotime($desde));
$dato_hasta=date('w',strtotime($hasta));

if($dato_desde==5 & $dato_hasta==1){
$control_fecha3=$control_fecha->days;

$registro="INSERT INTO licespec(numFunc,nombre,apellido,seccion,tipoLic,descripcion,carrera_curso,institucion,fechaDesde,fechaHasta,cantDias,fechaSolicitud,anioDesde,estado) VALUES ('$usuario','$nom','$ape','$seccion','$tipo','$desc','$carrera','$instituto','$desde','$hasta','$control_fecha2',NOW(),'$anio','$pendiente')";


}

if(!$resultado=$conexion->query($registro)){
echo "No se pudo ejecutar la consulta a la base de datos";
exit;
}else{
echo "<script>
function alerta(){
swal({
title: 'Solicitud ingresada con éxito!',
text: 'Recuerde que debe presentar comprobante de prueba, revisión o exámen para validar su solicitud.',
type: 'success',
}).then(function(){
window.location.href='//localhost/Universal2/index.php';
});
}
alerta();
</script>";


}



$conexion->close();
}
?>
</div>

<div id="Contenido">
<img src= "../empresa.jpg" class="fondo">
</div>

<div id="cont-form">
<form action="<?php echo $_SERVER['PHP_SELF']?>" method="post" class="form">
<div class="formulario">
<h2 class="titulo">Licencia por Estudio</h2><br><br>
<div class="fechas" >
<span>Desde:
<input type="date" name="desde" class="fecha" required/></span>
<span class="Hasta">Hasta:
<input type="date" name="hasta" class="fecha" required/>
</span><br>
<input type="text" name="examen" class="examen" placeholder="Ingrese materia a rendir" required/>
<input type="text" name="carrera" class="examen" placeholder="Ingrese carrera o curso" required/>
<input type="text" name="instituto" class="examen" placeholder="Ingrese la Institución donde cursa" required/>
</div>
<br>
<input type="submit" value="Ingresar" name="ingresar" class="ingresar">
</div>
</form>
</div>
</body>
</html>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

insertar datos si se cumple una condición y otro si se cumple otra

Publicado por Hugo (37 intervenciones) el 04/01/2022 17:58:01
Estimados, ya lo solucioné con lo siguiente:

//controlo si hay un domingo en el medio de la solicitud

$dato_desde=date('w',strtotime($desde));
$dato_hasta=date('w',strtotime($hasta));

if($dato_desde==5 && $dato_hasta==1){
$control_fecha2=$control_fecha->days;
}else{
$control_fecha2=$control_fecha->days + $dia;
}
Lo dejo aquí por si alguien lo precisa.

Muchas gracias.
Saludos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Yoel
Val: 617
Bronce
Ha mantenido su posición en PHP (en relación al último mes)
Gráfica de PHP

insertar datos si se cumple una condición y otro si se cumple otra

Publicado por Yoel (198 intervenciones) el 04/01/2022 18:16:30
Hola Hugo, no entiendo muy bien lo que estas preguntando pero para el caso que si te selecciona vienes y lunes puedes usar un if(). Para determinar el día de la semana que te seleccionaron, tienes que usar este código que está aquí en la web Ir al código . Cuando ya tengas el día de la semana de forma literal, puedes usar la función te dejo a continuación para que le quites un día.

1
2
3
if($f1 == 'Viernes' AND $f2 == 'Lunes'){
      $numdias = $numdias - 1;
}

Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

insertar datos si se cumple una condición y otro si se cumple otra

Publicado por Hugo (37 intervenciones) el 04/01/2022 18:22:08
Yoel, te agradezco mucho tu tiempo.

Por suerte lo pude solucionar haciendo lo siguiente:

//controlo si hay un domingo en el medio de la solicitud

$dato_desde=date('w',strtotime($desde));
$dato_hasta=date('w',strtotime($hasta));

if($dato_desde==5 && $dato_hasta==1){
$control_fecha2=$control_fecha->days;
}else{
$control_fecha2=$control_fecha->days + $dia;
}

Saludos y nuevamente gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar