Lenguaje PHPMYSQL La base de datos

Exportar archivos Excel con PHP desde registros seleccionados

Exportar archivos Excel con PHP desde registros seleccionados. La personalización es un aspecto importante en cualquier sistema web y justamente aquí estamos tratando de exportar un fichero Excel desde PHP con MySQL. Sin embargo, en este artículo nos centraremos en la  exportación de registros elegidos por el usuario mediante el uso de input tipo RADIO.

Exportar archivos Excel con PHP desde registros seleccionados

Hoy en día el uso de los sistemas web esta creciendo muy rápido, muchas empresas lo solicitan para implementarlo en sus empresas, veamos algunos criterios de su uso.

¿Porque usar una plataforma web?

  • Flexibilidad de instalación.
  • Podemos visualizarlo desde cualquier dispositivo que tenga acceso a internet
  • Su reducido costo de implementación.
  • Facilidad de edición del sistema web.
  • Recursos y componentes que usaremos para este artículo

Los recursos son:

  1. Librería Bootstrap
  2. Ficheros PHP
  3. Base de datos MySQLi

Contenido del paquete.

  • php_phpexcel.sql
  • db.php
  • FormContacto.php
  • GenerarExcel.php
  • GenerarExcelEspecifico.php
  • ListaContactos.php
  • MensajeError.php

La Base de datos

CREATE TABLE `contactos` (
  `id` int(11) NOT NULL,
  `nombres` varchar(250) NOT NULL,
  `email` varchar(250) DEFAULT NULL,
  `asunto` varchar(220) DEFAULT NULL,
  `mensajes` text,
  `fcreacion` datetime DEFAULT NULL,
  `fmodificacion` datetime DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=COMPACT;

Fichero ListaContacto.php

<form method="POST" action="GenerarExcelEspecifico.php">
  <div class="page-header">
    <h1>Lista de Contactos</h1>
  </div>
  <div class="dropdown"> <span class="glyphicon glyphicon-cog btn-lg text-success" id="dropdownMenu1" data-toggle="dropdown" aria-haspopup="true" aria-expanded="true"></span>
    </button>
    <ul class="dropdown-menu" aria-labelledby="dropdownMenu1">
      <li><a href="FormContacto.php">Registrar</a></li>
      <li><a href="GenerarExcel.php">Generar Excel</a></li>
      <li><a href="#">Generar PDF</a></li>
    </ul>
  </div>
  <div class="row espaco">
    <div class="pull-right"> <a href="FormContacto.php">
      <button type='button' class='btn btn-sm btn-success'>Registrar</button>
      </a> <a href="GenerarExcel.php">
      <button type='button' class='btn btn-sm btn-success'>Generar Excel</button>
      </a>
      <input type="submit" value="Excel Especifico" class='btn btn-sm btn-success'>
    </div>
  </div>
  <div class="row">
    <div class="col-md-12">
      <table class="table">
        <thead>
          <tr>
            <th class="text-center">PDF</th>
            <th class="text-center">Id</th>
            <th class="text-center">Nombres</th>
            <th class="text-center">E-mail</th>
            <th class="text-center">Asunto</th>
            <th class="text-center">Ingresado</th>
            <th class="text-center">Acciones</th>
          </tr>
        </thead>
        <tbody>
          <?php while($row_contactos = mysqli_fetch_assoc($resultado_contactos)){?>
          <tr>
            <?php $id = $row_contactos["id"]; ?>
            <td class="text-center"><?php echo "<input type='radio' name='msg_contacto[$id]' value='1'" ?></td>
            <td class="text-center"><?php echo $row_contactos["id"]; ?></td>
            <td class="text-center"><?php echo $row_contactos["nombres"]; ?></td>
            <td class="text-center"><?php echo $row_contactos["email"]; ?></td>
            <td class="text-center"><?php echo $row_contactos["asunto"]; ?></td>
            <td class="text-center"><?php echo date('d/m/Y H:i:s',strtotime($row_contactos["fcreacion"])); ?></td>
            <td class="text-center"><a href="#" class="btn btn-default"> <span class="glyphicon glyphicon-eye-open text-primary" aria-hidden="true"></span> </a> <a href="#" class="btn btn-default"> <span class="glyphicon glyphicon-pencil text-warning" aria-hidden="true"></span> </a> <a href="#" class="btn btn-default"> <span class="glyphicon glyphicon-remove text-danger" aria-hidden="true"></span> </a></td>
          </tr>
          <?php } ?>
        </tbody>
      </table>
    </div>
  </div>
</form>

GenerarExcelEspecifico.php

Para lograr exportar solo elementos seleccionados en una lista tendremos que hacer consultas dentro de en ciclo en este caso usaremos el ciclo FOREACH para poder obtener registros personalizados en nuestro Excel.

 foreach($_POST['msg_contacto'] as $id => $msg_contato){
				//Selecionar todos los items de la tabla 
				$result_msg_contatos = "SELECT * FROM contactos WHERE id = $id LIMIT 1";
				$resultado_msg_contatos = mysqli_query($conectar , $result_msg_contatos);
				
				while($row_msg_contatos = mysqli_fetch_assoc($resultado_msg_contatos)){
					$html .= '
				<tr>';
  $html .= '<td>'.$row_msg_contatos["id"].'</td> ';
  $html .= '<td>'.$row_msg_contatos["nombres"].'</td>';
  $html .= '<td>'.$row_msg_contatos["email"].'</td>';
  $html .= '<td>'.$row_msg_contatos["asunto"].'</td>';
  $data = date('d/m/Y H:i:s',strtotime($row_msg_contatos["fcreacion"]));
  $html .= '<td>'.$data.'</td>';
  $html .= '</tr>';
					;
				}
			}
Exportar archivos Excel con PHP desde registros seleccionados
Exportar archivos Excel con PHP desde registros seleccionados

CONCLUSIÓN

Sabemos que puede exportar contenidos de una base de datos a Excel usando PHP como lenguaje de programación. Sin embargo, trabaja en base de una consulta que bien pueden ser enviados desde un formulario.

En algunos casos esas consultas no satisfacen la necesitad de los usuarios de generar un archivo Excel con registros personalizados.

Espero que este ejemplo les sirva para sus proyectos web.

DESCARGA

Descargar Código Fuente

Nestor Tapia

Bloggero, amante de la programación PHP, innovador y me fascina compartir información. Desde que conocí el entorno informatico y el internet me llamó la atención la programación, Por tal motivo he creado mi blog BAULPHP.COM para compartir mis experiencias con todos ustedes. ¡Gracias por leerme!.

Un comentario

Deja una respuesta

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

Botón volver arriba