Duplica los las lineas creadas con la funcion fopen()

Iniciado por archowl, 1 Diciembre 2016, 00:33 AM

0 Miembros y 1 Visitante están viendo este tema.

archowl

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

engel lex

muestra lo que haces (codigo)... probablemente tu crees que estás haciendo una cosa, pero claramente no estás haciendo lo que crees
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

archowl

#2
bueno aquí esta la parte del  codigo

Código (php) [Seleccionar]
if (isset($_POST['boton'])) {
                     
                   
                 
                     $producto= $_POST["txtproducto"];
                     $precio= $_POST["txtprecio"];
                     $modelo= $_POST["txtmodelo"];
                     $valoracion= $_POST["txtvaloracion"];
                     $tipo= $_POST["txttipo"];
                     $id= $_POST["txtid"];
                     $comentario= $_POST["txtcomen"];

                     $handle=fopen("productos.txt", "a+");
                       $texto = "&".$producto.",".$precio.",".$modelo.",".$valoracion.",".$tipo.",".$id.",".$comentario;
                     fwrite($handle, $texto);
                     fclose($handle);
                     
                 }
               ?>

Aquí se ve como se repite 3 veces la linea



Aguante paint!!

engel lex

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
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.

archowl

#4
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.


engel lex

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 (php) [Seleccionar]
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)
El problema con la sociedad actualmente radica en que todos creen que tienen el derecho de tener una opinión, y que esa opinión sea validada por todos, cuando lo correcto es que todos tengan derecho a una opinión, siempre y cuando esa opinión pueda ser ignorada, cuestionada, e incluso ser sujeta a burla, particularmente cuando no tiene sentido alguno.