Foros del Web » Programando para Internet » PHP »

Problema con distintos botones en el mismo formulario

Estas en el tema de Problema con distintos botones en el mismo formulario en el foro de PHP en Foros del Web. Hola a todos, voy directo al grano para no perder tiempo... Ya había posteado este tema antes, pero lo voy a rectificar con lo que ...

  #1 (permalink)  
Antiguo 29/04/2011, 05:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Problema con distintos botones en el mismo formulario

Hola a todos, voy directo al grano para no perder tiempo...

Ya había posteado este tema antes, pero lo voy a rectificar con lo que tengo ahora, a ver si alguien me puede echar una mano...

Resumiendo, es un formulario de reserva que, además, permite calcular el precio de la reserva antes de ser enviado por e-mail...

El problema que tengo es que, cuando le doy al botón calcular, en vez de mostrarme el precio final en el campo que he habilitado para ello, me manda directamente a la página de agradecimiento.

Por otro lado, el mail lo manda perfectamente excepto con el campo del precio, les dejo los códigos por si alguien me puede ayudar...

Igual el codigo php está un poco desordenado porque es el fruto de dos php distintos, un formulario de contacto y otro de calculo de precios... espero que no sea muy difícil de entender :)


el html

Código HTML:
<table width="50%" border="0">

<form action="formB.php" method="post">
  <tr>
    <td><label>Nombre:</label></td>
    <td><input id="nombre" class="inputForm" name="nombre" type="text" /></td>
  </tr>
  <tr>
    <td><label>Teléfono:</label></td>
    <td><input id="telefono" class="inputForm" name="telefono" type="text" /> </td>
  </tr>
  <tr>
    <td><label>E-mail:</label></td>
    <td><input id="email" class="inputForm" name="email" type="text" /> </td>
  </tr>
  <tr>
    <td><label>Tipo de curso:</label></td>
    <td><select id="field1" name="curso"><option>Elige tipo de curso</option> <option value="basico">Curso Básico (20 clases, por semana, de 45 minutos cada una)</option> <option value="intensivo">Curso Intensivo (30 clases, por semana, de 45 minutos cada una)</option> </select></td>
  </tr>
  <tr>
    <td><label>Tipo de alojamiento:</label></td>
    <td><select id="field2" name="alojamiento"><option>Elige tipo de alojamiento</option> <option value="compartido">Compartido (Habitación compartida de 2 ó 3 personas)</option> <option value="individual">Individual (Habitación individual)</option> <option value="sinalojamiento">Sin alojamiento</option> </select></td>
  </tr>
  <tr>
    <td><label>Número de semanas:</label></td>
    <td><input id="field3" class="semanas" name="semanas" size="20" type="text" /></td>
  </tr>
  <tr>
    <td><label>Fecha de reserva:</label></td>
    <td><select id="field4" name="temporada"> <option>Elige la fecha de llegada</option> <option value="baja">Temporada baja (Del 01/01/2011 al 31/05/2011)</option> <option value="media">Temporada Media (Del 01/09/2011 al 31/12/2011)</option> <option value="alta">Temporada Alta (Del 01/06/2011 al 30/08/2011)</option> </select></td>
  </tr>
  <tr>
    <td><input class="inputForm3" name="enviar" type="submit" value="Calcula el precio de tu curso" /></td>
    <td><input type="text" value="<?php echo $_GET["resultado"]?>" size="20"  name="Total" id="Total" readonly="readonly"/></td>
  </tr>
  <tr>
    <td><label>Deja tu comentario:</label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Caja comentario</td>
    <td><textarea id="mensaje" class="inputForm2" name="mensaje"></textarea></td>
  </tr>
  <tr>
    <td>Haz la reserva</td>
    <td><input class="inputForm3" name="enviar" type="submit" value="Enviar reserva" /></td>
  </tr>
 </form>
</table> 
y el php

Código PHP:

<?php 
$precioalojamiento
=0;
$preciocurso=0;
$total=0;
$curso=$_POST['curso'];
$alojamiento=$_POST['alojamiento']; 
$semanas=$_POST['semanas'];
$temporada=$_POST['temporada']; 


function 
calculoPrecios($tipo$alojamiento$semanas$temporada){
   
$precioCurso = array('basico' => array('130' '320' '510'),
                           
'intensivo' => array('190' '470' '695'));
   
$precioAlojamiento  = array('compartido' => array('100' '300' '450'),
                           
'individual' => array('210' '370' '580'));
 
   
$coefiTempora 2;
   if(
$temporada == "baja")
       
$coefiTempora 0;
   if(
$temporada == "media")  
       
$coefiTempora 1;
      
  
$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas;
      
  return 
$precioTotal ;    
}

header("Location: formB.html?resultado=$precioTotal");


$mail='[email protected]'

$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas;
$nombre $_POST['nombre']; 
$telefono $_POST['telefono']; 
$email $_POST['email'];

$mensaje $_POST['mensaje']; 

$thank="gracias.html"


$message 
nombre:"
.$nombre.
telefono:"
.$telefono.
email:"
.$email.
curso:"
.$curso."
alojamiento:"
.$alojamiento."
semanas:"
.$semanas."
temporada:"
.$temporada."
precio:"
.$precioTotal."
mensaje:"
.$mensaje."
"




if (
mail($mail,"Mail recibido",$message)) 
Header ("Location: $thank" ); 


?>

A ver si alguien me puede echar una mano con esto, le estaría muy agradecido...

Un saludo

Última edición por carlos2; 29/04/2011 a las 06:46 Razón: cambio de texto
  #2 (permalink)  
Antiguo 29/04/2011, 08:29
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con distintos botones en el mismo formulario

Sucede que en el mismo flujo del script haces dos redirecciones header(), y por lo tanto solo funciona la última.

Si la primer redirección la puedes condicionar, y agrupar dentro de un bloque sería excelente.

Además deberías agregar la instrucción exit después de dicho header(), para finalizar la ejecución del script hasta ese punto.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 29/04/2011, 08:46
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

muchas gracias pateketruke!

la vedad es que soy bastante nuevo en esto del php y voy aprendiendo y resolviendo las dudas gracias a vuestra ayuda...

suponía que el problema está donde comentas, pero no sé muy bien cómo hacer lo que comentas de condicionarlo todo en un bloque...

me podrías explicar un poco mejor??

muchas gracias por tu tiempo!
  #4 (permalink)  
Antiguo 29/04/2011, 08:52
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con distintos botones en el mismo formulario

Un bloque condicionado es similar a esto:
Código PHP:
if (/* alguna condicion */)
{
  
// el procedimiento

Si no comprendes esto es porque necesitas estudiar primero programación general, te invito a documentarte.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #5 (permalink)  
Antiguo 29/04/2011, 09:04
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

El tema de los condicionales más o menos lo tengo claro, lo que dudo es en la condición en sí que he de ponerle. Sería algo así:

Código PHP:

<?php  
$precioalojamiento
=0
$preciocurso=0
$total=0
$curso=$_POST['curso']; 
$alojamiento=$_POST['alojamiento'];  
$semanas=$_POST['semanas']; 
$temporada=$_POST['temporada'];  


function 
calculoPrecios($tipo$alojamiento$semanas$temporada){ 
   
$precioCurso = array('basico' => array('130' '320' '510'), 
                           
'intensivo' => array('190' '470' '695')); 
   
$precioAlojamiento  = array('compartido' => array('100' '300' '450'), 
                           
'individual' => array('210' '370' '580')); 
  
   
$coefiTempora 2
   if(
$temporada == "baja"
       
$coefiTempora 0
   if(
$temporada == "media")   
       
$coefiTempora 1
       
  
$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas
       
  return 
$precioTotal 
     
   if (
/*no se que condicion poner aquí exactamente*/){
          
/*aquí pretendo que me muestre el resultado en un campo de texto*/
          
header("Location: formB.html?resultado=$precioTotal"); 
    }
    
    exit 
funtion;




$mail='[email protected]';  

$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas
$nombre $_POST['nombre'];  
$telefono $_POST['telefono'];  
$email $_POST['email']; 

$mensaje $_POST['mensaje'];  

$thank="gracias.html";  


$message "  
nombre:"
.$nombre."  
telefono:"
.$telefono."  
email:"
.$email."  
curso:"
.$curso.
alojamiento:"
.$alojamiento.
semanas:"
.$semanas.
temporada:"
.$temporada.
precio:"
.$precioTotal.
mensaje:"
.$mensaje.
"
;  



if (
mail($mail,"Mail recibido",$message))  
Header ("Location: $thank" );  


?>
  #6 (permalink)  
Antiguo 29/04/2011, 09:26
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con distintos botones en el mismo formulario

Mira, el detalle es que tu script hace dos cosas, así que la comparación debería servir para tomar una decisión sobre cual de los dos acciones ejecutar.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 29/04/2011, 09:36
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Cita:
Iniciado por carlos2 Ver Mensaje
El tema de los condicionales más o menos lo tengo claro, lo que dudo es en la condición en sí que he de ponerle.
Entonces paketetrueke tiene razón. Necesitas estudiar el concepto de condición.
Una cosa es saber la sintaxis y otra saber usarla. Para programar se necesitan las dos.

Cita:
Iniciado por pateketrueke Ver Mensaje
Si no comprendes esto es porque necesitas estudiar primero programación general, te invito a documentarte.
Supongo que lo que necesitas es abrir otra ventana aparte. Con lo cual el header con el location no te va a ser últil, porque no abre una ventana nueva, sino que coge la última ruta que le pasas, como ya te dijeron.
Podrías usar javascript para abrir otra ventana y después de eso el header para que actualize la página a la ruta que especifiques.

Si es que tiene que abrir uno cuando... pase X, sólo piensa... ¿Cuando debe ser? y ya tienes el if ¿NO?
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #8 (permalink)  
Antiguo 29/04/2011, 09:39
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

gracias IEKK, entonces con php no puedo hacer las dos acciones en la misma página, verdad?

Porque lo que yo necesito es que, en el mismo formulario, se pueda calcular el precio y después enviar el mail...

muchas gracias a los dos por la ayuda!!!
  #9 (permalink)  
Antiguo 29/04/2011, 09:40
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema con distintos botones en el mismo formulario

?¿ No entendí, ¡Espera espera que yo no dije eso!
Creo que ya te entendí xDD

Vamos a ver:

-El formulario llama al php.
-Obtienes los valores
-Llamas a la función que calcule los precios
-Después mandas el mail.

-Si lo que quieres esque mande el email si el precio sea por ejeplo != 0 pones el if y ya esta.

Código PHP:
<?php
function calculoPrecios($tipo$alojamiento$semanas$temporada){ 
   
$precioCurso = array('basico' => array('130' '320' '510'), 
                           
'intensivo' => array('190' '470' '695')); 
   
$precioAlojamiento  = array('compartido' => array('100' '300' '450'), 
                           
'individual' => array('210' '370' '580')); 
  
   
$coefiTempora 2
   if(
$temporada == "baja"
       
$coefiTempora 0
   if(
$temporada == "media")   
       
$coefiTempora 1
       
  
$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas
     
   if (
$precioTotal!=0){ // o la condicion que sea
       
enviarmail($precioTotal);
    }

}  

function 
enviarmail($precioTotal){ // se lo pasas por parámetro
$mail='[email protected]'

$nombre $_POST['nombre']; 
$telefono $_POST['telefono']; 
$email $_POST['email'];

$mensaje $_POST['mensaje']; 

$message 
nombre:"
.$nombre.
telefono:"
.$telefono.
email:"
.$email.
curso:"
.$curso."
alojamiento:"
.$alojamiento."
semanas:"
.$semanas."
temporada:"
.$temporada."
precio:"
.$precioTotal."
mensaje:"
.$mensaje."
"



$thank="gracias.html"
if (
mail($mail,"Mail recibido",$message)) 
Header ("Location: $thank" ); 

}
?>
Y si no, no entendí, pero vamos yo no dije que no se podía hacer junto, yo dije que si tu querías abrir dos ventanas xD
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 29/04/2011 a las 09:47
  #10 (permalink)  
Antiguo 29/04/2011, 09:48
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Perdona, que igual me he explicado mal.... La idea es la siguiente...

Es un formulario de reserva donde:

1º introducimos nombre, telefono y el e-mail
2º seleccionamos un tipo de curso, un tipo de alojamiento, el número de semanas y la temporada (fechas del curso)
3º damos al boton calcular y nos muestra el calculo en función de lo que hemos elegido en el punto 2, sin salir de la misma página donde está el formulario
4º damos al botón enviar, y nos manda un e-mail con todos los campos del formulario, tanto los del punto número 1 como los del punto número 2
5º nos abre la página de agradecimiento

me he quedado bloqueado en el condicional... glubs!
  #11 (permalink)  
Antiguo 29/04/2011, 09:51
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema con distintos botones en el mismo formulario

AMMMMMMMMMMMM pero eso es fácil hombre. ¿Por qué te complicas?
Haces dos formularios, incluso con uno.
Uno te manda al calcular el precio y lo llamas en la misma página.
En el otro coges el valor del input text y mandas el email y te cambia de ventana.

Si me das un momento... te muestro en php
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #12 (permalink)  
Antiguo 29/04/2011, 10:00
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Muchas gracias IEKK

Claro, pero así lo tengo y el php que se encarga de mandar el e-mail no me recoge las variables del primer formulario.... no se que estoy haciendo mal...

te muestro el código por si te sirve de ayuda...

Código PHP:

<table>
<tr>
  <td>
      <form action="" method="post">

curso
<select name="curso"  id="field1"  ><option  value="basico">Curso Básico</option><option  value="intensivo">Curso Intensivo</option></select>

alojamiento
<select name="alojamiento"  id="field2"  ><option  value="compartido">compartido</option><option  value="individual">individual</option><option  value="sinalojamiento">sin alojamiento</option></select>


semanas
<input type="text" value="" size="20"  name="semanas" id="field3" />

temporada
<select name="temporada"  id="field4"  ><option  value="baja">Enero-Junio</option><option  value="media">Junio-Octubre</option><option  value="alta">Octubre-Diciembre</option></select>


<input class="inputForm3" type="submit" name="enviar" value="calcular" /> 

</form>
  </td>
  <td>
  <?php 

$precioalojamiento
=0;
$preciocurso=0;
$total=0;
$curso=$_POST['curso']; //basico
$alojamiento=$_POST['alojamiento']; //compartido
$semanas=$_POST['semanas']; //2
$temporada=$_POST['temporada']; //baja

function calculoPrecios($tipo$alojamiento$semanas$temporada){
   
$precioCurso = array('basico' => array('130' '320' '510'),
                           
'intensivo' => array('190' '470' '695'));
   
$precioAlojamiento  = array('compartido' => array('100' '300' '450'),
                           
'individual' => array('210' '370' '580'));
 
   
$coefiTempora 2;
   if(
$temporada == "baja")
       
$coefiTempora 0;
   if(
$temporada == "media")  
       
$coefiTempora 1;
      
  
$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas;
      
  return 
$precioTotal ;    
}

//echo calculoPrecios($curso, $alojamiento, $semanas, $temporada);

 
echo '<h1>Total a pagar: '.calculoPrecios($curso$alojamiento$semanas$temporada).'</h1>';


?>
</td>
  </tr>

</table>

<table width="50%" border="0">

<form action="formB.php" method="post">
  <tr>
    <td><label>Nombre:</label></td>
    <td><input id="nombre" class="inputForm" name="nombre" type="text" /></td>
  </tr>
  <tr>
    <td><label>Teléfono:</label></td>
    <td><input id="telefono" class="inputForm" name="telefono" type="text" /> </td>
  </tr>
  <tr>
    <td><label>E-mail:</label></td>
    <td><input id="email" class="inputForm" name="email" type="text" /> </td>
  </tr>
  <tr>
    <td><label>Deja tu comentario:</label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Caja comentario</td>
    <td><textarea id="mensaje" class="inputForm2" name="mensaje"></textarea></td>
  </tr>
  <tr>
    <td>Haz la reserva</td>
    <td><input class="inputForm3" name="enviar" type="submit" value="Enviar reserva" /></td>
  </tr>
 </form>
</table>
y en formB.php tengo lo siguiente..

Código PHP:

<?php 

$curso
=$_POST['curso']; //basico
$alojamiento=$_POST['alojamiento']; //compartido
$semanas=$_POST['semanas']; //2
$temporada=$_POST['temporada']; //baja 
$preciototal=$_POST['preciototal'];

$mail='[email protected]'

$nombre $_POST['nombre']; 
$telefono $_POST['telefono']; 
$email $_POST['email'];

$mensaje $_POST['mensaje']; 

$thank="gracias.html"


$message 
nombre:"
.$nombre.
telefono:"
.$telefono.
email:"
.$email.
curso:"
.$curso."
alojamiento:"
.$alojamiento."
semanas:"
.$semanas."
temporada:"
.$temporada."
precio:"
.$precioTotal."
mensaje:"
.$mensaje."
"




if (
mail($mail,"Mail recibido",$message)) 
Header ("Location: $thank" ); 


?>
  #13 (permalink)  
Antiguo 29/04/2011, 10:02
Avatar de stramin  
Fecha de Ingreso: marzo-2008
Ubicación: Cubil felino
Mensajes: 1.652
Antigüedad: 16 años, 1 mes
Puntos: 336
Respuesta: Problema con distintos botones en el mismo formulario

en realidad si se puede...

a ver dime si estoy en lo correcto en cuanto a la secuencia de la página:

Hipotesis 1
  1. el usuario rellena los datos del formulario
  2. luego presiona "Enviar reserva" (por que el boton "calcular" no lo veo
  3. luego de esto se muestra el calculo como para que usuario revise que este todo bien (creo)
  4. por ultimo el usuario presiona "enviar" y se envía el correo.

Hipotesis 2
  1. el usuario rellena los datos del formulario
  2. luego presiona "Enviar reserva" (por que el boton "calcular" no lo veo
  3. luego de esto se envia el correo con los calculos.

en ambos casos si es posible lograrlo usando solo esa página :)
__________________
El objetivo de este foro es orientar al usuario como un favor y no como una obligación.

Yo soy de los que dan puntos por aporte :D
  #14 (permalink)  
Antiguo 29/04/2011, 10:06
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema con distintos botones en el mismo formulario

El tema es que le eches un ojito al manual de php. No lo digo a mal, sino para que así aprendas un poco más.
Te explico un poco la idea. No desarrollé la parte en la que validas que las las variables del post y el session sean correctas, pero eso es otra bobería.

-Cambié el action del formulario para que fuera la propia página.
-El boton calcular llama a la función calcularprecio, una vez calculado la variable la ponemos en el session.
-Si esa variable existe se añade en el input.
-El boton enviar llama a la función de enviar mail y redirecciona a otra página.

Es posible que tengas que adaptar algo, no sé, pero la idea es esa, y como ves todo junto, yo no dije quetenía que hacerse separado xD
Recuerda validar que haya un precio en el input antes de enviar el correo. Así que aún así deberás crear un IF, no te lo iba a hacer todo jejeje

Código PHP:
<?php
if (isset($_POST['calcular']))
{
    
    
//Recuerda validar aquí las variables para que no te hagan nda raro xD
    
$precioalojamiento=0;
    
$preciocurso=0;
    
$total=0;
    echo 
$tipo=$_POST['curso'];
    echo 
$alojamiento=$_POST['alojamiento']; 
    echo 
$semanas=$_POST['semanas'];
    echo 
$temporada=$_POST['temporada']; 

    function 
calculoPrecios($tipo$alojamiento$semanas$temporada){
       
$precioCurso = array('basico' => array('130' '320' '510'),
                               
'intensivo' => array('190' '470' '695'));
       
$precioAlojamiento  = array('compartido' => array('100' '300' '450'),
                               
'individual' => array('210' '370' '580'));
     
       
$coefiTempora 2;
       if(
$temporada == "baja")
           
$coefiTempora 0;
       if(
$temporada == "media")  
           
$coefiTempora 1;
          
      
$precioTotal=($precioCurso[$tipo][$coefiTempora]+$precioAlojamiento[$alojamiento][$coefiTempora])*$semanas;
      
$_SESSION['$precioTotal']=$precioTotal;       
    }
        
    
calculoPrecios($tipo$alojamiento$semanas$temporada); 
}
if (isset(
$_POST['calcular']))
{
    
//aqui recuerda validar que exista el post Total que sea numero y que sea como el session etc etc
    
    
$mail='[email protected]'
    
    
$precioTotal=$_SESSION['$precioTotal'];
    
$nombre $_POST['nombre']; 
    
$telefono $_POST['telefono']; 
    
$email $_POST['email'];
    
    
$mensaje $_POST['mensaje']; 
    
    
$thank="gracias.html"

    
$message 
    nombre:"
.$nombre.
    telefono:"
.$telefono.
    email:"
.$email.
    curso:"
.$curso."
    alojamiento:"
.$alojamiento."
    semanas:"
.$semanas."
    temporada:"
.$temporada."
    precio:"
.$precioTotal."
    mensaje:"
.$mensaje."
    "

    

    if (
mail($mail,"Mail recibido",$message)) 
    
header ("Location: $thank" ); 
}

?>

<table width="50%" border="0">

<form action="<?php $_SERVER['PHP_SELF'?>" method="post">
  <tr>
    <td><label>Nombre:</label></td>
    <td><input id="nombre" class="inputForm" name="nombre" type="text" /></td>
  </tr>
  <tr>
    <td><label>Teléfono:</label></td>
    <td><input id="telefono" class="inputForm" name="telefono" type="text" /> </td>
  </tr>
  <tr>
    <td><label>E-mail:</label></td>
    <td><input id="email" class="inputForm" name="email" type="text" /> </td>
  </tr>
  <tr>
    <td><label>Tipo de curso:</label></td>
    <td><select id="field1" name="curso"><option>Elige tipo de curso</option> <option value="basico">Curso Básico (20 clases, por semana, de 45 minutos cada una)</option> <option value="intensivo">Curso Intensivo (30 clases, por semana, de 45 minutos cada una)</option> </select></td>
  </tr>
  <tr>
    <td><label>Tipo de alojamiento:</label></td>
    <td><select id="field2" name="alojamiento"><option>Elige tipo de alojamiento</option> <option value="compartido">Compartido (Habitación compartida de 2 ó 3 personas)</option> <option value="individual">Individual (Habitación individual)</option> <option value="sinalojamiento">Sin alojamiento</option> </select></td>
  </tr>
  <tr>
    <td><label>Número de semanas:</label></td>
    <td><input id="field3" class="semanas" name="semanas" size="20" type="text" /></td>
  </tr>
  <tr>
    <td><label>Fecha de reserva:</label></td>
    <td><select id="field4" name="temporada"> <option>Elige la fecha de llegada</option> <option value="baja">Temporada baja (Del 01/01/2011 al 31/05/2011)</option> <option value="media">Temporada Media (Del 01/09/2011 al 31/12/2011)</option> <option value="alta">Temporada Alta (Del 01/06/2011 al 30/08/2011)</option> </select></td>
  </tr>
  <tr>
    <td><input class="inputForm3" name="calcular" type="submit" value="Calcula el precio de tu curso" /></td>
    <td><input type="text" value="<?php if( isset($_SESSION['$precioTotal']) ) echo $_SESSION['$precioTotal'];?>" size="20"  name="Total" id="Total" readonly="readonly"/></td>
  </tr>
  <tr>
    <td><label>Deja tu comentario:</label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Caja comentario</td>
    <td><textarea id="mensaje" class="inputForm2" name="mensaje"></textarea></td>
  </tr>
  <tr>
    <td>Haz la reserva</td>
    
    <td>
    <input class="inputForm3" name="enviar" type="submit" value="Enviar reserva" />
    </td>
  </tr>
 </form>
</table>
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(

Última edición por IEKK; 29/04/2011 a las 10:13
  #15 (permalink)  
Antiguo 29/04/2011, 10:18
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Hola Stramin, muchas gracias.... verás, la idea principal era la siguiente:

----ANTES----

- En un solo formulario para reservar unos cursos se da la siguiente hipótesis (te lo pongo en el orden en que aparecen los campo):

1º Ponemos nuestro nombre
2º Ponemos el teléfono
3º Ponemos el e-mail
4º Seleccionamos el tipo de curso
5º Seleccionamos el tipo de alojamiento
6º Introducimos el número de semanas que deseamos realizar el curso
7º Seleccionamos la temporada en la que vamos a asistir
8º Presionamos el botón calcular precio para sabes cuanto nos vamos a gastar (pero sin abandonar el formulario)
9º Ponemos algún comentario (opcional)
10º Presionamos el botón enviar para realizar la reserva
11º Nos aparece la página de agradecimiento

A nosotros nos tendría que llegar un mail con todos los datos que ha rellenado el usuario en el formulario.

----------------

Como aquí me he atascado, ya que al tener dos botones dentro del mismo formulario, cuando presiono uno u otro me ejecuta el script del php que termina enviando el mail. Si presiono el de calcular el mail no habría que enviarlo y sólo habría que mostrar el precio total... Por lo que he terminado haciéndolo de esta otra manera.....

-----DESPUÉS----

En una misma página php tengo dos formularios, uno para hacer el cálculo y otro para terminar de rellenar los datos personales y queda así

1º Seleccionamos el tipo de curso
2º Seleccionamos el tipo de alojamiento
3º Introducimos el número de semanas
4º Elegimos la temporada
5º Le damos a calcular, se ejecuta el script que hay en la página, y nos muestra el precio final

En otro formulario, dentro de la misma página,:

1º ponemos el nombre
2º ponemos el telefono
3º ponemos el e-mail
4º Dejamos algún comentario
5º presionamos el botón enviar que ejecuta el script de envio de mail que se encuentra en una segunda página php
6º abrimos la página de agradecimiento

-------------------------------------------------------

Esta última opción me funciona bien, pero el mail que recibo no me muestra las variables del primero formulario (curso, alojamiento, semanas, temporada y preciototal)

Y aquí me he quedado

-------------------------------------------------------

Me gustaría hacerlo como la opción que había pensado originalmente pero a mi me resulta más complicado por mis conocimientos sobre PHP...

Espero haberme explicado bien...

De nuevo muchas gracias a todos por vuestro tiempo y ayuda!!!
  #16 (permalink)  
Antiguo 29/04/2011, 10:31
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Hola IEKK, con tanta respuesta se me han colado tus dos últimos mensajes.....

De verdad que siento que al final se haya duplicado todo esto, me gustaría borrar uno de los dos topics pero no se como hacerlo.... Agradezco muchísimo tu ayuda.... voy a a seguir intentándolo, junto con la documentación, a ver que tal se me da....

Gracias de nuevo
  #17 (permalink)  
Antiguo 29/04/2011, 10:46
 
Fecha de Ingreso: abril-2011
Ubicación: Iquitos, Peru
Mensajes: 113
Antigüedad: 13 años
Puntos: 31
Respuesta: Problema con distintos botones en el mismo formulario

te recomiendo que en tu formulario tengas 2 botones, uno para calcular y otro para enviar. Los 2 con el tipe=button y con un evento onclick que te mande un action. En el caso del boton calcular te recomiendo que calcules en el mismo formulario, osea tu action que que sea la misma pagina del formulario, y en el boton enviar el action seria en u caso seria el formB.php donde haces el envio de email.
  #18 (permalink)  
Antiguo 29/04/2011, 12:47
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 8 meses
Puntos: 202
Respuesta: Problema con distintos botones en el mismo formulario

¿Has intentando poner mi código en un archivo php y probarlo? Lo que te pasé funciona. ¡No hay más! Sólo te quedaba validar las variables.
Si tienes alguna duda comentala, o dí si hay algo que no te funciona.

JMSystem vale que sí, eso mismo hice en el código que pasé, pero se ve que me tomé las molestias para nada.
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #19 (permalink)  
Antiguo 29/04/2011, 16:06
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Hola IEKK, gracias por tu preocupación y sobre todo por la ayuda que me estás prestando....

La verdad es que sí que lo he probado, pero me ha servido para darme cuenta de lo poco que sé realmente sobre todo esto ya que, aunque conozca la sintáxis, me cuesta interpretar el código y entender realmente porque hace una u otra cosa... está claro que soy bastante bruto con esto de la programación y tendré que esforzarme bastante más de aquí en adelante...

Tú código funciona bastante bien hasta el momento en que se intenta enviar el mail, que no lo hace... es decir... pongo el nombre, teléfono y el e-mail, luego elijo el curso, el alojamiento, el número de semanas y las fechas y cuando le doy a calcular me pone el resultado total en la caja de texto perfectamente, lo único es que me borra todos los campos que había puesto hasta ahora y me "pinta" las selecciones encima del formulario... y lo que te comentaba anteriormente, no consigo que envíe el mail....

He estado cambiando cosas pero no doy con ello.... me he frustrado un poco para serte sincero y he llegado a pensar si sería mejor hacer el cálculo con javascript (al fin y al cabo son unicamente operaciones aritméticas) y dejar el php unicamente para enviar el mail...

Estoy leyendo en manuales porque hay cosas que no entendía muy bien para que sirven, como lo del SESSION...

Voy a ir poco a poco a ver si avanzo y ya te iré contando, en cuanto lo tenga listo, lo publicaré aquí con comentarios para ver si le puede ser de ayuda a alguien...

Otra vez muchas gracias por toda la ayuda y molestia que te estás tomando... Eres muy generoso

Un saludo
  #20 (permalink)  
Antiguo 29/04/2011, 16:07
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Lo de validar los campos lo dejaré para una segunda parte cuando consiga que esto funcione correctamente!! :)
  #21 (permalink)  
Antiguo 30/04/2011, 19:29
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Bueno, tal y como había comentado, voy a postear aquí la solución al problema que plantee por si a alguien le puede servir de ayuda...

Finalmente he decidido realizar los cálculos con javascript y utilizar php unicamente para el envio del mail. Así me evito el problema de los dos botones, en el mismo formulario, apuntando al mismo php y, como los cálculos son sencillos, no tengo ningún problema de hacerlo con js. Además, creo que todo mucho más ordenado y es más fácil de entender para novatos como yo....

Por un lado, tendría el formulario en html...

Código HTML:
<table width="50%" border="0">

<form name="formReserva" action="envio.php" method="post">
  <tr>
    <td><label>Nombre:</label></td>
    <td><input id="nombre" class="inputForm" name="nombre" type="text" /></td>
  </tr>
  <tr>
    <td><label>Teléfono:</label></td>
    <td><input id="telefono" class="inputForm" name="telefono" type="text" /> </td>
  </tr>
  <tr>
    <td><label>E-mail:</label></td>
    <td><input id="email" class="inputForm" name="email" type="text" /> </td>
  </tr>
  <tr>
    <td><label>Tipo de curso:</label></td>
    <td><select id="curso" name="curso">
                  <option>Elige tipo de curso</option> 
                  <option value="basico">Curso Básico</option> 
                  <option value="intensivo">Curso Intensivo </option>
             </select>
    </td>
  </tr>
  <tr>
    <td><label>Tipo de alojamiento:</label></td>
    <td><select id="alojamiento" name="alojamiento">
                <option>Elige tipo de alojamiento</option>
                <option value="compartido">Compartido</option>
                <option value="individual">Individual</option>
                <option value="sinalojamiento">Sin alojamiento</option> 
             </select>
      </td>
  </tr>
  <tr>
    <td><label>Número de semanas:</label></td>
    <td><input id="semanas" name="semanas" size="20" type="text" /></td>
  </tr>
  <tr>
    <td><label>Fecha de reserva:</label></td>
    <td><select id="temporada" name="temporada"> 
              <option>Elige la fecha de llegada</option> 
              <option value="baja">Temporada baja</option> 
              <option value="media">Temporada Media</option> 
              <option value="alta">Temporada Alta</option>
           </select>
      </td>
  </tr>
  <tr>
    <td><input type="button" name="calcular" onclick="calcula();" value="Calcula el precio de tu curso" /></td>
    <td><input type="text" value="" size="20"  name="total" id="total" readonly="readonly"/></td>
  </tr>
  <tr>
    <td><label>Deja tu comentario:</label></td>
    <td>&nbsp;</td>
  </tr>
  <tr>
    <td>Caja comentario</td>
    <td><textarea id="mensaje" name="mensaje"></textarea></td>
  </tr>
  <tr>
    <td>Haz la reserva</td>
    
    <td>
    <input name="enviar" type="submit" value="Enviar reserva" />
    </td>
  </tr>
 </form>
</table> 
por otro lado, el código javascript para realizar el cálculo

Código Javascript:
Ver original
  1. function calcula(){  
  2.    
  3.  
  4. if(document.formReserva.curso.value == "basico"){  
  5.    var tipoCurso = "cursoBasico";  
  6. }else{  
  7.    var tipoCurso = "cursoIntensivo";  
  8. }  
  9.  
  10. if(tipoCurso == "cursoBasico"){  
  11.    var preciosCurso = [12,110,147];  
  12.    } else {  
  13.    var preciosCurso = [17,75,210];  
  14.    }  
  15.  
  16.  
  17. if(document.formReserva.alojamiento.value == "compartido"){  
  18.    var tipoAlojamiento = "alojamientoCompartido";  
  19. }else if(document.formReserva.alojamiento.value == "individual"){  
  20.    var tipoAlojamiento = "alojamientoIndividual";  
  21. }else{
  22.     var tipoAlojamiento = "noAlojamiento";
  23.     }  
  24.      
  25. if(tipoAlojamiento == "alojamientoCompartido"){  
  26.    var preciosAlojamiento = [4,8,13];  
  27.    } else if(tipoAlojamiento == "alojamientoIndividual") {  
  28.    var preciosAlojamiento = [9,16,27];  
  29.    }else if(tipoAlojamiento == "noAlojamiento"){  
  30.    var preciosAlojamiento = [0,0,0];    
  31.       }    
  32.  
  33. var semanas=document.formReserva.semanas.value  
  34.  
  35. if(document.formReserva.temporada.value == "baja"){  
  36.    var precioCurso = preciosCurso[0];  
  37.    var precioAlojamiento = preciosAlojamiento[0];  
  38.    }else if(document.formReserva.temporada.value == "media"){  
  39.    var precioCurso = preciosCurso[1];  
  40.    var precioAlojamiento = preciosAlojamiento[1];  
  41.    }else{  
  42.    var precioCurso = preciosCurso[2];  
  43.    var precioAlojamiento = preciosAlojamiento[2];  
  44.    }  
  45.  
  46. var precioTotal = (precioCurso+precioAlojamiento)*semanas;
  47.  
  48. document.formReserva.total.value = precioTotal;
  49. }

y por otro, el código php para el envio del mail

Código PHP:

$mail
='[email protected]'




$nombre $_POST['nombre']; 
$telefono $_POST['telefono']; 
$email $_POST['email'];
$curso=$_POST['curso']; //basico
$alojamiento=$_POST['alojamiento']; //compartido
$semanas=$_POST['semanas']; //2
$temporada=$_POST['temporada']; //baja 
$preciototal=$_POST['total'];
$mensaje $_POST['mensaje']; 

$thank="gracias.html"


$message 
nombre:"
.$nombre.
telefono:"
.$telefono.
email:"
.$email.
curso:"
.$curso."
alojamiento:"
.$alojamiento."
semanas:"
.$semanas."
temporada:"
.$temporada."
precio:"
.$preciototal."
mensaje:"
.$mensaje."
"




if (
mail($mail,"Solicitud de reserva",$message)) 
Header ("Location: $thank" ); 
Faltaría, para completar un poco mejor el formulario, validar los campos...

Creo que no me he dejado nada, espero que les sirva de ayuda a futuros...

Quería agradecer, de paso, la ayuda prestada sobre todo por IEKK.

Un saludo
  #22 (permalink)  
Antiguo 30/04/2011, 20:37
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Problema con distintos botones en el mismo formulario

Vaya, me quedo hasta las tantas intentando resolver el otro tema y me encuentro con este doble posteo y solucionado
  #23 (permalink)  
Antiguo 01/05/2011, 06:03
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Tienes toda la razón Esnola, y espero no haber abusado de tu cordialidad!!!

Muchas gracias por tu ayuda, de verdad!!

Al final todo el problema cambió un poco y decidí cambiar la lógica del mismo.... qué te parece la solución final??? Seguramente se podría hacer mejor, pero ya sabes que soy un poco novato con todo esto y lo he tenido que resolver con los escasos conocimientos que tengo...

Muchas gracias a ti también por la ayuda que me prestaste al principio con el tema del cálculo en php... aunque al final no lo haya utilizado!!!

Gracias de nuevo, te estoy muy agradecido!!

Un saludo!
  #24 (permalink)  
Antiguo 01/05/2011, 06:16
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Problema con distintos botones en el mismo formulario

Bueno, siempre que haya una solución la cosa es buena.
No controlo js así que ..... te he dado una posible solución en el otro post utilizando solo php.

Saludos
  #25 (permalink)  
Antiguo 01/05/2011, 07:00
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 78
Antigüedad: 13 años
Puntos: 3
Respuesta: Problema con distintos botones en el mismo formulario

te recomiendo que uses FOO para mandar mensajes por email es mucho mas facil.
  #26 (permalink)  
Antiguo 01/05/2011, 07:12
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Problema con distintos botones en el mismo formulario

FOO ???

¿Que es FOO ?
  #27 (permalink)  
Antiguo 01/05/2011, 09:15
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Si, joseppp...

que es FOO? más fácil que con la función mail de PHP... entonces sí que tiene que ser fácil!! XDD

He intentado buscar información por internet pero no encuentro nada... a qué te refieres exactamente???

Gracias y un saludo!!

Esnola, gracias de nuevo!! ;)
  #28 (permalink)  
Antiguo 01/05/2011, 10:38
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 16 años
Puntos: 2534
Respuesta: Problema con distintos botones en el mismo formulario

También pueden usar BAR.
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #29 (permalink)  
Antiguo 02/05/2011, 14:05
 
Fecha de Ingreso: mayo-2005
Mensajes: 92
Antigüedad: 18 años, 11 meses
Puntos: 2
Respuesta: Problema con distintos botones en el mismo formulario

Hola Esnola,

he visto que también estás por el foro de Joomla... nuestro famoso formulario es precisamente en joomla donde lo tengo que instalar pero no se como hacer la llamada al js ni al php desde un artículo..

he probado a colocarlo en el <head> del index.php pero no me lo reconoce tampoco...

Voy a abrir un nuevo tema en ese foro pero te quería preguntar antes a ti, que eres una máquina con estas cosas...

Tienes alguna idea de como puedo hacerlo??

muchas gracias...
  #30 (permalink)  
Antiguo 02/05/2011, 15:42
Avatar de ESNOLA  
Fecha de Ingreso: octubre-2006
Mensajes: 188
Antigüedad: 17 años, 6 meses
Puntos: 20
Respuesta: Problema con distintos botones en el mismo formulario

Hola, pues si, estoy metido con Joomla, aunque recién empiezo.
Habría que ver como quieres meter el formulario, no tiene porque ser en un artículo, es mas, no debería ser en un artículo, mejor en un módulo con JUMI. Pero habría que probar.

Envíame todo lo que tengas a esnola arroba mundo-r punto com y experimento a ver por donde podemos meterle mano.

Saludos

Etiquetas: botones, formulario
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 16:29.