Foros del Web » Programando para Internet » PHP »

dependiendo de radiobutton....

Estas en el tema de dependiendo de radiobutton.... en el foro de PHP en Foros del Web. hola: no se si se puede hacer en php lo siguiente, porq lo he intentado en javascript pero no lo consigo.Tengo tres radiobutton en mi ...
  #1 (permalink)  
Antiguo 08/09/2003, 05:14
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
dependiendo de radiobutton....

hola:

no se si se puede hacer en php lo siguiente, porq lo he intentado en javascript pero no lo consigo.Tengo tres radiobutton en mi form y quiero q dependiendo de cual sea seleccionado me envie a una u otra pagina, como lo he de hacer?

un saludo

gracias
__________________
Muchas gracias, saludos.
  #2 (permalink)  
Antiguo 08/09/2003, 05:35
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

Hombre, con javascript se puede hacer creando una funcion en el onsubmit del form, que asigne el valor del action del form en funcion del valor del radio.

Con PHP puedes hacer que el action del form apunte a un fichero tal como:
Código PHP:
<?php
$radio
=$_POST['radiobutton']; // o $_GET, dependiendo del method del form
include($radio.'.php');
?>
si el value de cada radio es el nombre de la pagina destino. Si el value del radio no es el nombre de la pagina, sino un valor cualquiera, puedes usar algo asi:
Código PHP:
<?php
$paginas
=array('valor1'=>'pagina1','valor2'=>'pagina2','valor3'=>'pagina3');
$radio=$_POST['radiobutton']; // o $_GET, dependiendo del method del form
if (!in_array($radio,array_keys($paginas))) { // comprueba que exista el valor (paranoia de seguridad)
  
include('error.php');  // pagina por defecto para cuando no existe el valor (ataque hacker??)
}
include(
$paginas[$radio].'.php');
?>
siendo 'valor1', ... los posibles valores de los radio.

Espero haber sido de ayuda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #3 (permalink)  
Antiguo 08/09/2003, 05:39
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Hola,

creo que podrias hacerlo de esta manera

Código PHP:
if($HTTP_POST_VARS)
{
  switch (
$_POST['nombre_boton'])
  {
  case 
"opcion_boton_x":
  
header ("location: a una pagina");
  break;

  case 
"opcion_boton_y":
  
header ("location: a una pagina");
  break;

  case 
"opcion_boton_z":
  
header ("location: a una pagina");
  break;

  default:

    echo 
"No has escogido ninguna opcion";

   }  
//fin switch

}//fin HTT_POST_VARS 
Tambien puedes hacerlo con
Código PHP:
if($HTTP_POST_VARS)
{
    
    if(
$_POST['nombre_boton']=="opcion_boton_x"header ("location: a una pagina");
    elseif(
$_POST['nombre_boton']=="opcion_boton_y"header ("location: a una pagina");
    elseif(
$_POST['nombre_boton']=="opcion_boton_z"header ("location: a una pagina");
    
//tantos como opciones
    
else echo "No has escogido ninguna opcion";


}
//fin HTT_POST_VARS 
un saludo
  #4 (permalink)  
Antiguo 08/09/2003, 05:46
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Jo , josemi los dos a la vez
jeje

un saludo
  #5 (permalink)  
Antiguo 08/09/2003, 05:48
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Jordi1, tu metodo del header("Location: ") tiene una (gran) pega frente a los include(). Al hacer la redireccion con header() en la pagina destino no tienes acceso a los campos enviados por el formulario, es decir, al $_POST. Asi, con tu metodo para propagar esos valores deberias añadirlos en la URL del Location, o meterlos en una sesion y acceder a esos valores.

Con el include() es como si metieras el codigo de la pagina destino en esta pagina, por eso tienes acceso al array $_POST.

Por supuesto, dependiendo del caso es mejor un metodo que otro. Por eso a la hora de elegir hay que tener en cuenta estas cosas.

Saludos.

PD: Jordi1, no es una critica a tu metodo. Simplemente intento dar la mayor informacion para que el mundo aprenda.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 08/09/2003, 05:52
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
y algo como esto?

hola:

y algo mas sencillo?

algo como esto:

tres radiobutton, con name x,y y z, respectivamente

Código PHP:
$xx=$HTTP_POST_VARS ['x'];

if(
$xx>0)
{
header("location:xx.htm");
}
$yy=$HTTP_POST_VARS ['y'];

if(
$yy>0)
{
header("location:yy.htm");
}
$zz=$HTTP_POST_VARS ['z'];

if(
$zz>0)
{
header("location:zz.htm");

este codigo no me funciona evidentemente.

un saludo
__________________
Muchas gracias, saludos.
  #7 (permalink)  
Antiguo 08/09/2003, 05:56
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
pregunta

podrias explicarme un poquillo?

<?php
$radio=$_POST['radiobutton']; //radiobutton seria el nombre de los radiobutton,no?

include($radio.'.php'); // en .php q he de poner?
?>


intento aprender.

gracias
__________________
Muchas gracias, saludos.
  #8 (permalink)  
Antiguo 08/09/2003, 06:02
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Bueno, mi codigo se basa en que solo tienes un grupo de radios con el mismo nombre:

radio1<input type="radio" name="radiobutton" value="pagina1">
radio2<input type="radio" name="radiobutton" value="pagina2">
radio3<input type="radio" name="radiobutton" value="pagina3">

esto es para el primer ejemplo. Y para el segundo:

radio1<input type="radio" name="radiobutton" value="valor1">
radio2<input type="radio" name="radiobutton" value="valor2">
radio3<input type="radio" name="radiobutton" value="valor3">

En el primer ejemplo, por el que preguntas en tu ultimo post, no debes cambiar nada de ese codigo. Solo en el formulario sustituyes 'pagina1', 'pagina2', ... por el nombre del script destino sin la extension '.php', que ya se pone automaticamente.

Y en el ejemplo 2, debes cambiar los indices y valores del array $paginas para que concuerden con los valores del formulario.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #9 (permalink)  
Antiguo 08/09/2003, 06:04
 
Fecha de Ingreso: abril-2003
Mensajes: 656
Antigüedad: 21 años
Puntos: 1
Bueno no te funciona porque cambias el nombre del array
$_POST [] que te llega.

Código PHP:
$xx=$HTTP_POST_VARS ['nombre_del_radio_boton'];

if(
$xx==valor// valor que tiene este boton
{
header("location:xx.htm");// o include como dice josemi si quieres que la pagina se incluya es a ver que necesitas
}


if(
$xx==valor)//observa que no cambia  el nombre de la variable 
que le hemos dado arriba en $xx=$HTTP_POST_VARS ['nombre_del_radio_boton'];
{
header("location:yy.htm");
}


if(
$xx==valor)
{
header("location:zz.htm");

Josemi por supuesto que no me lo tomo como una critica, me encanta aprender,

Pero una pregunta , si haces un include a una pagina html y tu escript tiene tb html, no se fastida la pagina, pues se mezcla todo
el html?


un saludo
  #10 (permalink)  
Antiguo 08/09/2003, 06:11
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
me da este error:

Warning: Failed opening 'htm' for inclusion (include_path='') in c:\phpdev\www\portalon_pintura_decoracion\portalon _pintura\puerta_pto\renuevo.php on line 40


$radio=$_POST['radiobutton'];

include($radio.'.php');//linea 40.

Existe una archivo con el value de uno de ellos .php
__________________
Muchas gracias, saludos.

Última edición por xias; 08/09/2003 a las 06:14
  #11 (permalink)  
Antiguo 08/09/2003, 06:14
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hombre, si tienes una pagina con el <body>, y dentro de esta incluyes otra que tambien tiene el <body>, claro que se te lia todo. Pero en este caso no pasa eso, ya que el script solo tiene ese codigo PHP, nada mas, sin HTML por delante ni por detras. El unico HTML sera el del fichero incluido. Es mas, como no se hace ninguna salida al navegador, en el fichero incluido se pueden hacer setcookies() y header() sin ningun problema. Para el fichero incluido sera como si lo hubieran llamado directamente. Pero es asi en este caso. En otros depende de cada codigo. Pero como se supone que tu tienes el control de las paginas, controlas que codigo se incluye en cada punto.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 08/09/2003, 06:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Re: me da este error:

Cita:
Mensaje Original por xias
Warning: Failed opening 'htm' for inclusion (include_path='') in c:\phpdev\www\portalon_pintura_decoracion\portalon _pintura\puerta_pto\renuevo.php on line 40


$radio=$_POST['radiobutton'];

include($radio.'.php');//linea 40.

Existe una archivo con el value de uno de ellos .php
¿Y el radio se llama 'radiobuton' y esta marcado y el method del formulario es POST? Porque del error se deduce que no lee el valor con $_POST['radiobutton']. Y ahora que veo que el include_path esta vacio, quizas es necesario poner que esta en el directorio actual:
Código PHP:
<?php
$radio
=$_POST['radiobutton']; // o $_GET, dependiendo del method del form
include('./'.$radio.'.php');
?>
Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #13 (permalink)  
Antiguo 08/09/2003, 06:21
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
a ver...

lo siento pero soy muy nueva y me pierdo.

Tengo lo siguiente:

<<<<nuevo.htm

<html>
<head>
<title>Untitled Document</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name= "form1" method="post" action="pp.php" >
<input type="radio" name="radiobutton" value="presupuesto" >
Presupuesto
<input type="radio" name="radiobutton" value="capitulo">
Capitulo
<input type="radio" name="radiobutton" value="partida">
Partida<br>
<br>
<input name="Submit" type="submit" value="aceptar" >

</form>
</body>
</html>

<<<<pp.php

Código PHP:
<?php 
$radio
=$_POST['radiobutton']; 
include(
$radio.'.php');//linea 3

?>
y me da el siguiente error:

Warning: Failed opening 'php' for inclusion (include_path='') in c:\phpdev\www\portalon_pintura_decoracion\portalon _pintura\puerta_pto\pp.php on line 3



un saludo
__________________
Muchas gracias, saludos.
  #14 (permalink)  
Antiguo 08/09/2003, 06:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
¿Que version de PHP tienes? Si es anterior a 4.1, sustituye el $_POST por $HTTP_POST_VARS. Lo digo porque te dice que no encuentra 'php', si leyese un valor en $radio deberia poner 'capitulo.php'.

Y mira de ponerle el './'.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #15 (permalink)  
Antiguo 09/09/2003, 03:09
 
Fecha de Ingreso: enero-2002
Mensajes: 838
Antigüedad: 22 años, 3 meses
Puntos: 1
muchisimas gracias

muchas gracias a ambos¡¡¡

una ultima pregunta, si uno de ellos lleva a un htm como lo haria?

le pondria otro name al radiobutton que lleva al html con otra variable($radio2) y otro include?

un saludo¡¡¡



__________________
Muchas gracias, saludos.

Última edición por xias; 09/09/2003 a las 03:14
  #16 (permalink)  
Antiguo 09/09/2003, 03:42
Avatar de davidMS  
Fecha de Ingreso: abril-2003
Ubicación: Chepe
Mensajes: 202
Antigüedad: 21 años
Puntos: 0
Tomando en cuenta lo que an dicho los compañeros yo lo haria asi (talvez te ayude de algo):
Código PHP:
<?
if (! isset ($load))
{
    
$load="parte1";
}
switch (
$load)
{
    case (
"parte1"):
        echo
'
        <html>
        <head>
        <title>Untitled Document</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
        </head>
        
        <body>
        <form name="form1" method="post" action="action.php?load=parte2">
          <p> Que te gusta mas? 
            <label> </label>
          </p>
          <p>
            <label>
            <input type="radio" name="opcion" value="http://www.google.com">
            Google</label>
            <br>
            <label> 
            <input type="radio" name="opcion" value="http://www.yahoo.com">
            Yahoo</label>
          </p>
          <p>
            <input type="submit" name="Submit" value="Submit">
            <br>
          </p>
        </form>
        </body>
        </html>
        '
;
    break;
    case (
"parte2"):
        
header ("location: ".$_POST["opcion"]);
    break;
}
?>
si quieres nada mas cambias header por include quedando asi:
Código PHP:
include ($_POST["opcion"]); 
tomando en cuenta que con header, te podes ir a un html cualquier y le podes pasar variables url, con include no...
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 11:02.