Apr
29
2010
2

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:

  1. <script language="JavaScript">
  2. function validarDatos() {
  3. var frm = document.formulario;
  4. var err = "";
  5. if (!(frm.fileMuestrario.value)) {
  6. err= err + "Por favor, indique un archivo para subir.";
  7. }
  8. if (err=="") {
  9. return true;
  10. }
  11. else {
  12. alert(err);
  13. return false;
  14. }
  15. }
  16. function enviar() {
  17. var frm = document.formulario;
  18. if (validarDatos()) {
  19. var mensaje = "";
  20. mensaje = "Se va a actualizar la valoración de las empresas conforme a los datos del fichero especificado. ¿Confirma la operación?";
  21. if (confirm(mensaje)) {
  22. frm.submit();
  23. }
  24. }
  25. }
  26. </script>
  27. <form name="formulario" method="post" action="paso2.php" enctype="multipart/form-data">
  28.  
  29. Especifique la ruta donde se encuentra el fichero con los valores a actualizar
  30. <input type="file" name="fileMuestrario" size="55" class="campotexto">
  31. <a href="#" onClick="enviar(); return false;">ENVIAR</a>
  32. </form>
  33.  

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.

  1. <?php
  2.  
  3. $registroResultados = "";
  4.  
  5. $subidaFichero = true;
  6. $archivo_temp = $_FILES['fileMuestrario']['tmp_name'];
  7. $archivo = $_FILES['fileMuestrario']['name'];
  8. if ($archivo != '') {
  9. if (!copy($_FILES['fileMuestrario']['tmp_name'], ficheroBackupRUTA)) {
  10. $subidaFichero = false;
  11. }
  12. else {
  13. $subidaFichero = false;
  14. }
  15. }
  16.  
  17. $row = 1;
  18. $ficheroMuestras = ficheroBackupRUTA;
  19. $fSalida = fopen ($ficheroMuestras, "r");
  20.  
  21. $table = 'nombre_tabla';
  22. // Se puede truncar (borrar) la tabla previo a actualizar, o no:
  23. db_query("TRUNCATE TABLE {%s}", $table); //OPCIONAL
  24.  
  25.  
  26. <strong>Actualización exitosa. Estos son los valores actualizados.</strong>
  27. <table>
  28. <tr>
  29. <td>sector1_id</td>
  30. <td>sector2_id</td>
  31. <td>parametro1</td>
  32. <td>parametro2</td>
  33. <td>parametro3</td>
  34. <td>parametro4</td>
  35. </tr>
  36.  
  37. ";
  38.  
  39. while ($data = fgetcsv ($fSalida, 2000, " ")) {
  40. $parametro1 = str_replace(',', '.', $data[0]);
  41. $parametro2 = str_replace(',', '.', $data[1]);
  42. $parametro3 = str_replace(',', '.', $data[2]);
  43. $parametro4 = str_replace(',', '.', $data[3]);
  44.  
  45. $sql = "INSERT INTO nombre_tabla (campo1, campo2, campo3, campo4) VALUES (".$parametro1.", ".$parametro2.", ".$parametro3.", ".$parametro4.")";
  46. db_query($sql);
  47.  
  48. <tr>
  49. <td>".$parametro1."</td>
  50. <td>".$parametro2."</td>
  51. <td>".$parametro3."</td>
  52. <td>".$parametro4."</td>
  53. </tr>
  54.  
  55. ";
  56.  
  57. }
  58. print "</table>
  59.  
  60. ";
  61. fclose ($fSalida);
  62. ?>
No me interesaNo está malBienÚtilMuy bien, muy útil (No Ratings Yet)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Desarrollo Web,MySQL,PHP | Tags: , , , , , , , , , , , , , , , , , ,
Apr
26
2010
0

Snippet jQuery para mostrar u ocultar las descripciones de campos de un formulario en Drupal

Con este pequeño snippet de jQuery tipo "show/hide" podréis añadir efectos a las descripciones de los inputs de formularios creados en Drupal. Al entrar (focus) en el campo de texto, la descripción del mismo se despliega. Al salir (blur), vuelve a esconderse o replegarse.

Es interesante para no "manchar" los formularios con mucho texto explicativo entre los campos, ya que sólo aparece aquél donde el usuario se encuentra. Se debe usar con cuidado para no afectar la usabilidad, de modo que quizá requiera que juguéis un poco con él o lo hagáis más específico (por ejemplo, según el id del formulario, etc).

// Toggle description of forms when focus on input
$(document).ready(function(){
$padre = $('input.form-text').parent();
$padre.find('div.description').hide(200);
$('input.form-text').focus(function() {
$padre = $(this).parent();
$padre.find('div.description').show(200);
});
$('input.form-text').blur(function() {
$padre = $(this).parent();
$padre.find('div.description').hide(200);
});
});

No me interesaNo está malBienÚtilMuy bien, muy útil (4 votes, average: 4.00 out of 5)
Loading ... Loading ...
Post de cabezaBomba en la(s) categoría(s): Drupal,Usabilidad,jquery | Tags: , , , , , , , , , , , , , , ,
Feb
17
2009
0

Tabindex (definir el orden de los campos de un formulario al usar TAB)

Cuando diseñamos una página con CSS, tenemos la libertad de situar cualquier elemento en cualquier parte, con toda la libertad. Esto está muy bien pero, cuando trabajamos con formularios, el orden en el que están escritos en HTML no tiene por qué ser el mismo que en el resultado visual.

El usuario suele moverse por los formularios usando la tecla TAB, y puede ocurrir que intente pasar del campo Nombre al campo Apellidos... y termine en Código Postal, lo cual desestructura bastante su forma de dar los datos y puede ser confuso (por ejemplo, si tenemos un formulario en 2 columnas en el cual el campo Nombre está en la columna izquierda y el campo Apellidos justo a la derecha, pero en la otra columna — y por tanto, unos cuantos campos detrás).

Para ello usaremos en cada uno de los input, select, etc. (cualquier elemento de formulario) el tabindex, lo cual define el orden en el que el usuario "viaja" por los campos del formulario. El orden es de menor a mayor, y no tiene por qué ser consecutivo (así, el formulario es escalable). Un valor de 0 (cero) significa que el campo queda fuera del "recorrido" que se hace pulsando TAB.

Ejemplo:

<form action="">
Campo 1:
<input type="text" name="field1" tabindex=1><br />
Campo 2:
<input type="text" name="field2" tabindex=3><br />
Campo 3:
<input type="text" name="field3" tabindex=2><br />

Campo 4:
<input type="text" name="field4" tabindex=0><br />

</form>

En este ejemplo, el TAB saltará del campo 1 al 3, y terminará en el 2. El 0 (cero) será accesible sólo con el ratón. Obsérvalo aquí:

Campo 1:

Campo 2:

Campo 3:

Campo 4:

No hay que dejar de tener en cuenta, por ejemplo, el siguiente artículo que nos avisa de los peligros que tiene usar mal este atributo: Too much accessibility

No me interesaNo está malBienÚtilMuy bien, muy útil (1 votes, average: 4.00 out of 5)
Loading ... Loading ...

Creative Commons License
Webcidentes by Alejandro Garcia is licensed under a Creative Commons Reconocimiento-Compartir bajo la misma licencia 3.0 España License.
Based on a work at www.cabezabomba.com.