Breaking

Post Top Ad

Your Ad Spot

domingo, 10 de marzo de 2019

Importar y exportar archivos CSV usando PHP y MySQL


La función de importación y exportación es muy útil para la sección de gestión de datos. La funcionalidad de importación permite al usuario cargar e insertar múltiples datos en la base de datos. Con la función Importar , los datos masivos se pueden insertar en la base de datos con un solo clic. La funcionalidad de exportación le permite al usuario descargar la lista de datos de la tabla y guardarla en un archivo para usar sin conexión. Usando la función Exportar , se pueden descargar varios registros en un formato de archivo.
Principalmente, el formato de archivo CSV se utiliza para importar y exportar datos en la aplicación web. El archivo CSV (valores separados por comas) almacena los datos en formato de texto plano y ayuda a mover los datos entre programas. La funcionalidad de importación y exportación se puede implementar fácilmente con un archivo CSV usando PHP y MySQL. Importar datos de archivos CSV en la base de datos / Exportar datos a archivos CSV , ambos pueden integrarse con PHP y MySQL. En este tutorial, le mostraremos cómo importar y exportar datos de archivos CSV en una base de datos utilizando PHP y MySQL.
En el ejemplo de secuencia de comandos de importación y exportación , se implementará la siguiente funcionalidad.
  • Obtenga los datos del miembro de la base de datos y que se enumeran en la página web.
  • Importar datos de archivos CSV en la base de datos MySQL usando PHP.
  • Exportar datos a CSV utilizando PHP y MySQL.

Crear tabla de base de datos

Para almacenar los datos del miembro, es necesario crear una tabla en la base de datos. El siguiente SQL crea una memberstabla con algunos campos básicos en la base de datos MySQL.
CREATE  TABLE  `miembros` (
  ` id`  int ( 11 ) NOT  NULL AUTO_INCREMENT,
  `name`  varchar ( 50 ) COLLATE utf8_unicode_ci NOT  NULL ,
  ` email`  varchar ( 50 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `phone  varchar ( 15 ) COLLATE utf8_unicode_ci NOT  NULL ,
  `created` datetime NOT  NULL ,
 `modified` datetime NOT  NULL ,
  ` status` enum ( 'Active' , 'Inactive' ) COLLATE utf8_unicode_ci NOT  NULL  DEFAULT  'Active' ,LLAVE 
 PRIMARIA ( `id` )
) MOTOR = InnoDB  DEFAULT  CHARSET = utf8 COLLATE = utf8_unicode_ci;

Formato de archivo CSV

Según la estructura de la tabla de la base de datos, el archivo CSV debe tener estos campos: Nombre, Correo electrónico, Teléfono y Estado. Para importar datos de archivos CSV en la base de datos, el formato del archivo CSV será similar a la siguiente pantalla.
php-import-data-mysql-csv-file-format-codexworld
Cuando los datos se exportan a un archivo CSV , el formato descargado se verá como la siguiente pantalla.
php-export-data-to-csv-file-format-codexworld

Configuración de la base de datos (dbConfig.php)

El dbConfig.phpse utiliza para conectar la base de datos. Especifique el host de la base de datos ( $dbHost), el nombre de usuario ( $dbUsername), la contraseña ( $dbPassword) y el nombre ( $dbName) según sus credenciales de la base de datos MySQL.
<? php
 // Configuración de la base de datos
 $ dbHost      "localhost" ;
$ dbUsername  "root" ;
$ dbPassword  "root" ;
$ dbName      "codexworld" ;

// Crear conexión de base de datos
 $ db  = new  mysqli ( $ dbHost $ dbUsername $ dbPassword $ dbName );

// Revisa la conexión
 si ( $ db -> connect_error ) {
    die ( "Falló la conexión:"  $ db -> connect_error );
}

Carga y descarga de archivos CSV (index.php)

Inicialmente, los datos del miembro se enumeran en la tabla HTML con la opción de importación y exportación.
  • Los datos de los miembros existentes se obtienen de la base de datos y se enumeran en un formato tabular.
  • Se coloca un botón Importar en la parte superior de la lista.
    • Al hacer clic en el botón Importar, aparece un formulario de carga de archivos CSV.
    • En el envío, el formulario se envía al importData.phparchivo para importar los datos del archivo CSV a la base de datos.
    • formToggle () : esta función de JavaScript se utiliza para Mostrar / Ocultar el formulario de carga CSV y se activa cuando se hace clic en el botón Importar.
  • Si la solicitud de importación del archivo CSV ya se envió, el mensaje de estado se recupera de la URL y el estado de la importación se muestra en la página web.
  • Se coloca un botón Exportar en la parte superior de la lista.
    • El enlace Exportar navega al exportData.phparchivo para exportar datos de tabla a un archivo CSV.
<? php
 // Cargar el archivo de configuración de la base de datos
 include_once  'dbConfig.php' ;

// Obtener mensaje de estado
 si (! Vacío ( $ _GET [ 'status' ])) {
    cambiar ( $ _GET [ 'status' ]) {
        caso  'succ' :
             $ statusType  'alert-success' ;
            $ statusMsg  'Los datos de los miembros se han importado correctamente.' ;
            descanso;
        caso  'err' :
             $ statusType  'alert-danger' ;
            $ statusMsg  'Ocurrió algún problema, por favor intente nuevamente.' ;
            descanso;
        caso  'invalid_file' :
             $ statusType  'alert-danger' ;
            $ statusMsg  'Por favor, cargue un archivo CSV válido.' ;
            descanso;
        defecto:
            $ statusType  '' ;
            $ statusMsg  '' ;
    }
}
?>

<! - Mostrar mensaje de estado -> 
<? Php  if (! Vacío ( $ statusMsg )) {  ?> 
< Div  class = "col-xs-12" > 
    < div  class = "alert <? Php  echo  $ statusType ?> " > <? php  echo  $ statusMsg ?> </ div > 
</ div > 
<? php  ?>

< div  class = "row" > 
    <! - Enlace de importación y exportación -> 
    < div  class = "col-md-12 head" > 
        < div  class = "float-right" > 
            < a  href = "javascript: void (0); "  class = "btn btn-success"  onclick = "formToggle ('importFrm');" > < i  class = "plus" > </ i > Importar </ a >
             "exportData.php"  class = "btn btn-primary" > < i  class = "exp" > </ i > Exportar </ a > 
        </ div > 
    </ div > 
    <! - Formulario de carga de archivo CSV -> 
    < div  class = "col-md-12"  id = "importFrm"  style = "display: none;" > 
        < form  action = "importData.php"  method = " "multipart / form-data" > 
            < input  type = "file"  name = "file" /> 
            < input  type = "submit"  class = "btn btn-primary"  name = "importSubmit"  value = "IMPORT" > 
        </ forma > 
    </ div >

    <! - Tabla de la lista de datos ->  
    < table  class = "table-striped table- 
        bordered " > < thead  class = "thead-dark" > 
            < tr > 
                < th > #ID </ th > 
                < th > Nombre </ th > 
                < th > Correo electrónico </ th > 
                < th > Teléfono </ th > 
                < th > Estado </ th > 
            </tr > 
        </ thead > 
        < tbody > 
        <? php
         // Obtener filas de miembros
         $ resultado  $ db -> consulta ( "SELECT * FROM miembros ORDER BY id DESC" );
        if ( $ result -> num_rows  0 ) {
            while ( $ row  $ result -> fetch_assoc ()) {
         ?> 
            < tr > 
                < td > <? php  echo  $ row [ 'id' ]; ?> </ td > 
                < td > <? php  echo  $ row [ 'name' ]; ?> </ td > 
                < td > <? php  echo  $ row [ 'email' ]; ?> </ td >
                > <? php  echo  $ row [ 'phone' ]; ?> </ td > 
                < td > <? php  echo  $ row [ 'status' ]; ?> </ td > 
            </ tr > 
        <? php  }} else else ? 
            ?> < tr > < td  colspan = "5" > No se encontraron miembros ... </ td > </ tr > 
        <? php  ?> 
        <
    tabla > 
</ div >

<! - Mostrar / ocultar formulario de carga CSV -> 
< script > 
función  formToggle ( ID ) {
     var element = document .getElementById (ID);
    if (element.style.display === "none" ) {
        element.style.display = "bloque" ;
    } else {
        element.style.display = "none" ;
    }
} 
</ script >
Este código de ejemplo utiliza la biblioteca Bootstrap 4 para diseñar la tabla HTML, el formulario y los enlaces. Puede omitirlo para incluirlo si no desea utilizar la estructura Bootstrap. De lo contrario, incluya el archivo de la biblioteca Bootstrap y el archivo personalizado de la hoja de estilo (si corresponde).
<! - Bootstrap library -> 
< link  rel = "hoja de estilo"  href = "asset / bootstrap / bootstrap.min.css" >

<! - Archivo de hoja de estilo -> 
< link  rel = "hoja de estilo"  href = "asset / css / style.css" >

Importar datos CSV a la base de datos (importData.php)

El importData.phparchivo maneja el proceso de carga de archivos CSV e importación de datos con PHP y MySQL.
  • Valide el archivo enviado si un archivo CSV válido.
  • Verifique el estado de carga del archivo CSV usando la función PHP is_uploaded_file () .
  • Abra el archivo CSV usando la función fopen () de PHP .
  • Analice los datos del archivo CSV utilizando la función fgetcsv () de PHP .
  • Inserte o actualice los datos en la base de datos según el correo electrónico del miembro.
<? php
 // Cargar el archivo de configuración de la base de datos
 include_once  'dbConfig.php' ;

if (isset ( $ _POST [ 'importSubmit' ])) {
    
    // Tipos de mimos permitidos
     $ csvMimes  = array ( 'text / x-coma-separados-valores' 'texto / coma-separados-valores' 'application / octet-stream' 'application / vnd.ms-excel' 'application / x-csv' 'text / x-csv' 'text / csv' 'application / csv' 'application / excel' 'application / vnd.msexcel' 'text / plain' );
    
    // Valide si el archivo seleccionado es un archivo CSV
     if (! Empty ( $ _FILES [ 'file' ] [ 'name' ]) &&  in_array ( $ _FILES [ 'file' ] [ 'type' ],  $ csvMimes )) {
        
        // Si el archivo se carga
         si ( is_uploaded_file ( $ _FILES [ 'file' ] [ 'tmp_name' ])) {
            
            // Abrir el archivo CSV cargado con modo de solo lectura
             $ csvFile  fopen ( $ _FILES [ 'file' ] [ 'tmp_name' ],  'r' );
            
            // Omita la primera línea
             fgetcsv ( $ csvFile );
            
            // Analizar los datos del archivo CSV línea por línea
             mientras que (( $ line  fgetcsv ( $ csvFile ))! ==  FALSE ) {
                 // Obtener datos de la fila
                 $ name    $ line [ 0 ];
                $ email   $ line [ 1 ];
                $ phone   $ line [ 2 ];
                $ status  $ line [ 3 ];
                
                // Compruebe si el miembro ya existe en la base de datos con el mismo correo electrónico
                 $ prevQuery  "SELECT id FROM FROM WHERE email = '" . $ linea [ 1 ]. "'" ;
                $ prevResult  $ db -> consulta ( $ prevQuery );
                
                if ( $ prevResult -> num_rows  0 ) {
                     // Actualizar datos de miembros en la base de datos
                     $ db -> query ( "UPDATE members SET name = '" . $ name . "', phone = '" . $ phone . "' , status = '" . $ status . "', modified = NOW () WHERE email = '" . $ email . "' " );
                }más{
                    // Insertar datos de miembros en la base de datos
                     $ db -> consulta ( "INSERT INTO miembros (nombre, correo electrónico, teléfono, creado, modificado, estado) VALORES ('" . $ Nombre . "', '" . $ Correo electrónico . "' , '" . $ phone . "', NOW (), NOW (), '" . $ status . "') " );
                }
            }
            
            // Cerrar archivo CSV abierto
             fclose ( $ csvFile );
            
            $ qstring  '? status = succ' ;
        }más{
            $ qstring  '? status = err' ;
        }
    }más{
        $ qstring  '? status = invalid_file' ;
    }
}

// Redirigir al encabezado de la página del listado
 ( "Ubicación: index.php" . $ Qstring );

Exportar datos a CSV (exportData.php)

El archivo exportData.php maneja el proceso de exportación de datos usando PHP y MySQL.
  • Obtener los registros de la base de datos.
  • Cree y abra un archivo con el modo de solo escritura utilizando la función fopen () de PHP .
  • Establezca columnas de encabezado, formatee como CSV y escríbalas en el archivo abierto usando la función PHP fputcsv () .
  • Obtenga datos de la base de datos, formatee como CSV y escríbalos en un archivo.
  • Forzar el navegador para descargar datos en formato CSV en un archivo.
<? php 
 // Cargar el archivo de configuración de la base de datos 
 include_once  'dbConfig.php' ;
 
$ filename  "members_"  fecha ( 'Ym-d' ). ".csv" ; 
$ delimitador  "," ;
 
// Crear un puntero a archivo 
 $ f  fopen ( 'php: // memory' 'w' );
 
// Establecer encabezados de columna 
 $ campos  = matriz ( 'ID' 'Nombre' 'Correo electrónico' 'Teléfono' 'Creado' 'Estado' ); 
fputcsv ( $ f $ fields $ delimitador );
 
// Obtener registros de la base de datos 
 $ resultado  $ db -> consulta ( "SELECT * FROM miembros ORDER BY id DESC" );
if ( $ result -> num_rows 0 ) { 
     // Genere  cada fila de los datos, formatee la línea como csv y escriba en el puntero del archivo 
     mientras ( $ row  $ result -> fetch_assoc ()) { 
         $ lineData  = array ( $ row [ 'id' ],  $ row [ 'name' ],  $ row [ 'email' ],  $ row [ 'phone' ],  $ row [ 'created' ],  $ row [ 'status' ]); 
        fputcsv ($ f $ lineData $ delimitador );
    } 
} 
 
// Retroceder al principio del archivo 
 fseek ( $ f 0 );
 
// Establecer encabezados para descargar el archivo en lugar del encabezado mostrado 
 ( 'Content-Type: text / csv' ); 
encabezado ( 'Contenido-Disposición: adjunto; nombre_archivo = "'  $ nombre_archivo  '";' );
 
// Muestra todos los datos restantes en un puntero de archivo 
 fpassthru ( $ f );
 
// Salir del archivo 
 exit ();
Exportar datos de tablas HTML a CSV usando JavaScript

Conclusión

Nuestro script de ejemplo le ayuda a agregar fácilmente la función de importación y exportación a la lista de datos utilizando PHP y MySQL. Para que la sección de administración de datos sea fácil de usar, la funcionalidad de exportación e importación es una excelente opción. Además, puede mejorar nuestro archivo CSV de importación y exportar datos a scripts CSV con PHP y MySQL según sus necesidades.

No hay comentarios.:

Publicar un comentario

Dejanos tu comentario para seguir mejorando!

Post Top Ad

Your Ad Spot

Páginas