Foros del Web » Programando para Internet » PHP »

Realizar dos acciones con solo Submit

Estas en el tema de Realizar dos acciones con solo Submit en el foro de PHP en Foros del Web. Desarrollo un sitio web, en donde se dan cursos a distancia. La gente entra elije el curso y mediante un boton de comprar es dirigido ...
  #1 (permalink)  
Antiguo 10/03/2017, 18:04
 
Fecha de Ingreso: febrero-2011
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Realizar dos acciones con solo Submit

Desarrollo un sitio web, en donde se dan cursos a distancia. La gente entra elije el curso y mediante un boton de comprar es dirigido a DineroMail (Plataforma de pagos), para concretar la compra.
La informacion sobre el producto y su costo es enviado a traves de un Form mediante POST.
En la pagina del curso que la persona decide tomar, hay tres formularios con un boton cada uno (todos dirigen a DineroMail), siendo la diferencia el precio en cada uno ya que se ofrecen diferentes descuentos segun la antelacion con la que se realiza la compra. En cada formulario estan los campos ocultos que contienen la informacion a enviar (precio, nombre de curso, y datos correspondientes a la cuenta en DineroMail)
Hasta aqui todo bien, funciona. La gente elige el curso y luego uno de los tres botones para comprar y todo bien.

Peroooo, necesito que antes de que se realice el envio de los datos a traves de POST, se realice una acción mas. Necesito que se envie un mail, con dos datos extras, Nombre y Mail del comprador. Estos dos datos serian obtenidos a traves de un cuarto formulario. La informacion aqui pedida seria compartida con cualquier de los otros tres formularios (compra especifica) segun elija la persona.

Resumiendo, el funcionamiento deberia ser el siguiente: la persona llega a la pagina del curso, completa los datos (Nombre y Mail) y elije un boton de compra (de los tres que hay) de acuerdo a la antelacion con la que compra el curso. Cuando la persona presiona el boton de comprar se deberia enviar a una dirección de mail los datos Nombre y Mail, y luego enviar mediante POST los datos correspondientes a DineroMail.
  #2 (permalink)  
Antiguo 11/03/2017, 03:15
 
Fecha de Ingreso: noviembre-2003
Ubicación: Zaragoza, España
Mensajes: 1.257
Antigüedad: 20 años, 5 meses
Puntos: 154
Respuesta: Realizar dos acciones con solo Submit

Hola galloclaudio,

Tal como lo planteas no se puede hacer, es decir, no puede haber dos action en un formulario.

Como idea, podrías usar un script intermedio que envíe el e-mail y seguidamente redirija a DineroMail.

Espero que te sirva...
  #3 (permalink)  
Antiguo 11/03/2017, 03:22
 
Fecha de Ingreso: julio-2015
Mensajes: 85
Antigüedad: 8 años, 8 meses
Puntos: 4
Respuesta: Realizar dos acciones con solo Submit

Podrias hacerlo mediante una llamada ajax con javascript, el problema es que realentizarias el proceso porque hasta que esa peticion ajax no te retorne si todo ha ido bien o mal no podras enviar el formulario, pero seria tan sencillo como atacharte al evento onsubmit y cuando este se lance cortas en envio del formulario y mandas tu peticion asincrona y cuando tengas la respuesta ya lanzas el formulario.
  #4 (permalink)  
Antiguo 12/03/2017, 09:01
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Realizar dos acciones con solo Submit

Personalmente no le veo el problema en hacer eso, antes de enviar el formulario puedes hacer todo lo que tu desees.

Solo solo pon en action de tu formulario, un php tuyo que envie el correo, como tienes los datos del formulario guardados en $_POST, lo único que faltaria es enviarlos DineroMail.

Y si no te gusta ese método, hazlo mediante ajax, tampoco te afectará tanto el tiempo de envio del formulario.
  #5 (permalink)  
Antiguo 13/03/2017, 08:29
 
Fecha de Ingreso: febrero-2011
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Realizar dos acciones con solo Submit

Gracias a los tres, entiendo la idea que me plantean, pero lamentablemente me falta un poco de conocimiento para llevarlo a la práctica. Me podran dar un ejemplo (codigo) para poder llevarlo a mi caso?. Gracias
  #6 (permalink)  
Antiguo 13/03/2017, 08:46
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Realizar dos acciones con solo Submit

Cita:
Iniciado por galloclaudio Ver Mensaje
Gracias a los tres, entiendo la idea que me plantean, pero lamentablemente me falta un poco de conocimiento para llevarlo a la práctica. Me podran dar un ejemplo (codigo) para poder llevarlo a mi caso?. Gracias
Como lo digo yo sería algo así:

Código HTML:
Ver original
  1. <form action="archivo.php" method="post">
  2. "tus campos"
  3. <button type="submit" name="nombreboton">Pagar</button>
  4. </form>

Código PHP:
Ver original
  1. if(isset($_POST['nombreboton'])) {
  2.     // código necesario para enviar correo agarrando los datos $_POST necesarios
  3.     $mail = mail(...);
  4.  
  5.     if($mail) {
  6.           // código para enviar los datos $_POST a DineroMail
  7.           $DM = realizarPago($_POST);
  8.     }
  9. }
  10.  
  11. function realizarPago($datos) {
  12.     // aquí puedes enviar los datos a DineroMail realizando la construcción de la URL manualmente en caso de que DineroMail te permita enviar los a la URL usando GET.
  13.  
  14.    // de lo contrario, utiliza la API de DineroMail para realizar la acción
  15. }


API Dinero Mail mediante PHP
https://github.com/dineromail/Dinero...entacion%20PHP
  #7 (permalink)  
Antiguo 13/03/2017, 13:35
 
Fecha de Ingreso: febrero-2011
Mensajes: 18
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: Realizar dos acciones con solo Submit

He tomado el siguiente rumbo, dado mis limitaciones de conocimiento, por lo que no descarto ninguna de las otras opciones que me proponen, pero si me las detallan mas seria mejor para mi.

He hecho lo siguiente:
Código HTML:
<head>
<script>
function enviar_formulario(){
   document.formulario1.submit();
   document.formulario2.submit();
}

</script> 
</head>

<body>
    <form name="formulario1" id="form" action="consultas.php" method="post" enctype="multipart/form-data">
     Nombre y apellido <input name="nombre" type="text" id="nombre"  required="required"  />
     Mail <input name="email" type="text" id="email" required="required" />
    </form>



<form action="https://checkout.dineromail.com/CheckOut" method="post" name="formulario2">
                      <input type="hidden" name="merchant" value="aaaaaaa" />
                      <input type="hidden" name="country_id" value="1" />
                      <input type="hidden" name="payment_method_available" value="all" />
                      <input type="hidden" name="item_name_1" value="aaaaaaa" />
                      <input type="hidden" name="item_quantity_1" value="1" />
                      <input type="hidden" name="item_ammount_1" value="100" />
                     </form>

<a href="javascript:enviar_formulario()">Comprar el curso</a>

</body> 
Código PHP:
<?php
if(isset($_POST['email'])) {

// Debes editar las próximas dos líneas de código de acuerdo con tus preferencias
$email_to "[email protected]";
$email_subject "Contacto desde el sitio web";

// Aquí se deberían validar los datos ingresados por el usuario
if(!isset($_POST['nombre']) ||
!isset(
$_POST['email'])) {

echo 
"<b>Ocurrió un error y el formulario no ha sido enviado. </b><br />";
echo 
"Por favor, vuelva atrás y verifique la información ingresada<br />";
die();
}

$email_message "Detalles del formulario de contacto:\n\n";
$email_message .= "Nombre: " $_POST['nombre'] . "\n";
$email_message .= "E-mail: " $_POST['email'] . "\n";


// Ahora se envía el e-mail usando la función mail() de PHP
$headers 'From: '.$email_from."\r\n".
'Reply-To: '.$email_from."\r\n" .
'X-Mailer: PHP/' phpversion();
@
mail($email_to$email_subject$email_message$headers);

}
?>

Pero no funciona. El formulario 1, nunca es enviado, y si llega a la pagina de Dinero Mail con la informacion.
  #8 (permalink)  
Antiguo 13/03/2017, 18:22
 
Fecha de Ingreso: julio-2014
Mensajes: 334
Antigüedad: 9 años, 9 meses
Puntos: 30
Respuesta: Realizar dos acciones con solo Submit

Te recomiendo que lo hagas como te aconsejo hasta que alguien lo haga de una mejor manera. Si estas aprendiendo, lo mejor es seguir los consejos en vez de hacer chapuzas (sin ofender) que terminara en errores uno detras de otro. Cuando nosotros te aconsejamos una manera de hacerlo es para ahorrarte fallos y para que el código sea el menor posible, ya que cuantas menos lineas de codigo, mas limpio y menos posibilidades a fallar.

Si se enviase el formulario1 aún tendrias mas fallos. Pq el php tiene alguno.

Tu formulario1 se envia pero lo estas seteando como formulario de datos y eso solo se usa para enviar archivos, asi que puedes borrar el atributo "enctype" del formulario 1 para que pueda ser procesado.

En php los issets, tal y como los tienes te van a dar problemas en cuanto envies el formulario sin un correo, empezando por el primero, tal cual esta siempre realizara el proceso entero porque los campos se envian aunque esten vacios con lo cual el resultado de isset() siempre será verdadero. Tienes que realizar el primer isset al boton no a un campo.

Etiquetas: acciones, formulario, submit
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 13:03.