Subir archivo .txt para actualizar base de datos MySQL con PHP
La idea es actualizar nuestra base de datos con un Excel con el que estemos trabajando. El proceso es copiar las celdas (CTRL+C) que deseemos actualizar, y pegar el resultado en un archivo de texto (.txt), de modo que aparecerán en él los datos separados por tabulaciones (TAB).
La primera página tendrá un código parecido a ésto, y servirá para permitir al usuario subir ese archivo .txt:
<script language="JavaScript"> function validarDatos() { var frm = document.formulario; var err = ""; if (!(frm.fileMuestrario.value)) { err= err + "Por favor, indique un archivo para subir."; } if (err=="") { return true; } else { alert(err); return false; } } function enviar() { var frm = document.formulario; if (validarDatos()) { var mensaje = ""; mensaje = "Se va a actualizar la valoración de las empresas conforme a los datos del fichero especificado. ¿Confirma la operación?"; if (confirm(mensaje)) { frm.submit(); } } } </script> <form name="formulario" method="post" action="paso2.php" enctype="multipart/form-data"> Especifique la ruta donde se encuentra el fichero con los valores a actualizar <input type="file" name="fileMuestrario" size="55" class="campotexto"> <a href="#" onClick="enviar(); return false;">ENVIAR</a> </form>
La segunda página "desmenuza" este archivo y actualiza los valores en nuestra base de datos. Por supuesto, las columnas del archivo de texto deben corresponderse con las columnas de nuestra tabla, para no hacer un desbarajuste con los datos. La primera sería la [0], la segunda es [1], etc.
NOTA: El código utiliza db_query para las consultas a la base de datos porque este código lo hice para Drupal. Sin embargo, puede ser usado en cualquier parte, sólo con sustituir db_query con mysql_connect() y mysql_query.
<?php $registroResultados = ""; $subidaFichero = true; $archivo_temp = $_FILES['fileMuestrario']['tmp_name']; $archivo = $_FILES['fileMuestrario']['name']; if ($archivo != '') { $subidaFichero = false; } else { $subidaFichero = false; } } $row = 1; $ficheroMuestras = ficheroBackupRUTA; $table = 'nombre_tabla'; // Se puede truncar (borrar) la tabla previo a actualizar, o no: db_query("TRUNCATE TABLE {%s}", $table); //OPCIONAL print " <strong>Actualización exitosa. Estos son los valores actualizados.</strong> <table> <tr> <td>sector1_id</td> <td>sector2_id</td> <td>parametro1</td> <td>parametro2</td> <td>parametro3</td> <td>parametro4</td> </tr> "; $sql = "INSERT INTO nombre_tabla (campo1, campo2, campo3, campo4) VALUES (".$parametro1.", ".$parametro2.", ".$parametro3.", ".$parametro4.")"; db_query($sql); print " <tr> <td>".$parametro1."</td> <td>".$parametro2."</td> <td>".$parametro3."</td> <td>".$parametro4."</td> </tr> "; } print "</table> "; ?>


