| Asunto: | Re: [SauloNet] Subir y cnsultar fichero en servidor SQL \ PHP | | Fecha: | Lunes, 21 de Diciembre, 2009 11:24:22 (-0430) | | Autor: | =?UTF-8?Q?Jos=C3=A9_Diaz?= <jocddz @.....com>
|
Perfeccionado lo de ingresar nombre y apellido a la tabla de la bd:
<html>
<head>
<title>Manejo de Fichero</title>
</head>
<body>
<h3>Manejo de Fichero</h3>
<form name="formulario" id="formulario" method="post" >
<label for="nombref">Fichero:</label>
<input type="file" name="elfichero" size="50" />
<input type="submit" name="enviar" />
</form>
</body>
<?php
$nombre_fichero = $_POST['elfichero'];
$fichero = fopen('/home/jose/Escritorio/tmp/'.$nombre_fichero, 'r')
or die('Error de lectura');
mysql_connect("localhost","jose","123456") or die("Error de conexion
a la BD");
mysql_select_db("pruebas") or die("Error de conexion a la Tabla de
la BD");
$num_lineas = 0;
while(!feof($fichero)){
$num_lineas++;
$buffer = fgets($fichero);
//echo "Linea $num_lineas: $buffer <br />";
$pos = strpos($buffer," ");
if($pos !== false) {
//echo "hay un espacio en blanco y esta en la posicion:
".$pos."<br />";
$nombre=substr($buffer,0,$pos);
$apellido=substr($buffer,$pos,20);
$apellido = trim($apellido);
}
//echo $nombre.'<br />';
//echo $apellido.'<br />';
//echo $buffer.'<br />';
mysql_query("insert into personas (nombre, apellido,
nombre_completo) values ('$nombre','$apellido','$buffer')");
//echo $buffer.'<br />';
}
//$num_lineas = $num_lineas-1;
//echo "<br />El fichero tiene $num_lineas lineas/registros";
fclose($fichero);
?>
<html>
Par esta practica hecha en un localhost de prueba, a una tabla con 4 campos,
id(int A.I), nombre(vhcar20), apellido(vchar20) y nombre_completo(vchar50).
Puesto en comentario la salida por pantalla.
Interesante esta necesidad y curioso por probar que tal salia, bueno eso
sirve, me intereso por lo de los archivos planos que envian los bancos y del
cual debe tomarse algo de informacion para algunos sistemas.
Si necesitas ayuda con la b), que no es dificil, avisa.
saludos.
El 21 de diciembre de 2009 09:56, José Diaz <jocddz@gmail.com> escribió:
> *a) como subo un fichero de texto formado por registros de 2 campos a un
> servidor SQL?*
>
> nunca he hecho o he tenido la necesidad de leer un txt e ingresar su
> contenido en la bd, pero se que ese dia puede llegar claro, y es interesante
> dicha necesidad, me puse a probar e inventar con unas practicas, lo cual no
> es muy eficiente pero se encamina por la idea, aunque esto esta hacia una bd
> mysql, en tu caso las cadenas de conexion son diferentes, me imagino que por
> PDO puedes adaptarlo o cambiar todas las funciones de mysql por lo que uses
> para sql server, ya que con decir "servidor sql" realmente no especificas si
> hablas de mySQL o de SQL Server, es un error de algunas personas usar ese
> termino de "servidor SQL" siendo SQL un lenguaje estandar de BD, asi que
> asumire que hablas de sql server.
>
>
> -------------------------------------------------------------------------------------------------
> <html>
> <head>
> <title>Manejo de Fichero</title>
> </head>
> <body>
> <h3>Manejo de Fichero</h3>
> <form name="formulario" id="formulario" method="post" >
> <label for="nombref">Fichero:</label>
> <input type="file" name="elfichero" size="50" />
> <input type="submit" name="enviar" />
> </form>
> </body>
> <?php
>
> $nombre_fichero = $_POST['elfichero'];
> //$archivo = $_FILE['elfichero'];
> //echo $archivo;
>
> /*
> $dir = dirname(getcwd());
> //$ruta = getcwd(); // obtengo el directorio actual.
> $ruta=chdir($dir);
> echo $ruta;
> exit();
> */
>
> //$file =
> file_get_contents('/home/jose/Escritorio/tmp/'.$nombre_fichero, true);
> //echo $file;
> //exit();
>
>
> $fichero = fopen('/home/jose/Escritorio/tmp/'.$nombre_fichero, 'r')
> or die('Error de lectura');
>
> //$fichero = dir($nombre_fichero) or die("Oops! error... error...
> feo error!");
> //echo $fichero;
> //exit();
>
> mysql_connect("localhost","jose","123456") or die("Error de
> conexion a la BD");
> mysql_select_db("pruebas") or die("Error de conexion a la Tabla de
> la BD");
>
> $num_lineas = 0;
> while (!feof($fichero)){
> $num_lineas++;
> // lleyendo la linea:
> //$buffer = fgetss($fichero, 4096, '<body> <hr />');
> $buffer = fgets($fichero);
> //echo "Linea $num_lineas: $buffer <br />";
>
> $nombre=rtrim(substr($buffer,0,-7));
> $apellido=ltrim(substr($buffer,10));
>
> mysql_query("insert into personas (nombre, apellido,
> nombre_completo) values ('$nombre','$apellido','$buffer')");
>
> echo $buffer.'<br />';
> }
>
> //if(mysql_fetch_row($a)) echo "datos ingresados<br />";
> //else echo "datos NO ingresados<br />";
>
> // echo "\n";
> $num_lineas = $num_lineas-1;
> echo "El fichero tiene $num_lineas lineas/registros";
> fclose($fichero);
>
> ?>
> <html>
>
> -------------------------------------------------------------------------------------------------
> Busca sobre leer archivos planos txt y tomar los string y como dividirlos
> bien sea porque la informacion esta tabulada o evaluando la longitud hasa
> llegar al 'espacio entre el nombre y el apellido' cuentas los caracteres y
> podrias usar algo que te lea una longitud de un inicio a un final, cortando
> asi el nombre en una variable y el apellido en otra variable de todo el
> string, o alguna funcion que que detecte el caracter de espacio, y te toma
> los caracteres hasta ahi, y eliminar espacios de izquierda del apellido con
> ltrim() y de la derecha con rtrim(), mas o menos por ahi debe ir la
> cuestion. Como no he tenido esta necesidad y nunca lo he hecho, desconozco
> si existan mejores funciones php que sirvan de mejor manera para esta
> situacion.
>
>
> *b) como puedo consultar el campo 2 introduciendo el campo 1 en un
> formulario de
> pà gina web?
> Por ejemplo, si subo un fichero con los campos nombre y apellido al
> servidor
> SQL, ¿cómo puedo consultar el apellido consultando el nombre?*
>
> Pues filtrando la SQL, pero eso no te traera necesariamente un solo
> registro, ya que si buscas por 'Maria' o 'Jose' o 'Pablo' es seguro que
> tendras en la BD muchas personas con esos nombres pero con distintos
> apellidos, asi que al filtrar "select * from tabla where nombre='$nombre'"
> te traeras varios registros a no ser que casualmente tengas un solo registro
> con ese nombre.
>
> saludos y suerte.
>
> El 18 de diciembre de 2009 14:18, Pablo <thyssens@teleline.es> escribió:
>
> Hola a todos,
>>
>> querÃa consultaros dos cositas sobre programación de páginas Web en PHP:
>>
>> a) como subo un fichero de texto formado por registros de 2 campos a un
>> servidor SQL?
>>
>> b) como puedo consultar el campo 2 introduciendo el campo 1 en un
>> formulario de
>> pà gina web?
>>
>> Por ejemplo, si subo un fichero con los campos nombre y apellido al
>> servidor
>> SQL, ¿cómo puedo consultar el apellido consultando el nombre?
>>
>> Muchas gracias y felices fiestas a tod@s,
>> Pablo Bouvier
>>
>> ____________________________
>>
>> Lista de correos de Saulo.Net
>> Información, bajas y altas en http://www.saulo.net/lista/
>>
>
>
|