Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: archowl en 1 Diciembre 2016, 00:33 am



Título: Duplica los las lineas creadas con la funcion fopen()
Publicado por: archowl en 1 Diciembre 2016, 00:33 am
Hola buenas a todos,
Quería ver si me pueden ayudar con un pequeño problema.
Lo que sucede es que cuando abro un archivo txt con las funciones de php y lo modifico, cuando recargo la pagina esta función se vuelve a ejecutar y me duplica lo que escribi.

Hay una solución para esto?

Saludos


Título: Re: Duplica los las lineas creadas con la funcion fopen()
Publicado por: engel lex en 1 Diciembre 2016, 00:41 am
muestra lo que haces (codigo)... probablemente tu crees que estás haciendo una cosa, pero claramente no estás haciendo lo que crees


Título: Re: Duplica los las lineas creadas con la funcion fopen()
Publicado por: archowl en 1 Diciembre 2016, 01:52 am
bueno aquí esta la parte del  codigo

Código
  1. if (isset($_POST['boton'])) {
  2.  
  3.  
  4.  
  5.                      $producto= $_POST["txtproducto"];
  6.                      $precio= $_POST["txtprecio"];
  7.                      $modelo= $_POST["txtmodelo"];
  8.                      $valoracion= $_POST["txtvaloracion"];
  9.                      $tipo= $_POST["txttipo"];
  10.                      $id= $_POST["txtid"];
  11.                      $comentario= $_POST["txtcomen"];
  12.  
  13.                      $handle=fopen("productos.txt", "a+");
  14.                        $texto = "&".$producto.",".$precio.",".$modelo.",".$valoracion.",".$tipo.",".$id.",".$comentario;
  15.                      fwrite($handle, $texto);
  16.                      fclose($handle);
  17.  
  18.                  }
  19.                ?>
Aquí se ve como se repite 3 veces la linea

(https://s17.postimg.org/k1obc7nwf/txterro.png)

Aguante paint!!


Título: Re: Duplica los las lineas creadas con la funcion fopen()
Publicado por: engel lex en 1 Diciembre 2016, 02:08 am
hmmm comprendo! no había pensado que eso era a lo que te referías...

considero que tienes 2 caminos...

1. creas una variable de sesión donde indicas que fue lo ultimo escrito en el archivo, y si es diferente, escribes el archivo

2. lees el archivo y buscas lo ultimo escrito, si no es igual, escribes


Título: Re: Duplica los las lineas creadas con la funcion fopen()
Publicado por: archowl en 1 Diciembre 2016, 02:35 am
Lo siento me explique mal.

Mira lo que estoy haciendo es que subo un archivo txt con nombre, códigos e id de productos y mediante código javascript me genera los contenedores con la información que hay en el archivo txt, hasta ahí no hay problema, lo que sucede es que yo quiero agregar nuevos productos pero debo hacerlo con código php, entonces hice un formulario para introducir los datos nuevos (nombre codigo del producto e id) y esto se agrega al archivo txt al final, el problema es que cuando refresco la pagina se duplica el producto nuevo como si lo hubiese escrito por 2da vez y sucede así cada vez que recargo la pagina.

como puedes ver en esta imagen yo solo agregue el primer computador(pc 180), los otros dos se generaron solos, al refrescar la pagina.
no se si que un poco mas claro.

(https://s17.postimg.org/5tlg0fcnj/errorrepite.png)


Título: Re: Duplica los las lineas creadas con la funcion fopen()
Publicado por: engel lex en 1 Diciembre 2016, 02:48 am
cuando recargas la pagina te pregunta si quieres reenviar la información... ahí se reenvia los datos y repite... aun mis 2 opciones siguen siendo las validas para solucionar el problema... aunque hay una tercera

la pagina de muestra la separas de la pagina donde agregas el producto por ejemplo

mostrar.php y agregar.php

cuando agregas un producto (form) el action lo rediriges a agregar... haces tu proceso de agregar y al final usas una rediercción de php y reenvias al usuario a mostrar...

Código
  1. header('Location: mostrar.php');

así creas un espacio de separación, de manera que si refrescas, la pagina donde estás ya no es donde se enviaron los datos (quedó atrás de agregar.php)