Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Contar las lineas de un archivo txt y crear un autoincrement

Estas en el tema de Contar las lineas de un archivo txt y crear un autoincrement en el foro de PHP en Foros del Web. Hola muchachos necesito hacer que un txt que estoy abriendo y metiendo a una tabla me salga con un autoincrement al principio, alguno de ustedes ...
  #1 (permalink)  
Antiguo 23/02/2016, 16:15
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Contar las lineas de un archivo txt y crear un autoincrement

Hola muchachos necesito hacer que un txt que estoy abriendo y metiendo a una tabla me salga con un autoincrement al principio, alguno de ustedes saben...

El txt que recibo es así:

8508,'2016-02-22 09:19:45.000',39099,'Cafe Americano',1
8508,'2016-02-22 09:19:45.000',39099,'Empq Cafes',1
8508,'2016-02-22 09:19:45.000',39099,'Huev Salchicha',1
8510,'2016-02-22 09:23:27.000',63099,'Ensal Cobb Salab',1
8510,'2016-02-22 09:23:27.000',63099,'Empq Ensaladas',1
8510,'2016-02-22 09:23:27.000',63099,'Add S. MielMosta',1
8511,'2016-02-22 09:25:57.000',29100,'J 12 Naranja',1
8511,'2016-02-22 09:25:57.000',29100,'Empq Jugos ',1
8511,'2016-02-22 09:25:57.000',29100,'Agua ',1

Y necesito que llegue así:

1,8508,'2016-02-22 09:19:45.000',39099,'Cafe Americano',1
2,8508,'2016-02-22 09:19:45.000',39099,'Empq Cafes',1
3,8508,'2016-02-22 09:19:45.000',39099,'Huev Salchicha',1
4,8510,'2016-02-22 09:23:27.000',63099,'Ensal Cobb Salab',1
5,8510,'2016-02-22 09:23:27.000',63099,'Empq Ensaladas',1
6,8510,'2016-02-22 09:23:27.000',63099,'Add S. MielMosta',1
7,8511,'2016-02-22 09:25:57.000',29100,'J 12 Naranja',1
8,8511,'2016-02-22 09:25:57.000',29100,'Empq Jugos ',1
9,8511,'2016-02-22 09:25:57.000',29100,'Agua ',1
....

Y así sucesivamente Es que necesito meterlo en una tabla y luego hacer un REPLACE INTO.

Basado en ese Id. Quien me pueda ayudar agradecería inmensamente.
__________________
La vida es un juego de Ajedrez.
  #2 (permalink)  
Antiguo 23/02/2016, 16:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Es extremadamente simple, con file() cargas el archivo en un array y con foreach() modificas cada linea agregándole el índice como dices, vas acumulando los cambios en un array auxiliar, finalmente con join() recuperas el mismo formato pero ya con los ids.

Código PHP:
Ver original
  1. $text = "a
  2. b
  3. c";
  4.  
  5. $lines = explode("\n", $text);
  6. $out = array();
  7.  
  8. foreach ($lines as $k => $v) {
  9.   $out []= ($k + 1).",$v";
  10. }
  11.  
  12. echo join("\n", $out);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 24/02/2016, 08:33
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Gracias por responder, intente de la siguiente manera pero no me cuenta las demás lineas...

Código PHP:
Ver original
  1. $filasP = file('C:\IntranetPV\Pedido.txt');
  2.  
  3.   foreach ($filasP as $valoresP) {
  4.    
  5.       $valoresP1 = trim(str_replace("'", "", $valoresP));
  6.       $linea = explode("'", $valoresP1);
  7.  
  8.       // list($Id, $Id_chk, $FechaP, $Total, $Producto) = explode(",", $valoresP1);
  9.       // $InsertP = mysql_query("REPLACE INTO pedido(Id_chk, FechaP, Total, Producto) VALUES ('$Id_chk','$FechaP','$Total','$Producto')", $conexion);
  10.  
  11.       $final = array();
  12.  
  13.       foreach ($linea as $key => $value) {
  14.       $final [] = ($key + 1).",$value";
  15.       // echo join("", $final);
  16.       echo "<br>";
  17.       var_dump($final);
  18.       }
  19.  
  20.   }

Me arroja los datos de la siguiente manera:

array(1) { [0]=> string(54) "1,2759,2016-02-24 08:15:17.000,60998,Serv. Domicilio,1" }
array(1) { [0]=> string(55) "1,2759,2016-02-24 08:15:17.000,60998,Huev. SoloClaras,1" }
array(1) { [0]=> string(55) "1,2759,2016-02-24 08:15:17.000,60998,Empq Fritat Desy,1" }
array(1) { [0]=> string(55) "1,2761,2016-02-24 08:23:02.000,169993,Serv. Domicilio,1" }
array(1) { [0]=> string(53) "1,2761,2016-02-24 08:23:02.000,169993,Prom Lasagnas,1" }
array(1) { [0]=> string(51) "1,2761,2016-02-24 08:23:02.000,169993,Lasag Mixta,1" }
array(1) { [0]=> string(53) "1,2761,2016-02-24 08:23:02.000,169993,Empq Lasagnas,1" }

Arroja los datos pero no me hace el conteo :(
__________________
La vida es un juego de Ajedrez.
  #4 (permalink)  
Antiguo 24/02/2016, 09:41
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Pues es que tienes un foreach() dentro de otro, eso está mal, sólo debes hacer un sólo foreach(), básicamente copiaste y pegaste sin entender la solución.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 24/02/2016, 09:52
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Con uno solo no me funciona.
__________________
La vida es un juego de Ajedrez.
  #6 (permalink)  
Antiguo 24/02/2016, 10:00
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Cita:
Iniciado por ImHarold Ver Mensaje
Con uno solo no me funciona.
¿Al menos te diste tiempo para leer y entender el ejemplo que te puse?

Observa:
Código PHP:
Ver original
  1. $filasP = file('C:\IntranetPV\Pedido.txt');
  2.  
  3. // acá es donde debes crear el acumulador
  4. $final = array();
  5.  
  6.  
  7. // aquí ya tienes las lineas, y $key tendrá el índice
  8.   foreach ($filasP as $key => $valoresP) {
  9.    
  10.       $valoresP1 = trim(str_replace("'", "", $valoresP));
  11.  
  12. // esto es innecesario
  13. //      $linea = explode("'", $valoresP1);
  14.  
  15.       // list($Id, $Id_chk, $FechaP, $Total, $Producto) = explode(",", $valoresP1);
  16.       // $InsertP = mysql_query("REPLACE INTO pedido(Id_chk, FechaP, Total, Producto) VALUES ('$Id_chk','$FechaP','$Total','$Producto')", $conexion);
  17.  
  18. // esto no sirve aquí
  19. //      $final = array();
  20. // tampoco sirve porque ya estamos dentro de un foreach()
  21. //      foreach ($linea as $key => $value) {
  22.       $final [] = ($key + 1).",$valoresP1";
  23.       // echo join("", $final);
  24. //      echo "<br>";
  25. //      var_dump($final);
  26. //      }
  27.   }
  28.  
  29. // al final del foreach...
  30. var_dump($final);
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 24/02/2016, 10:07
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Ok ok u,u lo que sucede es que hoy hago entrega de ese proyecto y solo me falta ese detalle :/

Estoy tratando de entender. Y si ahora estoy tratando de entenderlo, respecto a lo que ya tengo.

Entiendo entonces que tengo que hacer solo un foreach, dicho esto tengo que retroceder un poco a lo que y había hecho antes.
__________________
La vida es un juego de Ajedrez.
  #8 (permalink)  
Antiguo 24/02/2016, 10:23
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Cita:
Iniciado por pateketrueke Ver Mensaje
¿Al menos te diste tiempo para leer y entender el ejemplo que te puse?

Observa:
Código PHP:
Ver original
  1. $filasP = file('C:\IntranetPV\Pedido.txt');
  2.  
  3. // acá es donde debes crear el acumulador
  4. $final = array();
  5.  
  6.  
  7. // aquí ya tienes las lineas, y $key tendrá el índice
  8.   foreach ($filasP as $key => $valoresP) {
  9.    
  10.       $valoresP1 = trim(str_replace("'", "", $valoresP));
  11.  
  12. // esto es innecesario
  13. //      $linea = explode("'", $valoresP1);
  14.  
  15.       // list($Id, $Id_chk, $FechaP, $Total, $Producto) = explode(",", $valoresP1);
  16.       // $InsertP = mysql_query("REPLACE INTO pedido(Id_chk, FechaP, Total, Producto) VALUES ('$Id_chk','$FechaP','$Total','$Producto')", $conexion);
  17.  
  18. // esto no sirve aquí
  19. //      $final = array();
  20. // tampoco sirve porque ya estamos dentro de un foreach()
  21. //      foreach ($linea as $key => $value) {
  22.       $final [] = ($key + 1).",$valoresP1";
  23.       // echo join("", $final);
  24. //      echo "<br>";
  25. //      var_dump($final);
  26. //      }
  27.   }
  28.  
  29. // al final del foreach...
  30. var_dump($final);
Muchas gracias, ahora entiendo. Mirare como ingresarlo a la tabla
__________________
La vida es un juego de Ajedrez.
  #9 (permalink)  
Antiguo 24/02/2016, 14:17
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

No pude ingresar los datos DX,

Intento pero si no es un error es que el primero se duplica Dx!

Acá tengo el que por ahora me saca un arreglo bueno: .... pero de hay pára allá no se como hacer que ingrese uno por uno.

Código PHP:
Ver original
  1. <?php
  2.  
  3.  @$conexion = mysql_connect('localhost', 'root', '');
  4.   mysql_select_db('micros', $conexion);
  5.  
  6.  
  7. $filasP = file('C:\IntranetPV\Pedido.txt');
  8.  
  9. // acá es donde debes crear el acumulador
  10. $final = array();
  11.  
  12. // aquí ya tienes las lineas, y $key tendrá el índice
  13.   foreach ($filasP as $key => $valoresP) {
  14.    
  15.       $valoresP1 = trim(str_replace("'", "", $valoresP));
  16.  
  17. // esto es innecesario
  18.  
  19.  
  20.       $final [] = ($key + 1).",$valoresP1|";
  21.  
  22.       $finel = join($final);
  23.  
  24.       $f = list($Linea_Unica) = explode("|",$finel);
  25.  
  26.       // $g = list($Id, $Id_chk, $FechaP, $Total, $Cnt, $Producto) = explode(",",$Linea_Unica);
  27.       // $InsertP = mysql_query("INSERT INTO pedido(Id_chk, FechaP, Total, Producto, Cnt) VALUES ('$Id_chk','$FechaP','$Total','$Producto','$Cnt')", $conexion);
  28.   }
  29.  
  30.     var_dump($f);

Me da el siguiente resultado:

array(4021) { [0]=> string(54) "1,2759,2016-02-24 08:15:17.000,60998,Serv. Domicilio,1" [1]=> string(55) "2,2759,2016-02-24 08:15:17.000,60998,Huev. SoloClaras,1" [2]=> string(55) "3,2759,2016-02-24 08:15:17.000,60998,Empq Fritat Desy,1" [3]=> string(52) "4,2759,2016-02-24 08:15:17.000,60998,Add Mozarella,1" [4]=> string(51) "5,2759,2016-02-24 08:15:17.000,60998,Add Cebolla ,1" [5]=> string(55)...

Ahora no se como sacar cada linea del arreglo... ya se como quitar las comas y asignar a una variable e insertar, pero con lo que e hecho me inserta pero el mismo (el primero) muchas veces.
__________________
La vida es un juego de Ajedrez.
  #10 (permalink)  
Antiguo 24/02/2016, 14:27
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Ahora si ya entendí lo que quieres hacer.

Mira bien esta parte del código:
Código PHP:
Ver original
  1. list($Id, $Id_chk, $FechaP, $Total, $Cnt, $Producto) = explode(",",($key + 1).",$valoresP1");

Con eso ya obtienes el array de datos que necesita list() para crear las variables, incluyendo el valor de $key como índice.

Entonces el array $final no tiene sentido, porque no quieres hacer nada con el después, etc.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 24/02/2016, 18:04
 
Fecha de Ingreso: febrero-2015
Ubicación: Bogotá
Mensajes: 41
Antigüedad: 9 años, 2 meses
Puntos: 1
Respuesta: Contar las lineas de un archivo txt y crear un autoincrement

Gracias Jaha hice un doble foreach con ese $final pero con ya con esta:
Código PHP:
Ver original
  1. list($Id, $Id_chk, $FechaP, $Total, $Cnt, $Producto) = explode(",",($key + 1).",$valoresP1");

Me hace todo de una vez muchas gracias pateketrueke por la sabiduría.

PDT: Mañana lo pruebo Jaha
__________________
La vida es un juego de Ajedrez.

Etiquetas: lineas, tabla, txt
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 13:01.