Foros del Web » Programando para Internet » PHP »

evitar que el formulario se envie solo

Estas en el tema de evitar que el formulario se envie solo en el foro de PHP en Foros del Web. Hola, estoy haciendo un miniblog, una cosita chiquita con comentarios que se suben a una base de datos, y casi todo funciona perfecto menos el ...
  #1 (permalink)  
Antiguo 25/04/2008, 06:33
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 20 años, 2 meses
Puntos: 0
evitar que el formulario se envie solo

Hola, estoy haciendo un miniblog, una cosita chiquita con comentarios que se suben a una base de datos, y casi todo funciona perfecto menos el hecho de que cada vez que entro a la página el formulario se activa y agrega un registro en blanco en la base de datos.
Todos los PHP están dentro de ver.php (formulario html y el php que lo procesa)
El PHP es
Código PHP:
<?php 
$notaid 
$_POST['id'];
$nombre_vis $_POST['nombre_vis']; 
$mail_vis $_POST['mail_vis']; 
$coment $_POST['coment'];


mysql_query("insert into comentarios (notaid, nombre_vis, mail_vis, coment, fecha) VALUES ('".$id."','".$nombre_vis."','".$mail_vis."','".$coment."')") or die ("error:\n".mysql_error());

 
?>
y el html

Código:
<form action="ver.php?id=<? echo $id; ?>" method="post" name="formulario" target="_self">
  <table width="500" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="200">&nbsp;</td>
      <td><input name="id" type="hidden" value="<?php echo $id; ?>" />
        tu nombre<br>
      <input type="text" name="nombre_vis" value="<? echo @$_POST["nombre_vis"] ?>"size="60"></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>tu e-mail<br><input type="text" name="mail_vis" value="<? echo @$_POST["mail_vis"] ?>"size="60"></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>tu comentario<br>
        <textarea name="coment" cols="60" rows="5" value="<? echo @$_POST["coment"] ?>"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input name="Submit" type="submit" class="cajatexto1" id="submit" value="Enviar comentario">
      &nbsp;
<input type="reset" value="Cancelar"></td>
    </tr>
  </table>
</form>
Viendo que el formulario se enviaba solo le agrege un IF y quedo asi

Código PHP:
<?php if ($Submit){
$notaid $_POST['id'];
$nombre_vis $_POST['nombre_vis']; 
$mail_vis $_POST['mail_vis']; 
$coment $_POST['coment'];

mysql_query("insert into comentarios (notaid, nombre_vis, mail_vis, coment, fecha) VALUES ('".$id."','".$nombre_vis."','".$mail_vis."','".$coment."')") or die ("error:\n".mysql_error());
}
else { 
?>
y el html queda asi:

Código:
<form action="ver.php?id=<? echo $id; ?>" method="post" name="formulario" target="_self">
  <table width="500" border="0" cellpadding="0" cellspacing="0">
    <tr> 
      <td width="200">&nbsp;</td>
      <td><input name="id" type="hidden" value="<?php echo $id; ?>" />
        tu nombre<br>
      <input type="text" name="nombre_vis" value="<? echo @$_POST["nombre_vis"] ?>"size="60"></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>tu e-mail<br><input type="text" name="mail_vis" value="<? echo @$_POST["mail_vis"] ?>"size="60"></td>
    </tr>
    <tr> 
      <td>&nbsp;</td>
      <td>tu comentario<br>
        <textarea name="coment" cols="60" rows="5" value="<? echo @$_POST["coment"] ?>"></textarea></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td><input name="Submit" type="submit" class="cajatexto1" id="submit" value="Enviar comentario">
      &nbsp;
<input type="reset" value="Cancelar"></td>
    </tr>
  </table>
</form><? }
?>
de esa forma el formulario no se envia cuando entro en la página pero tampoco se envia cuando completo los datos y presiono Enviar comentario.
Hay otra forma de evitar que se inserten datos en blanco o me esta faltando algo en la comprobación?
gracias y buen día
  #2 (permalink)  
Antiguo 25/04/2008, 06:41
 
Fecha de Ingreso: octubre-2006
Mensajes: 32
Antigüedad: 18 años, 1 mes
Puntos: 0
Re: evitar que el formulario se envie solo

Hola!!.

Si pones el php insertar en la misma pagina y haces un submit se vuelve a cargar la pagina por eso te mete registros en blanco. Lo que podrias hacer es una nueva pagina que se llamara insertarregistro.php que tenga el codigo php de insertar y en esta pagina un if que te compruebe si el boton que tu has pulsado sea el de guardar los datos y si es así que te ponga en una variable por ejemplo $accion="insertarregitro.php" y en el form
<form name="ficha" action='<?php echo $accion; ?>' method="get"> para llamar a la pagina de guardar.

Asi solo te ejecutara el insertar cuando tu pulses el boton.

Espero que te sirva de ayuda.
  #3 (permalink)  
Antiguo 25/04/2008, 09:51
 
Fecha de Ingreso: diciembre-2004
Mensajes: 163
Antigüedad: 19 años, 11 meses
Puntos: 2
Re: evitar que el formulario se envie solo

si pones if($Submit) tienes que enviar una variable que exista para que se envie el formulario, lo que debes hacer es poner:

Código PHP:
<?php if (isset($_POST['Submit'])){
$notaid $_POST['id'];
$nombre_vis $_POST['nombre_vis']; 
$mail_vis $_POST['mail_vis']; 
$coment $_POST['coment'];

mysql_query("insert into comentarios (notaid, nombre_vis, mail_vis, coment, fecha) VALUES ('".$id."','".$nombre_vis."','".$mail_vis."','".$coment."')") or die ("error:\n".mysql_error());
}
else { 
?>
eso deberia funcionar.
  #4 (permalink)  
Antiguo 25/04/2008, 12:39
 
Fecha de Ingreso: agosto-2004
Mensajes: 113
Antigüedad: 20 años, 2 meses
Puntos: 0
Re: evitar que el formulario se envie solo

Gracias Darkmasterr, era justo lo que faltaba y no se como se me paso si en los demás formularios lo tengo asi.
Saludos
Germán
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 21:59.