Foros del Web » Programando para Internet » PHP »

sentencia if para enviar form

Estas en el tema de sentencia if para enviar form en el foro de PHP en Foros del Web. Hola tengo un form , e inserto registros a la DB de esta manera: $insertSQL = "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) ...
  #1 (permalink)  
Antiguo 12/07/2007, 11:27
 
Fecha de Ingreso: mayo-2006
Mensajes: 159
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta sentencia if para enviar form

Hola tengo un form , e inserto registros a la DB de esta manera:

$insertSQL = "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) values ('$fecha','$nombre','$ubicacion','$mail','$comenta rio','$imagen')";
mysql_select_db($database_conexion, $conexion);
$rs=mysql_query($insertSQL);
}

/////lo que necesito es un "if" que me permita insertar el registro solamente cuando presione el boton "Enviar".



Saludos...kaos_Diego.
  #2 (permalink)  
Antiguo 12/07/2007, 11:47
Avatar de Yranac  
Fecha de Ingreso: junio-2007
Mensajes: 125
Antigüedad: 17 años, 5 meses
Puntos: 1
Re: sentencia if para enviar form

Cuando envías el formulario los datos pasan por $_POST o $_GET, bueno, por tu código tienes register_globals = on así que sería:

Código PHP:
 if($Enviar){
   
$insertSQL "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) values ('$fecha','$nombre','$ubicacion','$mail','$comentario','$imagen')";
   
mysql_select_db($database_conexion$conexion);
   
$rs=mysql_query($insertSQL);
 }

__________________
mais só os ignorantes e féridos e duros, imbéciles e escuros non nos entenden, non.
Visita Mi web
  #3 (permalink)  
Antiguo 12/07/2007, 12:26
 
Fecha de Ingreso: mayo-2006
Mensajes: 159
Antigüedad: 18 años, 6 meses
Puntos: 0
Pregunta Re: sentencia if para enviar form

Pues el envio es por $_POST

este es el form:
/////////////////////////////////////////////////////////////////////////////
<form action="indexb.php" method="post" enctype="multipart/form-data" name="form1" id="form1">
<table width="95%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="23%" height="20"><p class="Estilo1">Nombre/Nick:</p></td>
<td width="2%">&nbsp;</td>
<td width="75%"><input name="nombre" type="text" class="Estilo1" id="nombre2" size="50" /></td>
</tr>
<tr>
<td height="20" class="Estilo1">E-mail:</td>
<td>&nbsp;</td>
<td><input name="mail" type="text" class="Estilo1" id="mail" size="50" /></td>
</tr>
<tr>
<td height="20" class="Estilo1">Escribo desde: </td>
<td>&nbsp;</td>
<td><input name="ubicacion" type="text" class="Estilo1" id="ubicacion" size="50" /></td>
</tr>
<tr>
<td height="20" valign="top" class="Estilo1">Mensaje:</td>
<td>&nbsp;</td>
<td height="60" valign="top"><textarea name="comentario" cols="49" rows="4" class="Estilo1" id="comentario"></textarea></td>
</tr>
<tr>
<?php
$dia=date("Y-m-d");
$hora=date("H:i:s");

?>
<td><input name="fecha" type="hidden" id="fecha" value="<?php echo $dia.' '.$hora; ?>" />
<span class="Estilo17"> </span> </td>
<td>&nbsp;</td>
<td><input name="Submit" type="submit" class="Estilo1" value="Enviar" />
<input name="Submit2" type="reset" class="Estilo1" value="Borrar" /></td>
</tr>
</table>
</form>
////////////////////////////////////////////////////////////////////////////////

y este es el codigo para insertar:
//////////////
$insertSQL = "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) values ('$fecha','$nombre','$ubicacion','$mail','$comenta rio','$imagen')";
mysql_select_db($database_conexaqp, $conexaqp);
$rs=mysql_query($insertSQL);
////////////////////
Es lo que tengo ya probe con:

if($Enviar){
$insertSQL = "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) values ('$fecha','$nombre','$ubicacion','$mail','$comenta rio','$imagen')";
mysql_select_db($database_conexion, $conexion);
$rs=mysql_query($insertSQL);
}


Pero no me funciona..pues se inserta el registro cada vez que actualizo la pagina....


Gracias....kaos_Diego.
  #4 (permalink)  
Antiguo 12/07/2007, 12:38
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 19 años, 5 meses
Puntos: 23
Re: sentencia if para enviar form

Probaste con hacer algo así? o sea, de usar $_POST ?
Código:
If (isset($_POST['enviar'])){
   $insertSQL = "insert into mensajes (fecha, nombre, ubicacion, mail, comentario, imagen) values ('$fecha','$nombre','$ubicacion','$mail','$comentario','$imagen')";
   mysql_select_db($database_conexion);
   $rs=mysql_query($insertSQL,$conexion) or die("Error ". mysql_error());
 }
Saludos
  #5 (permalink)  
Antiguo 12/07/2007, 13:49
 
Fecha de Ingreso: mayo-2006
Mensajes: 159
Antigüedad: 18 años, 6 meses
Puntos: 0
Re: sentencia if para enviar form

acabo de probar, pero tampoco me funciona, el form sigue enviando al actualizar la pagina :S

Kaos_Diego.
  #6 (permalink)  
Antiguo 12/07/2007, 15:02
Avatar de carmagedon  
Fecha de Ingreso: junio-2005
Ubicación: Argentina
Mensajes: 794
Antigüedad: 19 años, 5 meses
Puntos: 23
Re: sentencia if para enviar form

Pues mira, primero haces la comprobacion de que $_POST['enviar'] no contenga nada, por lo tanto, si no contiene nada quiere decir que no se presiono el boton, o sea, que te muestre el formulario.
En caso contrario, es decir, ahi donde ubicas el Insert previamente pon la comprobacion identica que la anterior, pero sin el signo Negativo, o sea, que compruebe que $_POST['enviar'] sea correcto, o sea, haces una condicion diciendo si la variable enviar posee registros...
Si no entendiste, decime que trato de hacerlo con ejemplo...
Saludos
  #7 (permalink)  
Antiguo 12/07/2007, 15:29
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 74
Antigüedad: 21 años, 9 meses
Puntos: 0
Re: sentencia if para enviar form

Haber, ahi te va algo de volada, mas senciilo, por que me imagino que no tienes mucha experiencia en esto del envio de formularios, no te preocupes, a mi me paso lo mismo al principio.

ponte esto despues del form

<input type=hidden name=oculto value = 1>

en el php, que supongo debe estar mas arriba haces esto

oculto =$_request[oculto]

if (oculto == 1)
{
hacer el código php donde insertas la BD
}

te escribe todo el html de nuevo

Explanation: Es lo mismo que te esta diciendo carmagedon, pero con algo mas "tangible". Ahora bien, si haces un refresh de la página, con f5 (IE) por ejemplo, te pregunta reenviar, si das en ok, la variable oculto ya existe por lo tanto te reenvia el formulario en caso contrario cada que oprimas el enviar de tu formulario va a buscar esa variable.


Espero que te haya quedado claro esto

Saludos

nos leeemos... o nos vemos, si no es aqui, entoces, cuando estemos delante del trono

richer
__________________
Nos leemos...

Richer
Is 40:31 1Co 16:22
  #8 (permalink)  
Antiguo 12/07/2007, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Re: sentencia if para enviar form

Usa:
Código PHP:
if( !empty( $_POST['Submit'] ) ) {
  
// procesas tu insert

Saludos.
  #9 (permalink)  
Antiguo 12/07/2007, 16:55
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: sentencia if para enviar form

Al enviar un formulario por el metodo POST, no puedes evitar que al actualizar la pagina que proceso el formulario, se vuelva a enviar el formulario, con todas las variables seteadas, sin importar el codigo que le metas. Por lo tanto no tienes forma de saber si el request viene del formulario, al presionar el submit, o del uso del F5 (que tambien enviara el valor del submit, los campos ocultos y todo)...

La solucion? Lo que yo hago es, procesar el formulario, y en vez de enviar algo al navegador (mostrar contenido HTML) en esa misma pagina, abro otra, o en su defecto la misma, pero la vuelvo a abrir, usando un header('Location: ...');.

De esta forma, la pagina que proceso el formulario no queda registrada en el navegador, ya que no envio ningun tipo de contenido a el, sino que se proceso internamente en el servidor. Por eso, como no queda registro en el navegador, éste no podra volver a enviar los datos del formulario.

Lo que hago es algo asi:

Formulario:
Código HTML:
<form action="Submit.php" method="post">
...
<input type="Submit" name="Submit" value="Submit">
</form> 
Submit.php
Código PHP:
<?php[/b]
if(
$_SERVER['REQUEST_METHOD'] == "post") {
// haces lo que tengas que hacer con el formulario, MySQL, etc...
header("Location: Submit.php");
exit;
}
 
echo 
"Se ha enviado exitosamente el formulario. Gracias!";
 
?>
Si el usuario presiona F5 cuando se le muestra el mensaje de confirmacion, como el request no fue un form con POST, sino un header-Location, se volvera a mostrar el mensaje de confirmacion, mas no se procesara nada mas...

Un saludo,
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

SíEste tema le ha gustado a 1 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 21:32.