Foros del Web » Programando para Internet » PHP »

Redireccionar según opción elegida

Estas en el tema de Redireccionar según opción elegida en el foro de PHP en Foros del Web. Hola. Tengo un formulario que al enviar una consulta graba los datos en una base. Por otro lado necesito que la página que se muestre ...
  #1 (permalink)  
Antiguo 04/06/2012, 13:29
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años
Puntos: 12
Redireccionar según opción elegida

Hola. Tengo un formulario que al enviar una consulta graba los datos en una base. Por otro lado necesito que la página que se muestre luego de enviada esa información, sea diferente dependiendo de la opción elegida en uno de los menú select del formulario. He buscado en el foro y hay muchos ejemplos que redireccionan pero sin grabar o que graban pero sin redireccionar. Yo necesito complementar ambas cosas. Este es el código que tengo según lo que encontré en el foro. Pero algo debo estar haciendo mal:

formulario.php

Código HTML:
<form action="compacto.php" method="post" name="form1" id="form1">
      <p class="Estilo42">Pa&iacute;s
        <select name="pais" onchange="redireccionar(this);">
            <option selected="selected" value="Argentina">Argentina</option>
            <option value="esto">Resto del Mundo</option>
          </select>
      </p>
      <p class="Estilo42">Zona
        <select name="select" onchange="slctryole(this,this.form.select2)">
            <option></option>
            <option value="BuenosAires">Buenos Aires</option>
            <option value="CapitalFederal">Capital Federal</option>
            <option value="Chaco">Chaco</option>
            <option value="Chubut">Chubut</option>
            <option value="Cordoba">C&oacute;rdoba</option>
            <option value="Corrientes">Corrientes</option>
            <option value="EntreRios">Entre R&iacute;os</option>
            <option value="Formosa">Formosa</option>
            <option value="Jujuy">Jujuy</option>
            <option value="LaRioja">La Rioja</option>
            <option value="Mendoza">Mendoza</option>
            <option value="Neuquen">Neuqu&eacute;n</option>
            <option value="RioNegro">R&iacute;o Negro</option>
            <option value="Salta">Salta</option>
            <option value="SanJuan">San Juan</option>
            <option value="SanLuis">San Luis</option>
            <option value="SantaCruz">Santa Cruz</option>
            <option value="SantaFe">Santa Fe</option>
            <option value="Santiago">Santiago del Estero</option>
            <option value="TierraDelFuego">Tierra del Fuego</option>
            <option value="Tucuman">Tucum&aacute;n</option>
          </select>
          <select name="select2" onchange="slctryole(this,this.form.select3)">
            <option></option>
          </select>
      </p>
      <div class="Estilo42" id="provincia" style="display:inline"></div>
      <p class="Estilo42">Tipo de Auto
        <select name="liste1" id="liste1" onChange="this.form.submit()">
            <option selected="selected" value=""> </option>
          <option value="economico.php">Econ&oacute;mico</option>
            <option value="compacto3.php">Compacto 3 puertas</option>
          </select>
      </p>
    </form> 
De acuerdo a la opción elegida en el select liste1 quiero que me redirija a la página correspondiente. El código de compacto.php que es el que recibe los datos es:

Código PHP:
$conexion=mysql_connect("localhost","josper_admin","A1234bcd"
  or die(
"Problemas en la conexion");
mysql_select_db("josper_reservas",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");
mysql_query("insert into reservas (pais,provincia,zona,auto,fecalq,horalq,fecdevol,hordevol,km,seguro) values 
  ('$_REQUEST[pais]','$_REQUEST[select]','$_REQUEST[select2]','$_REQUEST[liste1]')"

   
$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);
header("location:" .$_POST["liste1"]);//Este es el código que permitiría redirigir. 
Y este es el error que devuelve:
Warning: Cannot modify header information - headers already sent by (output started at /home/josper/public_html/soft/compacto.php:10) in /home/josper/public_html/soft/compacto.php on line 19

¿Alguien sabría decirme que estoy haciendo mal? Entiendo que es un problema cuando menciono el header para redirigir, pero no entiendo como arreglarlo. Muchas gracias.
  #2 (permalink)  
Antiguo 04/06/2012, 13:33
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Redireccionar según opción elegida

No podes sacar nada por pantalla antes del header(). Asegurate de no imprimir nada antes de llamar al header
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #3 (permalink)  
Antiguo 04/06/2012, 13:34
 
Fecha de Ingreso: diciembre-2007
Mensajes: 427
Antigüedad: 16 años, 11 meses
Puntos: 35
Respuesta: Redireccionar según opción elegida

Pues te dice q ya estas redirigiendo antes, solamente puedes redirigir una sola vez, lo q debes es validar antes de redirigir con isset o isempy

Cita:
isset(opcion1){
header1...
}
isset(opcion2){
header1...
}
isset(opcion3){
header1...
}
  #4 (permalink)  
Antiguo 04/06/2012, 14:01
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años
Puntos: 12
Respuesta: Redireccionar según opción elegida

Gracias a ambos.

linuxzero: no creo estar imprimiendo nada en esa página. Se ve en blanco por el momento. Igual puse el header() al comienzo del body pero me sigue dando el mismo error.

maxpower: no entiendo bien lo que me aconsejas que haga. ¿Así sería?
Código PHP:
$conexion=mysql_connect("localhost","josper_admin","A1234bcd")  
  or die(
"Problemas en la conexion"); 
mysql_select_db("josper_reservas",$conexion) or 
  die(
"Problemas en la seleccion de la base de datos"); 
mysql_query("insert into reservas (pais,provincia,zona,auto,fecalq,horalq,fecdevol,hordevol,km,seguro) values    ('$_REQUEST[pais]','$_REQUEST[select]','$_REQUEST[select2]','$_REQUEST[liste1]')",  
   
$conexion) or die("Problemas en el select".mysql_error()); 
mysql_close($conexion); 
isset(
economico){
header("location:" .$_POST["liste1"]);
}
isset(
compacto3){
header("location:" .$_POST["liste1"]);

Gracias nuevamente.
  #5 (permalink)  
Antiguo 04/06/2012, 14:10
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Redireccionar según opción elegida

postea el codigo completo de ese php...
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #6 (permalink)  
Antiguo 04/06/2012, 14:13
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años
Puntos: 12
Respuesta: Redireccionar según opción elegida

Acá va:

compacto 3.php

Código PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>

<?php
header
("location:" .$_POST["liste1"]);//Este es el código que permitiría redirigir.
$conexion=mysql_connect("localhost","josper_admin","A1234bcd"
  or die(
"Problemas en la conexion");
mysql_select_db("josper_reservas",$conexion) or
  die(
"Problemas en la seleccion de la base de datos");
mysql_query("insert into reservas (pais,provincia,zona,auto,fecalq,horalq,fecdevol,hordevol,km,seguro) values 
 ('$_REQUEST[pais]','$_REQUEST[select]','$_REQUEST[select2]','$_REQUEST[liste1]','$_REQUEST[fecalq]','$_REQUEST[horalq]','$_REQUEST[fecdevol]','$_REQUEST[hordevol]','$_REQUEST[km]','$_REQUEST[seguro]')"

   
$conexion) or die("Problemas en el select".mysql_error());
mysql_close($conexion);

?>

</body>
</html>
  #7 (permalink)  
Antiguo 04/06/2012, 14:15
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Redireccionar según opción elegida

Esto:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Documento sin t&iacute;tulo</title>
</head>

<body>


Es lo que sale por pantalla, yo te dije que sacabas por pantalla algo...

hace un if o algo para que entre a hacer el header() cuando sea necesario, se entiende?
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com
  #8 (permalink)  
Antiguo 04/06/2012, 14:19
sjj
 
Fecha de Ingreso: octubre-2008
Mensajes: 213
Antigüedad: 16 años
Puntos: 12
Respuesta: Redireccionar según opción elegida

Era eso nomás linuxzero Muchas gracias a los 2 por sus respuestas.
  #9 (permalink)  
Antiguo 04/06/2012, 14:20
Avatar de linuxzero  
Fecha de Ingreso: noviembre-2011
Ubicación: Argentina
Mensajes: 778
Antigüedad: 13 años
Puntos: 160
Respuesta: Redireccionar según opción elegida

Cita:
Iniciado por sjj Ver Mensaje
Era eso nomás linuxzero Muchas gracias a los 2 por sus respuestas.
De nada, exitos con eso
__________________
Si todo fuera tan sencillo como un symfony cc la vida seria más fácil.
http://phpnico.wordpress.com

Etiquetas: formulario, html, mysql, redireccionar, según, sql
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 10:56.