I have a ticket system, when doing a registration I have to insert in 3 different tables (sometimes up to 4 tables) from a single form ... One of the data that I have to insert in the Database is a session variable and here is the problem, since in certain occasions it does not register that data, I want to think that the session expires and therefore the data can not be recovered . Annex my code to see if you can guide me, in advance thank you very much.
HTML code
Form header
<?php
session_start();
if(isset($_SESSION['u_usuario'])){
if($_SESSION['u_usuario']['rol']!=2){
header("Location: ../admin/");
}
}else{
header("Location: ../index.php");
}
require('../conn/conexion.php');
//$ID = $_GET['PK_idCategoria'];
$categoria = mysqli_query($con,"SELECT * FROM categoria ORDER BY categoriaDesc ASC");
$subcategoria = mysqli_query($con,"SELECT * FROM subcategoria");
#Rol (2) Pertenece a los Técnicos
$tecnico = mysqli_query($con,"SELECT usuario.PK_idUsuario, usuario.nombre, usuario.apellidos FROM usuario WHERE usuario.rol <> 3");
$cliente = mysqli_query($con,"SELECT usuario.PK_idUsuario, usuario.nombre, usuario.apellidos FROM usuario ORDER BY usuario.nombre ASC");
Form Body.
<!--Modal Registro-->
<div class="modal fade" id="registrarTicket" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-lg modal-primary" role="document">
<div class="modal-content">
<div class="modal-header">
<h5 class="modal-title" id="exampleModalLabel"><i class="fa fa-plus-circle"></i> Crear Ticket</h5>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</div>
<form action="" method="post" id="frmregistrarTicket" enctype="multipart/form-data">
<div class="modal-body">
<div class="messages"></div>
<div class="alert alert-info" id="botonAF">
<a class="" data-toggle="collapse" href="#btnactividadesFrecuentes" aria-expanded="false" aria-controls="btnactividadesFrecuentes">
<i></i> Actividades frecuentes <i class="fa fa-angle-double-right"></i>
</a>
</div>
<div class="collapse" id="btnactividadesFrecuentes">
<div class="card-block" id="btnActFre">
<div class="row">
<div class="col-md-8">
<button type="button" class="btn btn-success" id="cambioDomicilio" >
<i class="fa fa-exchange"></i> Cambio
</button>
<button type="button" class="btn btn-warning" id="facturas" >
<i class="fa fa-file-text"></i> Timbrado
</button>
<button type="button" class="btn btn-primary" id="toner" >
<i class="fa fa-print"></i> Toner
</button>
</div>
<div class="col-md-4">
<button type="button" class="btn btn-danger pull-right" id="limpiarCampos" >
<i class="fa fa-close"></i> Cancelar
</button>
</div>
</div>
</div>
</div>
<hr>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">¿Es hijo?</span>
<select class="form-control" id="regEshijo" name="regEshijo">
<option value="0">No</option>
<option value="1">Si</option>
</select>
<button type="button" class="btn btn-tool btn-sm" data-toggle="tooltip" data-placement="bottom" title="Si el ticket a generar depende de otro ya creado">
<i class="fa fa-question"></i>
</button>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="input-group" id="referencia">
<span class="input-group-addon">ID Referencia</span>
<input type="text" id="regReferencia" name="regReferencia" class="form-control" placeholder="Referencia ticket padre">
<button type="button" id="heredar" class="btn btn-primary btn-sm"><i class="fa fa-angle-double-right"></i></button>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Requerimiento</span>
<select class="form-control" name="regCategoria" id="regCategoria" required>
<option value="">Seleccione...</option>
<?php
while($fila=mysqli_fetch_array($categoria)){
//$ID=$fila['PK_idCategoria'];
echo '<option value="'.$fila['PK_idCategoria'].'">'.$fila['categoriaDesc'].'</option>';
}
?>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="input-group" id="idSubcategoria_">
<span class="input-group-addon">Subcategoria</span>
<select class="form-control" name="regSubcategoria" id="regSubcategoria" required>
<option value="">Seleccione...</option>
<?php
while($fila=mysqli_fetch_array($subcategoria)){
echo '<option value="'.$fila['PK_idSubcategoria'].'">'.$fila['subcategoriaDesc'].'</option>';
}
?>
</select>
</div>
</div>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Tema</span>
<input type="text" id="regTema" name="regTema" class="form-control" placeholder="Titulo tema" required>
</div>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Descripción</span>
<textarea rows="3" id="regDescripcion" name="regDescripcion" class="form-control" placeholder="Descripcion" required></textarea>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Cliente</span>
<select class="form-control" name="regCliente" id="regCliente" required>
<option value="">Seleccione...</option>
<?php
while($row=mysqli_fetch_array($cliente)){
echo '<option value="'.$row['PK_idUsuario'].'">'.$row['nombre'].' '.$row['apellidos'].'</option>';
}
?>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="input-group" id="idSucursal_">
<span class="input-group-addon">Sucursal</span>
<select class="form-control" name="regSucursal" id="regSucursal" required>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Tipo de ticket</span>
<select class="form-control" name="regTipo" id="regTipo" required>
<option value="">Seleccione...</option>
<option value="1">Servicio</option>
<option value="2">Incidente</option>
<option value="3">Problema</option>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Asignar a</span>
<select class="form-control" name="regTecnico" id="regTecnico" required>
<option value="">Seleccione...</option>
<?php
while($fila=mysqli_fetch_array($tecnico)){
echo '<option value="'.$fila['PK_idUsuario'].'">'.$fila['nombre'].' '.$fila['apellidos'].'</option>';
}
?>
</select>
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Status</span>
<select class="form-control" name="regStatus" id="regStatus" required>
<option value="">Seleccione...</option>
<option value="1">Abierto</option>
<option value="2">Asignado</option>
<option value="3">Pendiente</option>
<option value="4">Cerrado</option>
<option value="5">Cancelado</option>
<option value="6">Resuelto</option>
<option value="7">Reabierto</option>
</select>
</div>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<div class="input-group">
<span class="input-group-addon">Prioridad</span>
<select class="form-control" name="regPrioridad" id="regPrioridad" required>
<option value="">Seleccione...</option>
<option value="1">Critica (1 hr)</option>
<option value="2">Urgente (4 hr)</option>
<option value="3">Alto (2 dias)</option>
<option value="4">Medio (1 semana)</option>
<option value="5">Bajo (3 meses)</option>
</select>
</div>
</div>
</div>
</div>
<hr>
<label class="input-group-addon">Archivo(s)</label>
<input class="file-loading" id="imagen" type="file" multiple name="image[]">
<div id="errorBlock" class="help-block"></div>
</div>
<div class="modal-footer">
<button type="reset" class="btn btn-secondary" data-dismiss="modal" onclick="resetear()">Cerrar</button>
<button type="submit" class="btn btn-primary" id="btnGuardar_">Guardar</button>
</div>
</form>
</div>
</div>
</div><!--Fin Modal -->
</div>
PHP code
<?php
session_start();
$usuario = $_SESSION['u_usuario']['PK_idUsuario'];
//var_dump($usuario);
error_reporting(E_ALL);
ini_set('date.timezone','America/Mexico_City');
require_once('../conn/conexion.php');
require('../includes/funciones.php');
$page = isset($_GET['op'])?$_GET['op']:'';
#Seccion Agregar Ticket
if($page=='create'){
if($_POST) {
$validator = array('success' => false, 'messages' => array());
#Obtener el Usuario que inició sesion para saber quién está manipulando los tickets.
$usuarioCreado = $_SESSION['u_usuario']['PK_idUsuario'];
#Datos del formulario
$regEshijo = $_POST["regEshijo"];
#Si el ticket no es hijo la REFERENCIA será 0, de caso contrario tomará el valor del campo referencia.
$regReferencia = $_POST["regReferencia"];
if (empty($regReferencia)) {
$regReferencia = 0;
}else{
$regReferencia = $_POST["regReferencia"];
}
#Datos del formulario.
$regCategoria = $_POST["regCategoria"];
$regSubcategoria = $_POST["regSubcategoria"];
$regTitulo = $_POST["regTema"];
$regDescripcion = $_POST["regDescripcion"];
$regTipo = $_POST["regTipo"];
$regTecnico = $_POST["regTecnico"];
$regStatus = $_POST["regStatus"];
$regPrioridad = $_POST["regPrioridad"];
$regCliente = $_POST["regCliente"];
$regUbicacion = $_POST['regSucursal'];
#Valores por default.
$regAlerta = 1;
$regEscalado = 1;
$alta = 'ALTA';
$atencion = 'ATENCION';
$cliente = 'CLIENTE';
$query = mysqli_query($con, "INSERT INTO ticket (FK_idUbicacion, FK_idSubcategoria, tituloTicket, descripcionTicket, statusTicket, prioridadTicket, alertaTicket, escaladoTicket, tipoTicket, esHijo, refTicket) VALUES ('$regUbicacion','$regSubcategoria','$regTitulo','$regDescripcion','$regStatus','$regPrioridad','$regAlerta', '$regEscalado', '$regTipo', '$regEshijo' , '$regReferencia')");
$idTick = mysqli_insert_id($con);
#Dar de alta en la tabla ticket_usuario los datos del Cliente, del Técnico y quien creó el Ticket.
$query1 = mysqli_query ($con, "INSERT INTO ticket_usuario(FK_idTicket, FK_idUsuario, status) VALUES ('$idTick', '$usuarioCreado', '$alta')");
$query2 = mysqli_query ($con, "INSERT INTO ticket_usuario(FK_idTicket, FK_idUsuario, status) VALUES ('$idTick', '$regTecnico', '$atencion')");
$query3 = mysqli_query ($con, "INSERT INTO ticket_usuario(FK_idTicket, FK_idUsuario, status) VALUES ('$idTick', '$regCliente', '$cliente')");
#Crear las carpetas para los archivos, se agruparán por CATEGORIA Y SUBCATEGORIA
$sql = mysqli_query($con, "SELECT * FROM categoria WHERE PK_idCategoria ='".$regCategoria."'");
$cat = mysqli_fetch_assoc($sql);
$rutaCat = $cat['categoriaDesc'];
$des = str_replace(" ","_",$rutaCat);
$sql1 = mysqli_query($con, "SELECT * FROM subcategoria WHERE PK_idSubcategoria ='".$regSubcategoria."'");
$subcat = mysqli_fetch_assoc($sql1);
$rutaSubcat = $subcat['subcategoriaDesc'];
$des1 = str_replace(" ","_",$rutaSubcat);
#Ruta para los archivos
$archivo = "../archivos/$des/$des1/";
#Crear carpetas sino existen.
if (!file_exists($archivo)) {
mkdir($archivo, 0777, true);
}
#Cargar Imagenes
if(isset($_FILES['image']['tmp_name'])){
#Numero de archivos a cargar
$num_files = count($_FILES['image']['tmp_name']);
for($i=0; $i < $num_files;$i++)
{
#Ver si hay archivos para subir
if(!is_uploaded_file($_FILES['image']['tmp_name'][$i]))
{
#echo "No se encontraron archivos";
}
else
{
#Copiar imagenes a la carpeta correspondiente de acuerdo a la marca
if(@copy($_FILES['image']['tmp_name'][$i],"$archivo".$_FILES['image']['name'][$i])){
$path = "".$_FILES['image']['name'][$i];
$query4= mysqli_query($con, "INSERT INTO archivoticket(FK_idTicket, archivoTicket) VALUES('$idTick', '$path')");
}
else
{
#echo "No se pudo subir el archivo";
}
}
}
}
#Si todos los datos se han insertado correctamente se muestra un mensaje de éxito, de caso contrario un alerta de error.
if($query === TRUE && $query1 === TRUE && $query2 === TRUE && $query3 === TRUE) {
$validator['success'] = true;
$validator['messages'] = "Ticket creado correctamente";
} else {
$validator['success'] = false;
$validator['messages'] = "Error al crear el ticket";
}
$con->close();
echo json_encode($validator);
}
}
else{
}
jQuery
$("#frmregistrarTicket").on("submit", function(e){
//var parametros = $(this).serialize();
$('#btnGuardar_').attr("disabled", true);
e.preventDefault();
var formData = new FormData(document.getElementById("frmregistrarTicket"));
var ruta = "crudTickets.php?op=create";
$.ajax({
type: "POST",
url: ruta,
data: formData,
contentType: false,
processData: false,
dataType : 'json',
success: function(response)
{
if(response.success == true) {
// Recargar la tabla y limpiar los campos y mostrar mensaje de error
tblTicket.ajax.reload();
$("#frmregistrarTicket")[0].reset();
$("#registrarTicket").modal('hide');
swal({
title: "Éxito!",
text: "El ticket se ha creado correctamente!",
type: "success",
timer: 3000,
showConfirmButton: true
});
//location.reload();
//Error
} else {
swal({
title: "Error!",
text: "No se pudo crear el ticket.!",
type: "error",
timer: 3000,
showConfirmButton: true
});
}
}
});
});