Buenas estoy por aca pidiendoles ayuda con un problema que me lleva bastante complicada, estoy creando un proyecto que permite subir archivos de tipo pdf a un servidor y guardar datos basicos en la base de datos, luego le pido que me retorne el ID que es autoincrementable, este id lo almaceno en una variable en la clase controlador para almacenarlo en otra base de datos relacional llamada destinatarios, el problema viene aqui porque el id llega null o vacio cuando lo voy a almacenar en destinatarios. Cuando reviso la tabla de Documentos esta la informacion pero en la otra tabla llega la cedula pero no el id debido.
Espero me puedan ayudar, aqui les dejo el codigo
Código PHP:
class Documento {
private $id_documento;
private $nombre_documento;
private $descripcion_documento;
private $tipo_documento;
private $ruta_archivo;
private $cantidad_firmas;
private $estatus;
private $cedula_generador;
function __construct() {
$this->db = pdodb::getDB();
}
public function getId_documento() {
return $this->id_documento;
}
public function getNombre_documento() {
return $this->nombre_documento;
}
public function getDescripcion_documento() {
return $this->descripcion_documento;
}
public function getTipo_documento() {
return $this->tipo_documento;
}
public function getRuta_archivo() {
return $this->ruta_archivo;
}
public function getCantidad_firmas() {
return $this->cantidad_firmas;
}
public function getEstatus() {
return $this->estatus;
}
public function getCedula_generador() {
return $this->cedula_generador;
}
public function setId_documento($id_documento) {
$this->id_documento = $id_documento;
}
public function setNombre_documento($nombre_documento) {
$this->nombre_documento = $nombre_documento;
}
public function setDescripcion_documento($descripcion_documento) {
$this->descripcion_documento = $descripcion_documento;
}
public function setTipo_documento($tipo_documento) {
$this->tipo_documento = $tipo_documento;
}
public function setRuta_archivo($ruta_archivo) {
$this->ruta_archivo = $ruta_archivo;
}
public function setCantidad_firmas($cantidad_firmas) {
$this->cantidad_firmas = $cantidad_firmas;
}
public function setEstatus($estatus) {
$this->estatus = $estatus;
}
public function setCedula_generador($cedula_generador) {
$this->cedula_generador = $cedula_generador;
}
public function salvar($file_upload, $tmp_name, $size, $tipo) {
$rutacompl = $this->ruta_archivo . $file_upload;
if ($tipo == "application/pdf") {
if ($size > 0) {
// Si no hubo ningun error, hacemos otra condicion para asegurarnos que el archivo no sea repetido
if (!file_exists($rutacompl)) {
// Si no es un archivo repetido y no hubo ningun error, procedemos a subir a la carpeta /archivos, seguido de eso alamacenamos en BD
if (move_uploaded_file($tmp_name, $rutacompl)) {
$sql = "INSERT INTO documentos
(nombre_documento,descripcion_documento,tipo_documento,ruta_archivo,cantidad_firmas,cedula_generador,estatus)
VALUES(:nombre_documento,:descripcion_documento,:tipo_documento,:ruta_archivo,:cantidad_firmas,:cedula_generador,:estatus)
RETURNING id_documento";
$sth = $this->db->prepare($sql);
$sth->execute(
array(
'nombre_documento' => $this->nombre_documento,
'descripcion_documento' => $this->descripcion_documento,
'tipo_documento' => $this->tipo_documento,
'ruta_archivo' => $this->ruta_archivo,
'cantidad_firmas' => $this->cantidad_firmas,
'cedula_generador' => $this->cedula_generador,
'estatus' => $this->estatus
)
);
$resultado = $sth->fetch(PDO::FETCH_ASSOC);
$this->id_documento = $resultado['id_documento'];
return 0;
} else {
return 1;
}
} else {
return 2;
}
} else {
return 3;
}
} else {
return 4;
}
}
Y el codigo del controlador
Código PHP:
$file_uploadPDF = $_FILES["archivo"]["name"];
$tmp_namePDF = $_FILES["archivo"]["tmp_name"];
$sizePDF = $_FILES["archivo"]["size"];
$tipoPDF = $_FILES["archivo"]["type"];
$rutaabs = "documentospdf/afirmar/";
$valfirmante = $_REQUEST['fieldF'];
$valdestinatario = $_REQUEST['fieldD'];
$cantfirmas = count($valfirmante);
$documento_req = new Documento();
$documento_req->setNombre_documento($file_uploadPDF);
$documento_req->setDescripcion_documento($_REQUEST['descripciondoc']);
$documento_req->setTipo_documento($_REQUEST['tipodocumento']);
$documento_req->setRuta_archivo($rutaabs);
$documento_req->setCantidad_firmas($cantfirmas);
$documento_req->setEstatus('Iniciado');
$documento_req->setCedula_generador($_SESSION['cedula']);
$validaPDF = $documento_req->salvar($file_uploadPDF, $tmp_namePDF, $sizePDF, $tipoPDF);
$id_documento = $documento_req->getId_documento();
if ($validaPDF == 0) {
$resultadoPDF = 'Datos Guardados';
} else if ($validaPDF == 1) {
$resultadoPDF = 'Error subiendo el archivo al servidor';
} else if ($validaPDF == 2) {
$resultadoPDF = 'El archivo ya existe en el servidor';
} else if ($validaPDF == 3) {
$resultadoPDF = 'El archivo esta vacio';
} else if ($validaPDF == 4) {
$resultadoPDF = 'Archivo no permitido, solo se permite archivos PDF';
}
$firmante_req = new Firmante();
for ($i = 0; $i < count($valfirmante); $i++) {
$firmante[$i] = $valfirmante[$i];
$firmante_req->setId_documento_doc($id_documento);
$firmante_req->setCedula_firmante($firmante[$i]);
$firmante_req->setOrden_firmante($i);
$firmante_req->salvar();
}
$destinatario_req = new Destinatario();
for ($k = 0; $k < count($valdestinatario); $k++) {
$destinatario[$k] = $valdestinatario[$i];
$destinatario_req->setCedula_destinatario($destinatario[$i]);
$destinatario_req->setId_documento_dest($id_documento);
$destinatario_req->salvar();
}