Foros del Web » Programando para Internet » PHP »

Insertar en BD desde archivo txt

Estas en el tema de Insertar en BD desde archivo txt en el foro de PHP en Foros del Web. Hola a todos. Bueno, mi problema es que tengo un archivo txt con lo siguiente (por ejemplo): cielo azul hierba verde agua transparente . . ...
  #1 (permalink)  
Antiguo 31/07/2003, 06:02
 
Fecha de Ingreso: julio-2003
Mensajes: 64
Antigüedad: 14 años, 4 meses
Puntos: 0
Insertar en BD desde archivo txt

Hola a todos.
Bueno, mi problema es que tengo un archivo txt con lo siguiente (por ejemplo):

cielo azul
hierba verde
agua transparente
.
.
.

Es decir, dos palabras separadas por un espacio(aunque se podria vambiar por cualquier cosa). Lo que quiero es recorrer el archivo de texto línea por línea, y que la primera palabra la introduzca en un campo de una tabla (por ejemplo 'nombre') y la segunda palabra en otro campo (pr ejemplo 'caracteristica').

Hasta ahora he conseguido leer el archivo línea a línea y que me introduzca toda la línea en un campo, pero no que cada palabra vaya a su campo correspondiente.

Este es el codigo que he hecho hasta ahora:

$fichero = file("prueba.txt");
for($i=0;$i<=82;$i++)
{
$array = explode("\n",$fichero[$i]);
$enl=strtr(strtolower("$fichero[$i]"), "ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ", "àáâãäåæçèéêëìíîïðñòóôõöøùüú");
mysql_db_query("cine","insert into principal (nombre) values ('$fichero[$i]')");
}

Si me podeis echar una mano estaria muy agradecido.

Un saludo
Eduardo
  #2 (permalink)  
Antiguo 31/07/2003, 12:38
 
Fecha de Ingreso: julio-2003
Mensajes: 165
Antigüedad: 14 años, 5 meses
Puntos: 1
Hola mi amigo,

El segmento de código que has publicado tiene cosas muy interesantes, ciertamente. La asignación a la variable $enl me parece muy astuta, aunque luego no utilicas el valor de esa variable (por lo menos en el segmento de código que has compartido con nosotros).

Otros detalles que quizás vale la pena mencionar:

- La condición del ciclo for usa el valor fijo 82. Quizás quieras usar el número de elementos del arreglo $fichero en su lugar.

- Al arreglo $array le asignas el valor que retorna la función explode(), usando como separador el caracter de avance de línea. No entiendo muy bien la lógica de esa sentencia; quizás la estás usando para librarte del avance de línea del final, pero, una vez más, no se observa que uses la variable $array más adelante.

- Finalmente, y a modo de ejemplo, considera esta pequeña variación de tu código:

Código:
<?php

mysql_connect ('host', 'username', 'passwd');

$fichero = file ('prueba.txt');

$n_lineas = count ($fichero);
for ($i = 0; $i < $n_lineas; $i++) {
    $linea = rtrim ($fichero[$i]);

    list ($nombre, $caracteristica) = explode (' ', $linea);

// Comentado por el momento
/*    $enl = strtr (strtolower ($fichero[$i]),
 *                  'ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÜÚ',
 *                  'àáâãäåæçèéêëìíîïðñòóôõöøùüú'); */

    mysql_db_query ('cine',
                    'INSERT INTO principal (nombre, caracteristica) ' .
                    "values ('$nombre', '$caracteristica');");
}

?>

Este pequeño trozo de código lee cada línea del archivo 'prueba.txt', separa los dos campos que describes (usando un espacio sencillo como separador), almacena sus valores en las variables $nombre y $caracteristica, y finalmente realiza una inserción de éstos valores en la tabla `principal' de la base de datos `cine' (asumiendo que la tabla tiene dos campos llamados `nombre' y `caracteristica').

Quizás te sirva para guiarte en tu problema.

Un cordial saludo.
  #3 (permalink)  
Antiguo 01/08/2003, 03:17
 
Fecha de Ingreso: julio-2003
Mensajes: 64
Antigüedad: 14 años, 4 meses
Puntos: 0
Hola Leonardop!

Efectivamente, reconozco que tenía que haber limpiado un poco el código que he mostrado, ya que aún contenía alguna línea de una pruebas que estuve haciendo.

Con tu modificación me funciona a la perfección y he aprendido también alguna cosa interesante como la función rtrim(), que no la conocía y es más útil que la que utilizaba.

La variable $enl la utilizaba para que además, con esas dos palabras se creara otro valor como cielo_azul que iría en otro campo de la tabla.

Muchas gracias por tu ayuda

Un saludo
Eduardo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.