Foros del Web » Programando para Internet » PHP »

formulario dos acciones

Estas en el tema de formulario dos acciones en el foro de PHP en Foros del Web. tengo un formulario con dos botones del tipo submit, el formulario realiza la accion envio , index.php?accion=envio, pero yo necesito que cuando haga click en ...
  #1 (permalink)  
Antiguo 05/04/2005, 07:26
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
formulario dos acciones

tengo un formulario con dos botones del tipo submit, el formulario realiza la accion envio, index.php?accion=envio, pero yo necesito que cuando haga click en el boton enviar que realice la accion "enviar", index.php?accion=enviar, y cuando haga click en el otro boton (vista previa) me realice la accion "previa" index.php?accion=previa, quisiera saber de que forma se pueden hacer esto

se supone que esas acciones estarían dentro de la otra accion y se redireccionaría a una u otra según el botón presionado
__________________
:aplauso: www.aponlinevillaguay.com.ar :aplauso:

Cita:
Iniciado por alguien
El arca de Noé fue hecha por principiantes, el Titanic por "profesionales".
  #2 (permalink)  
Antiguo 05/04/2005, 07:33
Avatar de jmn2k1  
Fecha de Ingreso: noviembre-2001
Ubicación: Buenos Aires...
Mensajes: 489
Antigüedad: 22 años, 5 meses
Puntos: 2
Bueno, ya casi lo tenes...

Con el action en "accion=envio" usas el submit (la opcion default) y en el boton de la otra accion pone algo como:

onclick="document.forms["Tu_Form"].action='bla.bla?action=previa';document.forms["Tu_Form"].submit()"

De esta forma, al hacer click en el boton cambias el action del formulario y lo envias...
__________________
JmN
  #3 (permalink)  
Antiguo 05/04/2005, 16:25
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
no

no pude hacerlo fun cionar a eso, no podría pasarme alguien algo hecho con php?
__________________
:aplauso: www.aponlinevillaguay.com.ar :aplauso:

Cita:
Iniciado por alguien
El arca de Noé fue hecha por principiantes, el Titanic por "profesionales".
  #4 (permalink)  
Antiguo 05/04/2005, 17:14
 
Fecha de Ingreso: abril-2005
Mensajes: 60
Antigüedad: 19 años
Puntos: 0
Lo primero que tienes que hacer es ponerle el mismo nombre a los submit, pero con diferentes valores, luego de la acción en el archivo nombre.php haces un if así (nombre del submit == Valor1) o ( nombre del submit == Valor2) y digitas el código dependiendo del submit presionado.
  #5 (permalink)  
Antiguo 05/04/2005, 17:30
Avatar de fermar21  
Fecha de Ingreso: marzo-2004
Ubicación: San Nicolas - Bs. As.
Mensajes: 294
Antigüedad: 20 años
Puntos: 0
De acuerdo

Hola, Esta es la forma en que yo lo hice una vez

Creas los dos botones submit:
Código HTML:
<input type="submit" value="Previsualizar" name="pre">
<input type="submit" value="Enviar" name="env"> 
En el archivo que pusiste en el action del form (digamos procesa.php) lees los valores de los botones asi:
Código PHP:
$enviar=$_POST["env"];
$previsualizar=$_POST["pre"]; 
Y luego pones:
Código PHP:
if ($enviar!="")
   {
    
Codigo de enviar
   
}
if (
$previsualizar!="")
  {
  
Codigo de previsualizar
  

Se entendio??

Saludos
__________________
Fernando Marinzulich
Programador Web (PHP/MySQL/Jquery)
  #6 (permalink)  
Antiguo 05/04/2005, 20:41
Avatar de satake  
Fecha de Ingreso: julio-2004
Mensajes: 140
Antigüedad: 19 años, 8 meses
Puntos: 0
no

probé el código que me diste y no me funciona, me muestra la pantalla en blanco sin hacer absolutamente nada, alguien sabe como hacerlo con javascript con un codigo diferente al primero que me pasaron?
__________________
:aplauso: www.aponlinevillaguay.com.ar :aplauso:

Cita:
Iniciado por alguien
El arca de Noé fue hecha por principiantes, el Titanic por "profesionales".
  #7 (permalink)  
Antiguo 06/04/2005, 03:37
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Las tres formas que te han indicado son correctas...

- En el primer caso te sugieren cambiar el action del formulario entonces tendrías una página enviar.php y otra previa.php.
- En el segundo caso te sugieren poner el mismo name del botón con diferente value.. entonces tendrías una sola página y tendrías que emplear algo como:
Código PHP:
<?
if($_POST['nombre_del_submit']=="envia"){
   echo 
"Inserta tu código a enviar";
} elseif(
$_POST['nombre_del_submit']=="previo"){
   echo 
"Acá la vista previa";
}
?>
- En el tercer caso es casi lo mismo que el segundo... solo dar diferente name a los botones y:
Código PHP:
<?
if(isset($_POST['boton_envia'])) {
     echo 
"Código para enviar";
} elseif(isset(
$_POST['boton_previo'])){
     echo 
"Código vista previa";
}
?>
... no hay mayor ciencia... si te apareció en blanco es porque no estás imprimiendo...

Sugiero algo más... depende de lo que hagas con "enviar" (no lo dices)... puedes crear un código que sea útil para ambos casos... por ejemplo es común que para enviar un mail en HTML vayas contruyendo una variable con dicho contenido... entonces puedes hacer todo esto antes verificar la accion a hacer (enviar ó mostrar) ... y simplemente mandar ó imprimir esa variable construida... ejemplo:
Código PHP:
<?
$contenido
="<html><head></head><body><b>Nombre:</b> ".$_POST['nombre']."<br></body></html>";

if(
$_POST['boton']=="mostrar") echo $contenido;
elseif(
$_POST['boton']=="enviar"mail("correo"$contenido, ...);
Así no tendrías dos códigos para cada caso... ... creo esta perfectamente claro todo... quizá te convenga buscar en el foro para ver otros casos y te quede más claro ... incluso creo hay algo en las FAQ.. pero ahora sí no estoy seguro .

Suerte!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 06/04/2005 a las 03:39
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.
Tema Cerrado




La zona horaria es GMT -6. Ahora son las 16:17.