> Faqs > Cargar varios archivos en una base de datos PHP

Cargar varios archivos en una base de datos PHP

Buen dia, yo tengo este formulario con 6 archivos distintos

<div class="form-group">
<p>Por favor suba todos los archivos correspondientes en formato PDF ó XLSX.</p>
<label><b>d)</b> Solicitud de Adhsesión al Programa de Crédito Fiscal para Inversiones</label>
<input type="file" class="form-control" id="file1" name="file1" accept=".pdf,.xlsx" required/>
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf1" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>
<p>Formato del documento a adjuntar: <a href="ficheros/1- Nota 1- Solicitud de Adhesión 2023(1).docx" target="_blank">Aquí</a></p>

<label><b>e)</b> Formulario Composición Societaria y Empresas Vinculadas</label>
<input type="file" class="form-control" id="file2" name="file2" accept=".pdf,.xlsx" required />
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf2" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>
<p>Formato del documento a adjuntar: <a href="ficheros/2- DDJJ Composición Societaria y Empresas Vinculadas 2023.xlsx" target="_blank">Aquí</a></p>

<label><b>f)</b> Constancia de inscripción en AFIP</label>
<input type="file" class="form-control" id="file3" name="file3" accept=".pdf,.xlsx" required />
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf3" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>
<br>
<label><b>g)</b> Constancia de inscripción en la Dirección Provincial de Rentas</label>
<input type="file" class="form-control" id="file4" name="file4" accept=".pdf,.xlsx" required />
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf4" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>
<br>
<label><b>h)</b> Contrato Social, modificatorias, acta distribución de cargos y nómina de socios</label>
<input type="file" class="form-control" id="file5" name="file5" accept=".pdf,.xlsx" required />
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf5" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>
<br>
<label><b>i)</b> Certificado PyME vigente</label>
<input type="file" class="form-control" id="file6" name="file6" accept=".pdf,.xlsx" required/>
<div class="documento_actual">
    <label>Documento actual:</label>
    <a href="" id="ref_pdf6" target="_blank"><i class="fa fa-2x fa-file" style="color:#19407C;"></i></a>
</div>

y tengo este codigo en PHP para hacer el UPDATE o INSERT en la base de datos

if (session_status() !== PHP_SESSION_ACTIVE) session_start();
require_once('../config.php');

extract($_POST); 

$data = array(); // Inicializar el arreglo $data

if (($cuit_registro != "") && ($presenta_registro != "")) {
    $num_archivos = 6; 
    $archivos = array(); 

    if (isset($_FILES["file"]) && ($_FILES["file"]['name'] != "")) {
        $popo = "con archivo!!";
        $resultado = "";

        if (($_FILES["file"]["type"] == "application/zip")
            || ($_FILES["file"]["type"] == "application/x-zip-compressed")
            || ($_FILES["file"]["type"] == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet")
            || ($_FILES["file"]["type"] == "application/pdf")
        ) {
            $dir = '../uploads/';
            if (!file_exists($dir)) {
                mkdir($dir, 0777, true);
            }
            $file_tmp_name = $_FILES['file']['tmp_name'];
            $file_name = $_FILES['file']['name'];
            $ext = pathinfo($file_name, PATHINFO_EXTENSION);
            $file_name = substr($file_name, 0, strlen($file_name) - 4);

            $permitted_chars = '0123456789abcdefghijklmnopqrstuvwxyz';

            for ($i = 1; $i <= $num_archivos; $i++) {
                $nuevo_nombre = $cuit_registro . "-" . substr(str_shuffle($permitted_chars), 0, 20) . "." . $ext;
                $archivos[] = $nuevo_nombre;
            }

            if (!move_uploaded_file($file_tmp_name, $dir . $archivos[0])) {
                $resultado = "Error en move_uploaded_file";
            } else {
                $resultado = "ok";
            }
        } else {
            $resultado = "error tipo de archivo";
        }
    } else {
        $resultado = "ok";
    }

    if ($resultado == "ok") {
        //-- Datos del formulario --
        $query = $dbConn->query("SELECT count(*) as canti from solicitudes where idPre=" . $presenta_registro);

        if ($query->num_rows > 0) {
            $datos = $query->fetch_assoc();
            $cant = $datos['canti'];
        } else {
            $cant = 0;
        }

        if ($cant > 0) {
            $consulta = "UPDATE solicitudes SET solicitudAdhesion='" . $archivos[1] . "', formCSyEV='" . $archivos[2] . "', consAfip='" . $archivos[3] . "', consRentas='" . $archivos[4] . "', contratoSocial='" . $archivos[5] . "', sectorCP='" . $txtCat . "', segmentoCP='" . $txtTam . "', fechaCP='" . $txtVigenciaPyme . "', certificadoPyme='" . $archivos[6] . "'  WHERE idPre=" . $presenta_registro;
        } else {
            $consulta = "INSERT INTO solicitudes (idPre, solicitudAdhesion, formCSyEV, consAfip, consRentas, contratoSocial, sectorCP, segmentoCP, fechaCP, certificadoPyme) ";
            $consulta .= " VALUES ('" . $presenta_registro . "', '" . $archivos[1] . "', '" . $archivos[2] . "', '" . $archivos[3] . "', '" . $archivos[4] . "', '" . $archivos[5] . "', '" . $txtCat . "', '" . $txtTam . "', '" . $txtVigenciaPyme . "', '" . $archivos[6] . "')";
        }

        if ($dbConn->query($consulta) === TRUE) {
            $data['status'] = "ok";
            $data['result'] = "Sentencia: " . $consulta;
        } else {
            $data['status'] = "error";
            $data['result'] = "Sentencia: " . $consulta;
        }
    } else {
        $data['status'] = "error";
        $data['result'] = "File: " . $resultado;
    }
} else {
    $data['status'] = "error";
    $data['result'] = 'datos incompletos';
}
echo json_encode($data, JSON_UNESCAPED_UNICODE);

mi pregunta es: como puedo mejorar el codigo para que me cargue los archivos? ya que este no me esta funcionando

Respuestas

Primero verifica que el formulario esté correctamente creado. No has puesto la etiqueta <form> por lo que no se puede saber.

Es importante que tenga el atributo enctype="multipart/form-data":

<form action="página-de-destino.php" method="post" enctype="multipart/form-data">

Luego, en tu código PHP no se ve el momento en el que accedes a los archivos con su índice correcto. Es decir, haces un bucle for con una variable $i para recorrer me figuro los nombres de tus archivos file1, file2, pero nunca llegas a usar esa variable para indexar correctamente los nombres de los campos file.

Lucas
139 1 8 5