Foros del Web » Programando para Internet » PHP »

Multiples inserciones en base de datos

Estas en el tema de Multiples inserciones en base de datos en el foro de PHP en Foros del Web. Hola a todos! Apliqué una solución que parecía buena, pero veo que sigue provocando error. Os cuento. Tengo una página en php. En ella hay ...
  #1 (permalink)  
Antiguo 04/03/2011, 05:19
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 1 mes
Puntos: 4
Multiples inserciones en base de datos

Hola a todos! Apliqué una solución que parecía buena, pero veo que sigue provocando error. Os cuento. Tengo una página en php. En ella hay un formulario. Al hacer submit, se recarga la página ym según un chivato, realizará uan inserción en base de datos. Después navego a otar página, de modo que no me puedan generar multitu de inserts mediante el "F5". Algo del estilo:


// Parte php al inicio de la página

if ( $_POST["txt_chivato"] and $_POST["txt_chivato"] == 'G' )
{
- Realiza el insert
- Navega a otra página ( que confirma la inserción, por ejemplo )
}

// Parte HTML, Formulario

<form id="id_form">
<input type="text" id="txt_valor">
<input type="hidden" id="txt_chivato" value="G">
<input type="submit">
</form>

Pero claro, una vez he hehco el insert, y navego a la otra página... Si le doy al botón de volver atrás, volverá a enviar los datos del formulario ( incluído el txt_chivato = "G" ) y me realizará un nuevo insert... Cómo puedo arreglarlo?? Por que tengo una aplicación enfocada al usuario, donde hay multitud de páginas que insertan registros, y no voy a poner en cada una de ellas un captcha, no?

Gracias!
  #2 (permalink)  
Antiguo 05/03/2011, 01:58
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Multiples inserciones en base de datos

Código PHP:
if ( isset($_POST['submit']) ) //PREGUNTA SI SE SETEO LA VARIABLE 

unset(
$_POST['submit']);//SE LA "DESETEA" PARA QUE CUANDO SE RECARGUE LA PÁGINA NO SE VUELVA A CUMPLIR LA CONDICIÓN ANTERIOR
Realiza el insert
Navega a otra página que confirma la inserciónpor ejemplo )
}

// Parte HTML, Formulario

<form id="id_form" action="index.php">
<
input type="text" name="valor1">
<
button type="submit" name="submit" value="submit">Enviar</button>
</
form
  #3 (permalink)  
Antiguo 05/03/2011, 11:13
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Multiples inserciones en base de datos

Gracias por la respuesta! Pero no... eso no sirve, por que el problema al actualizar una página ( con formularios ) es que vuelve a enviar los datos del formulario. Y, en el momento que se enviaron los datos, pues lógicamente la variable sí existía. Por lo tanto cumple la condición y realiza el insert...

Entiendo entonces que sólo me queda la opción de usas captchas en todas las páginas en las que interactúe con la base de datos? otra opción sería emplear uan variable de sesión que me sirviese de boleano. Cuando pulse a "Guardar" Esta variable toma el valor "S". Y, una vez realizada la acción, toma el valor "N". Así, por mucho que se refresque la página, sólo interactuará con la base de datos si el valor de la variable de sesión es igual a "S", o dicho de otra manera, sólo actuará si realmente se ha pulsado sobre el botón "Guardar". Ahora me queda la tarea de, mediante javascript, informar el valor de uan variable de sesion. A parte de hacerlo mediante Cookies, puede hacerse de otra manera?
  #4 (permalink)  
Antiguo 06/03/2011, 00:16
 
Fecha de Ingreso: abril-2009
Mensajes: 4
Antigüedad: 14 años, 11 meses
Puntos: 0
Respuesta: Multiples inserciones en base de datos

Entonces sería algo así:
SI( var Guardar == 'S' ){
consultaSQL;
Guardar = 'N';
}
  #5 (permalink)  
Antiguo 06/03/2011, 05:14
Avatar de s00rk  
Fecha de Ingreso: octubre-2010
Ubicación: Mexico
Mensajes: 238
Antigüedad: 13 años, 4 meses
Puntos: 48
Respuesta: Multiples inserciones en base de datos

Si en la base de datos o la tabla mas bien donde insertas tales datos es de que no pueda repetir los mismos datos porque entonces no haces un select buscando tales datos si existen que muestre un mensaje que no puede que ya esta en uso o algo asi, sino que lo inserte.
  #6 (permalink)  
Antiguo 07/03/2011, 04:13
 
Fecha de Ingreso: febrero-2011
Mensajes: 156
Antigüedad: 13 años, 1 mes
Puntos: 4
Respuesta: Multiples inserciones en base de datos

No, eso no puede ser. Hay veces que el propio dato discrimina nuevas inserciones, como bien dices. Pero hay otras que es imposible discriminar por el dato. Además, si no es un inserción es un update, por ejemplo. Es cierto que por muchas peticiones de update la base de datos no quedará inconsistente. Modificar 1000 veces un dato no afecta negativamente a la información. Pero si al rendimiento de la página. Ya que se hace una petición innecesaria.
La solución es el captcha. Pero también lo he conseguido mediante una variable de sesion que se actauliza via ajax. De tal como que, al tratarse una variable de sesion, no condiciona su valor a cuándo se evalúa. Lo que pasa que ahora esto me implica una duda, que ahora plantearé en un nuevo tema. Y es para que sirve realmente el captcha?
Muchas gracias por vuestras aportaciones.

Etiquetas: multiples
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 10:22.