Cargue un archivo pdf en la base de datos MySQL para múltiples registros usando PHP

Cargaremos varios registros en la base de datos y mostraremos todos los registros de la base de datos en la misma página. 

En este artículo, veremos cómo podemos cargar archivos PDF a una base de datos MySQL usando PHP

Enfoque: asegúrese de tener XAMPP o WAMP instalado en su máquina. En este tutorial, utilizaremos el servidor WAMP.

Creación de base de datos y tabla:

Primero, crearemos una base de datos llamada ‘ geeksforgeeks’ . Puede usar su base de datos existente o crear una nueva. Cree una tabla llamada ‘ pdf_data ‘ con 3 columnas para almacenar los datos. Consulte la siguiente captura de pantalla para ver la estructura de la tabla.

estructura de la mesa

Copie y pegue el siguiente código en el panel SQL de su PHPMyAdmin .

CREATE TABLE IF NOT EXISTS `pdf_data` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) NOT NULL,
  `filename` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Usaremos Bootstrap para usar el sistema de cuadrícula sensible de Bootstrap. A continuación se muestra el código para incluir el enlace CDN de Bootstrap en la sección principal del código HTML.

<enlace rel=”hoja de estilo” href=”https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css”>

  • dbcon.php: Este código demuestra cómo conectar nuestra aplicación a la base de datos.

PHP

<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $database = 'geeksforgeeks';
 
    $con = mysqli_connect($host, $user, $password, $database);
 
    if (!$con){
        ?>
            <script>alert("Connection Unsuccessful!!!");</script>
        <?php
    }
?>

Creación de carpetas y archivos:

Ahora crearemos una carpeta llamada » pdf «. Los archivos cargados por el cliente en el servidor se almacenarán en esta carpeta. Crea index.php y style.css . Mantenga la carpeta principal de su proyecto (por ejemplo, GeeksForGeeks) en la carpeta » C://wamp64/www/ «, si está usando WAMP o » C://xampp/htdocs/ » si está usando el servidor XAMPP, respectivamente. . La estructura de carpetas debería verse como a continuación:

estructura de carpetas

Creación de formulario: con el formulario HTML, estamos recopilando los datos del usuario al permitir que se cargue el archivo adjunto .pdf.

Formulario HTML

Fragmento de código HTML: a continuación se muestra el código fuente HTML para el formulario HTML . En la etiqueta HTML <form> , estamos usando » enctype=’multipart/form-data «, que es un tipo de codificación que permite enviar archivos a través de un método POST . Sin esta codificación, los archivos no se pueden enviar a través del método POST. Debemos usar este enctype si desea permitir que los usuarios carguen un archivo a través de un formulario.

HTML

<form method="post" enctype="multipart/form-data">
    <div class="form-input py-2">
        <div class="form-group">
          <input type="text" class="form-control" name="name"
                 placeholder="Enter your name" required>
        </div>                                 
        <div class="form-group">
          <input type="file" name="pdf_file"
                 class="form-control" accept=".pdf"
                 title="Upload PDF"/>
        </div>
        <div class="form-group">
          <input type="submit" class="btnRegister"
                 name="submit" value="Submit">
        </div>
   </div>
</form>

Subir archivos PDF: Ahora veremos cómo podemos subir archivos PDF a la base de datos. En el siguiente código, el primer bloque verifica que se haya hecho clic en el botón ‘enviar’ del formulario y verifica que el campo ‘pdf_file’ tiene un archivo adjunto usando la función PHP isset() .

$_FILES es una array global asociativa bidimensional de elementos que se cargan a través del método HTTP POST . La función move_uploaded_file() se utiliza para cargar el archivo pdf en el servidor. Estamos pasando 2 valores, el nombre del archivo temporal y la carpeta donde se almacenará el archivo. Los archivos se almacenarán en la carpeta «GeeksForGeeks/pdf/» que creamos anteriormente.

PHP

<?php
    if (isset($_POST['submit'])) {
 
        $name = $_POST['name'];
 
        if (isset($_FILES['pdf_file']['name']))
        {
          $file_name = $_FILES['pdf_file']['name'];
          $file_tmp = $_FILES['pdf_file']['tmp_name'];
 
          move_uploaded_file($file_tmp,"./pdf/".$file_name);
 
          $insertquery =
          "INSERT INTO pdf_data(username,filename) VALUES('$name','$file_name')";
          $iquery = mysqli_query($con, $insertquery);
        }
        else
        {
           ?>
            <div class=
            "alert alert-danger alert-dismissible
            fade show text-center">
              <a class="close" data-dismiss="alert"
                 aria-label="close">×</a>
              <strong>Failed!</strong>
                  File must be uploaded in PDF format!
            </div>
          <?php
        }
    }
?>

Crear una tabla HTML y mostrar registros:

Obtendremos los registros de la base de datos y los mostraremos en la tabla HTML .

mostrar registros de la base de datos

Fragmento de código HTML: el código fuente HTML para la tabla HTML anterior es el siguiente.

HTML

<div class="card-body">
    <div class="table-responsive">
        <table>
            <thead>
                <th>ID</th>
                <th>UserName</th>
                <th>FileName</th>
            </thead>
            <tbody>
                <?php
                    $selectQuery = "select * from pdf_data";
                    $squery = mysqli_query($con, $selectQuery);
                     
                    while (($result = mysqli_fetch_assoc($squery))) {
                ?>
                <tr>
                  <td><?php echo $result['id']; ?></td>
                  <td><?php echo $result['username']; ?></td>
                  <td><?php echo $result['filename']; ?></td>
                </tr>
                <?php
                    }
                ?>
            </tbody>
        </table>               
    </div>
</div>

código PHP:

Acercarse:

Primero, seleccionamos todas las columnas de la tabla pdf_data y luego ejecutamos la consulta en $squery .

$selectQuery = "select * from pdf_data"; 
$squery = mysqli_query($con, $selectQuery);

A continuación, usaremos el ciclo while para obtener todas las filas de la tabla y almacenar los datos en $resultado .

while (($result = mysqli_fetch_assoc($squery)))
{
    ...
}

Los datos obtenidos ahora se mostrarán por columnas en la tabla HTML con la ayuda de <?php echo $result[‘id’]; ?> donde ‘ id ‘ es la primera columna de nuestra tabla ‘ pdf_data ‘. Del mismo modo, podemos obtener los datos de las columnas respectivas de la tabla.

<td> <?php echo $result['id']; ?> </td>
<td> <?php echo $result['username']; ?> </td>
<td> <?php echo $result['filename']; ?> </td>

Código completo: el código final para cargar el archivo PDF en la base de datos MySQL y mostrar todos los registros de la tabla usando PHP es el siguiente. Este código completo incluye:

  • índice.php
  • estilo.css
  • dbcon.php

PHP

<?php include 'dbcon.php'; ?>
 
<!DOCTYPE html>
<html lang="en">
<head> 
    <link rel="stylesheet" href=
"https://cdn.jsdelivr.net/npm/bootstrap@4.6.1/dist/css/bootstrap.min.css">
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <div class="container" style="margin-top:30px">
        <div class="row">
            <div class="col-lg-6 col-md-6 col-12">
              <strong>Fill UserName and Upload PDF</strong>
                <form method="post" enctype="multipart/form-data">
                    <?php
                        // If submit button is clicked
                        if (isset($_POST['submit']))
                        {
                          // get name from the form when submitted
                          $name = $_POST['name'];                    
 
                          if (isset($_FILES['pdf_file']['name']))
                          {  
                          // If the ‘pdf_file’ field has an attachment
                            $file_name = $_FILES['pdf_file']['name'];
                            $file_tmp = $_FILES['pdf_file']['tmp_name'];
                             
                            // Move the uploaded pdf file into the pdf folder
                            move_uploaded_file($file_tmp,"./pdf/".$file_name);
                            // Insert the submitted data from the form into the table
                            $insertquery =
                            "INSERT INTO pdf_data(username,filename) VALUES('$name','$file_name')";
                             
                            // Execute insert query
                            $iquery = mysqli_query($con, $insertquery);     
 
                                if ($iquery)
                               {                            
                    ?>                                             
                                  <div class=
                                "alert alert-success alert-dismissible fade show text-center">
                                    <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                    </a>
                                    <strong>Success!</strong> Data submitted successfully.
                                  </div>
                                <?php
                                }
                                else
                                {
                                ?>
                                  <div class=
                                "alert alert-danger alert-dismissible fade show text-center">
                                    <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                    </a>
                                    <strong>Failed!</strong> Try Again!
                                  </div>
                                <?php
                                }
                            }
                            else
                            {
                              ?>
                                <div class=
                                "alert alert-danger alert-dismissible fade show text-center">
                                  <a class="close" data-dismiss="alert" aria-label="close">
                                      ×
                                  </a>
                                  <strong>Failed!</strong> File must be uploaded in PDF format!
                                </div>
                              <?php
                            }// end if
                        }// end if
                    ?>
                     
                    <div class="form-input py-2">
                        <div class="form-group">
                            <input type="text" class="form-control"
                                   placeholder="Enter your name" name="name">
                        </div>                                 
                        <div class="form-group">
                            <input type="file" name="pdf_file"
                                   class="form-control" accept=".pdf" required/>
                        </div>
                        <div class="form-group">
                            <input type="submit"
                                  class="btnRegister" name="submit" value="Submit">
                        </div>
                    </div>
                </form>
            </div>           
             
            <div class="col-lg-6 col-md-6 col-12">
              <div class="card">
                <div class="card-header text-center">
                  <h4>Records from Database</h4>
                </div>
                <div class="card-body">
                   <div class="table-responsive">
                      <table>
                        <thead>
                            <th>ID</th>
                            <th>UserName</th>
                            <th>FileName</th>
                        </thead>
                        <tbody>
                          <?php
                              $selectQuery = "select * from pdf_data";
                              $squery = mysqli_query($con, $selectQuery);
 
                              while (($result = mysqli_fetch_assoc($squery))) {
                          ?>
                          <tr>
                            <td><?php echo $result['id']; ?></td>
                            <td><?php echo $result['username']; ?></td>
                            <td><?php echo $result['filename']; ?></td>
                          </tr>
                          <?php
                               }
                          ?>
                        </tbody>
                      </table>               
                    </div>
                </div>
            </div>
        </div>
    </div>
</body>
</html>

CSS

/* style.css */
 
*{
    margin: 0; padding: 0; box-sizing: border-box;
}
body{
    justify-content: center;
    align-items: center;
}
 
/* Form */
 
.form-input{
    max-width: 400px;
}
 
/* Styling HTML Table */
 
table{
    border-collapse: collapse;
    background-color: #fff;
    border-radius: 10px;
    margin: auto;
}
th,td{
    border: 1px solid #dfdede;
    padding: 8px 25px;
    justify-content: center;
    text-align: center;
    align-items: center;
    color: grey;
}
th{
    text-transform: uppercase;
    font-weight: 900;
}
td{ font-size: 1.2rem; }

PHP

// dbcon.php
 
<?php
    $host = 'localhost';
    $user = 'root';
    $password = '';
    $database = 'gfg';
 
    $con = mysqli_connect($host, $user, $password, $database);
 
    if (!$con){
        ?>
            <script>alert("Connection Unsuccessful!!!");</script>
        <?php
    }
?>

Salida: finalmente, debería poder cargar los archivos pdf y mostrar los registros de la base de datos en la misma página.

cargando pdf y mostrando

En el próximo artículo, veremos cómo podemos mostrar archivos PDF desde la base de datos MySQL usando PHP. El archivo PDF solo se mostrará al hacer clic en un registro en particular.

Publicación traducida automáticamente

Artículo escrito por sanjyotpanure y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *