Foros del Web » Programando para Internet » PHP »

actualizar bd desde un *.txt

Estas en el tema de actualizar bd desde un *.txt en el foro de PHP en Foros del Web. holas, les cuento: tengo una bd y la edito desde internet con php. la bd es usada para guardar contactos del tipo mail: [email protected] pass: ...
  #1 (permalink)  
Antiguo 04/08/2005, 14:22
 
Fecha de Ingreso: agosto-2005
Mensajes: 61
Antigüedad: 19 años, 3 meses
Puntos: 0
actualizar bd desde un *.txt

holas, les cuento: tengo una bd y la edito desde internet con php.
la bd es usada para guardar contactos del tipo

mail: [email protected]
pass: admin12345

o sea tengo un form para subir los datos a la bd tiene dos campos que el usuario debe completar.

y la tabla que uso es la siguiente

- id_numero (INT autonumerico) (clave primaria)
- mail (VACHAR)
- pass (VACHAR)

subiendo normalmente de a 1 usuario por vez, esta todo bien, el problema es cuando tengo que subir una lista de 50 usuarios, tengo que ponerlos todos uno por uno con sus respectivos pass.... MI PREGUNTA ES LA SIGUIENTE:
" se puede subir a la bd un archivo.txt donde contenga el nombre de usuario y el pass, donde su sintaxis sea algo como:

<
[email protected]
admin12345

[email protected]
root

[email protected]
windowsxp
>

para que una vez subido ese archivo desde internet se acualice la bd, sin tener que copiarlos uno por uno desde el form???????

creeria que todo se puede, pero soy novato en php y no se como hacerlo.....

espero sus respuestas....
muchas gracias
chugus
  #2 (permalink)  
Antiguo 04/08/2005, 19:14
 
Fecha de Ingreso: agosto-2005
Mensajes: 61
Antigüedad: 19 años, 3 meses
Puntos: 0
ayuda!!!!!!!!!!!!!!!
  #3 (permalink)  
Antiguo 05/08/2005, 00:57
Avatar de centinela77  
Fecha de Ingreso: diciembre-2004
Ubicación: León
Mensajes: 143
Antigüedad: 19 años, 11 meses
Puntos: 1
se puede desde con un fichero de texto tal y como dices pero es recomendable que le indiques un delimitador a los campos. Por ejemplo:

usuario1;[email protected]
usuario2;[email protected]
etc ....

Luego te creas un script con un form (un input file para cargar el fichero)

Te muestro unpequeño ejemplo para poder explicarte como funcionaría porque sino te resultará complicado llevarlo a la práctica. Uso un insert pero puedes hacer updates tambien modificándolo a tú gusto.

Código PHP:

$contenido 
file("$fichero");   
for(
$i=0$i<sizeof($contenido); $i++) {  

   
$linea trim($contenido[$i]);   
   
$arr explode(";"$linea); 
   
$sql "insert into tu_tabla values ('"implode("','"$arr) ."')";
   
$consulta mysql_db_query($bd$sql);         

Tienes otro opción mucho más sencilla si tienes posibilidad de usar el phpmyadmin el cual carga ficheros de este tipo de forma auto.

Espero que te sirva todo esto como ayuda para iniciarte en ello.
  #4 (permalink)  
Antiguo 05/08/2005, 01:13
 
Fecha de Ingreso: enero-2005
Ubicación: Barcelona
Mensajes: 1.473
Antigüedad: 19 años, 10 meses
Puntos: 10
buenas... yo tengo este codigo para actualizar algun txt a mi BD.

Código PHP:
  $filename="tufichero.txt";
    
$file=fopen($filename,"r"); 
    
$contents=fread($file,filesize($filename)); 
    
fclose($file); 
    
$contents=str_replace("\r","\n",$contents); 
    
$contents=str_replace("\n\n","\n",$contents); 
    
$lineas=explode("\n",$contents); 
    foreach (
$lineas as $linea)
    { 
        
$variable1substr($linea,0,8); 
        
$variable2 =substr($linea,0,4);
                          ...
                           
$sql="INSERT INTO data (campo1,campo2) 
          VALUES ('"
.$variable1."','".$variable2."');
                mysql_query($sql);
            } 
__________________
"Cada hombre es el hijo de su propio trabajo"
Miguel de Cervantes Saavedra
"La experiencia es algo que no consigues hasta justo depués de necesitarla"
Laurence Olivier
  #5 (permalink)  
Antiguo 05/08/2005, 09:40
 
Fecha de Ingreso: agosto-2005
Mensajes: 61
Antigüedad: 19 años, 3 meses
Puntos: 0
buenas... no logro hacer que funcione...

me harias el favor de adaptarlo a mi codigo???? teniendo en cuenta la tabla y las demas cosas.....

en el post de arriva explico todo....

muchas gracias....
  #6 (permalink)  
Antiguo 09/08/2005, 10:43
 
Fecha de Ingreso: agosto-2005
Mensajes: 76
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola, tengo este codigo que es parecido por el que preguntais en este post y mi duda es la siguiente:

Quiero insertar los datos desde un fichero en mi tabla de la base de datos MySQL via php, y con este codigo solo consigo insertar la última linea del fichero. He probado con el bucle for (comentado en el codigo) y con foreach; con ambos me ocurre lo mismo y no se como solucionarlo. Muchas gracias por vuestra ayuda.

Aqui os pego el codigo:

if (! $fcontents = file("$PATH_FILE")) {
stderr ("Error openning file");
return false;
}
//ejecutamos un bucle para insertar cada fila del array en la bd
else {
//for ($i=0; $i<sizeof($fcontents); $i++) {
//$line = trim($fcontents[$i]);
//$arr = explode("\t", $line);
//$sql = "insert into $DB_TABLE values ('".implode("','", $arr)."')";
//}
foreach ($fcontents as $line) {
$union = trim ($line);
$arr = explode ("\t", $line);
$sql = "insert into $DB_TABLE values ('".implode("','", $arr)."')";
}
}
//introducimos datos en la tabla de la base de datos
if (! $query = mysql_query($sql, $conn)) {
stderr ("Error querying: $sql");
return false;
}
  #7 (permalink)  
Antiguo 09/08/2005, 11:50
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
A veces cuando queremos recoger datos de un fichero, se suele meter en una misma línea pero separando cada dato por una tabulación, y luego se lee desde el fichero usando la función fscanf . Con esto se consigue que cada línea contenga todos los datos necesarios que se vuelcan a las variables según un formato. Así una línea es como un nuevo registro con todos sus datos.
Código PHP:
<style>
* {font-size:9px;}
.code {
    font-family: Courier, 'Courier New', sans-serif; font-size: 11px; color: #006600;
    background-color: #FAFAFA; border: #D1D7DC; border-style: solid;
    border-left-width: 1px; border-top-width: 1px; border-right-width: 1px; border-bottom-width: 1px
}</style>
<?php
$fichero
=fopen("tu_fichero.txt","r");
while(!
feof($fichero))
    {
    
fscanf($fichero,"%s\t%s\n",$email,$password);
    
$a="insert into tu_tabla ('email','password') values ('".$email."','".$password."');";
    if (@
mysql_query($a) && $email!="" && $password!=""
        print 
"La consulta:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code class='code'>$a</code><br>se ejecutó si problemas...<br><br>";
    else 
        print 
"La consulta:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<code class='code'>$a</code><br>No se pudo ejecutar...<br><br>";
    }
fclose($fichero);
    
?>
Lo que hace esta línea:
Código PHP:
fscanf($fichero,"%s\t%s\n",$email,$password
Es que a cada lectura de línea asigna el primer string(%s) que encuentra a la variable $email, luego se salta la tabulación(\t) y asigna el segundo string(%s) que encuentra a $password; y bueno el \n hay que ponerlo por el retorno de carro.

Claro que tenemos que procuparnos de insertar en el fichero el/los par/es de datos ( email, password ) separados por una tabulación en nuestro editor de texto o código. Sería algo así
La ventaja que tiene a mi juicio hacerlo de esta forma, es que si en un futuro quieres añadir un campo más te resultaría casi inmediato, ya que simplemente deberás de cambiar el formato, referenciar la variable para ya usarla en la query.
(si quieres usarlo recuerda cada par de valores mail, password van en una misma línea y separados con una tabulacion -> pulsando el tabulador en tu editor, y tambien recuerda no deja ninguna línea en blanco ni nada al final del fichero)

Salu2 ;)
__________________
[+]
[+]

Última edición por yoseman; 09/08/2005 a las 12:01
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 12:08.