Foros del Web » Programando para Internet » PHP »

Intercambiar "action" de un formulario

Estas en el tema de Intercambiar "action" de un formulario en el foro de PHP en Foros del Web. Hola a todos, tengo el siguiente dilema respecto a un formulario con el que estoy trabajando y el action. En principio tengo una función con ...
  #1 (permalink)  
Antiguo 14/08/2009, 02:40
 
Fecha de Ingreso: agosto-2009
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
Intercambiar "action" de un formulario

Hola a todos, tengo el siguiente dilema respecto a un formulario con el que estoy trabajando y el action.

En principio tengo una función con un formulario el cual realiza unas operaciones y me devuelve el resultado en la misma página, además de dicho resultado hago que me devuelva tambien un botón más que es el que me manda a una nueva página, escribo el código.

Código PHP:
funcion calcular($producto){

$action "formulario.php?operation=calc"

echo '<form name= "form1" method="post" action="'.$action.'">';

echo 
'<p><input type="submit" name="calc" value="Calcular"></p>';

if (isset(
$_POST["calc"])){
/*(realiza las operaciones y se muestran en la misma pantalla, el resultado de estas operaciones lo convierto en una variable que quiero mandar a traves de la URL a la siguiente página.)*/
  
$resultado = (resultado de las operaciones);
  echo 
"$resultado";
  echo 
'<p><input type="submit" name="add" value="Añadir"></p>';
  if (isset(
$_POST["add"])){
    
$action "siguientepaso.php&resultado='.$resultado.'";
  }
}
echo 
'</form>'
}

El caso es que funciona todo lo de las operaciones correctamente, pero cuando quiero pasar al siguiente pado al pinchar sobre el botón añadir no pasa a la siguiente página, en su lugar se recarga la mis ma página.

¿En donde estoy metiendo la pata?
También he intentado que la variable resultado se convierta de ambito global de alguna manera pero no lo he logrado. ¿alguien me puede hechar una mano?.

Muchas gracias.
  #2 (permalink)  
Antiguo 14/08/2009, 04:29
Avatar de bioxido  
Fecha de Ingreso: diciembre-2008
Ubicación: $_SERVER['PHP_SELF']
Mensajes: 601
Antigüedad: 15 años, 4 meses
Puntos: 21
Respuesta: Intercambiar "action" de un formulario

Código PHP:
echo '<form name= "form1" method="post" action="'.$action.'">'
proba cambiando las comillas simples del principio por dobles, y las dobles de 'adentro' por simples...para ver si esta por ahi el error.......asi:

Código PHP:
echo "<form name= 'add' method='post' action='$action'>"
Tambien seria bueno, darle el mismo name al submit.
  #3 (permalink)  
Antiguo 14/08/2009, 05:06
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: Intercambiar "action" de un formulario

ahm, intenta asi:

Código PHP:
funcion calcular($producto){

$action "formulario.php?operation=calc"
if (isset($_POST["add"])){
    
$action "siguientepaso.php&resultado='.$resultado.'";
}

echo 
'<form name= "form1" method="post" action="'.$action.'">';

echo 
'<p><input type="submit" name="calc" value="Calcular"></p>';

if (isset(
$_POST["calc"])){
/*(realiza las operaciones y se muestran en la misma pantalla, el resultado de estas operaciones lo convierto en una variable que quiero mandar a traves de la URL a la siguiente página.)*/
  
$resultado = (resultado de las operaciones);
  echo 
"$resultado";
  echo 
'<p><input type="submit" name="add" value="Añadir"></p>';
 
}
echo 
'</form>'
y nos comentas como te fue. Saludos
__________________
Hospedaje Web al mejor costo!
  #4 (permalink)  
Antiguo 14/08/2009, 08:38
 
Fecha de Ingreso: agosto-2009
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Intercambiar "action" de un formulario

Que va, ninguna de las dos opciones resulta, el caso es que el action no cambia nunca, toma el valor que se definio en un principio siempre, si pasas el raton sobre cualquiera de los dos botones siempre muestra el actión que se define en primer lugar
  #5 (permalink)  
Antiguo 14/08/2009, 09:32
 
Fecha de Ingreso: agosto-2009
Ubicación: Quito
Mensajes: 28
Antigüedad: 14 años, 8 meses
Puntos: 0
Respuesta: Intercambiar "action" de un formulario

parece ser que no te esta validando la condicion

Código:
 if (isset($_POST["add"])){
    $action = "siguientepaso.php&resultado='.$resultado.'";
  }
revisale eso o pruebale asi
Cita:
if (!isset($_POST["add"])){
$action = "siguientepaso.php&resultado='.$resultado.'";
}
  #6 (permalink)  
Antiguo 14/08/2009, 10:15
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: Intercambiar "action" de un formulario

ó


if (isset($_POST["add"])){
$action = "siguientepaso.php&resultado='.$resultado.'";
}else{
$action = "formulario.php?operation=calc"
}
__________________
Hospedaje Web al mejor costo!
  #7 (permalink)  
Antiguo 14/08/2009, 10:16
 
Fecha de Ingreso: agosto-2009
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
Exclamación Respuesta: Intercambiar "action" de un formulario

El problema continua a medias, he hecho lo siguiente: he establecido una variable para cada acción y en función de lo pulsado que la variable actión sea una u otra de esta manera funciona, el action cambia pero la variable $resultado no pasa:

Código PHP:
$action1 "formulario.php?operation=calc"
$action2 "siguientepaso.php&resultado='.$resultado.'";

if (isset(
$_POST["add"])){
        
$action $action2;
    }
elseif (isset(
$_POST["calc"])){
    
$action $action2;
    }
 else {
    
$action $action1;
    }
echo 
'<form name= "form1" method="post" action="'.$action.'">'

if (isset($_POST["calc"])){
/*(realiza las operaciones y se muestran en la misma pantalla, el resultado de estas operaciones lo convierto en una variable que quiero mandar a traves de la URL a la siguiente página.)*/
  
$resultado = (resultado de las operaciones);
  echo 
"$resultado";
  echo 
'<p><input type="submit" name="add" value="Añadir"></p>';
 
}
echo 
'</form>'
bien, ahora os cuento lo que ocurre cuando ejecuto.

cuando abro se ejecuta la condicion else ya que no se ha pulsado ninguno de los submit, luego: $action ahora vale$ action1 y al pulsar "calcular" se ejecuta el calculo y a su vez el valor de $action cambia a $action2.
Ahora se supone que la variable $resultado tiene un valor y la variable $action vale $action2, al pulsar ahora "add" va a siguientepaso.php pero en la URL el valor de $resultado no aparece, está vacio.

Tal que así: localhost/web/siguientepaso.php&resultado=

es decir, hemos logrado que el action cambie pero la variable sigue sin llegar .

Supongo que esto se debe a que cuando declaro por primera vez la variable $resultado dentro de $action2, la primera no contiene ningún valor, si se os ocurre alguna idea, la que sea, por favor...

Gracias a todos los que habeis posteado hasta ahora
  #8 (permalink)  
Antiguo 14/08/2009, 10:34
 
Fecha de Ingreso: agosto-2009
Mensajes: 9
Antigüedad: 14 años, 8 meses
Puntos: 0
De acuerdo Respuesta: Intercambiar "action" de un formulario

Solucionado, no se si es un parche o no pero funciona con esto:

Código PHP:
echo '<form name= "form1" method="post" action="formulario.php?operation=calc">' 

if (isset($_POST["calc"])){ 
/*(realiza las operaciones y se muestran en la misma pantalla, el resultado de estas operaciones lo convierto en una variable que quiero mandar a traves de la URL a la siguiente página.)*/ 
  
$resultado = (resultado de las operaciones); 
  echo 
"$resultado"
  echo 
'<a href="siguientepaso.php&resultado='.$resultado.'">add</a>';
  

echo 
'</form>'
Se me ha ocurrido no se ni como, es una autentica bobada pero me da el resultado necesario he eliminado el submit "add" y lo he sustituido por un enlace a la página que necesitaba:

echo '<a href="siguientepaso.php&resultado='.$resultado.'"> add</a>';

así funciona con el html de toda la vida, no obstante si se os ocurre una solución para el problema con el método que estabamos intentado posteadla por favor y seguiré probando.

Un saludo y muchas gracias a todos.
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 06:16.