Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Redirección con mas diagonales de lo normal

Estas en el tema de Redirección con mas diagonales de lo normal en el foro de PHP en Foros del Web. Buenas, tengo 4 selects que al pulsar enviar me envían a una página llamada descubrir.php , descubrir.php tiene el siguiente código Código PHP: <?php require_once( ...
  #1 (permalink)  
Antiguo 24/01/2016, 13:19
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Redirección con mas diagonales de lo normal

Buenas, tengo 4 selects que al pulsar enviar me envían a una página llamada descubrir.php, descubrir.php tiene el siguiente código
Código PHP:
<?php
require_once("include/funciones.php");
$estado $_POST['estado'];
$municipio $_POST['municipio'];
$localidad $_POST['localidad'];
$categoria $_POST['categoria'];
header("Location:estados/$estado/$municipio/$localidad/$categoria")
?>
, y cada una de las opciones seleccionadas las trae desde el index.php, el error que tengo es que por ejemplo si selecciono solamente el estado numero 10 la url me queda así http://localhost/estados/10///, lo que quiero hacer es que si por ejemplo seleccione solo un estado y solo un municipio me redirija solo a estados/10/1 y el código quede así. O sí tienen alguna sugerencia por favor haganmela saber, gracias.
  #2 (permalink)  
Antiguo 24/01/2016, 15:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Redirección con mas diagonales de lo normal

Puedes formar la ruta de acuerdo a los valores que obtengas:
Código PHP:
Ver original
  1. $ruta = 'Location: estados/';
  2.  
  3. if (isset($_POST['estado']) && strlen($_POST['estado'])){
  4.     $ruta .= '/' . $_POST['estado'];
  5. }
  6.  
  7. if (isset($_POST['municipio']) && strlen($_POST['municipio'])){
  8.     $ruta .= '/' . $_POST['municipio'];
  9. }
  10.  
  11. if (isset($_POST['localidad']) && strlen($_POST['localidad'])){
  12.     $ruta .= '/' . $_POST['localidad'];
  13. }
  14.  
  15. if (isset($_POST['categoria']) && strlen($_POST['categoria'])){
  16.     $ruta .= '/' . $_POST['categoria'];
  17. }
  18.  
  19. header($ruta);

O recorriendo al array:
Código PHP:
Ver original
  1. $ruta = 'Location: estados/';
  2.  
  3. foreach($_POST as $valor){
  4.     if (isset($valor) && strlen($valor)){
  5.         $ruta .= '/' . $valor;
  6.     }
  7. }
  8.  
  9. header($ruta);

Con la función isset(), determinamos que la variable que se le pase como argumento, esté definida y no sea nula, mientras que con la función strlen() obtenemos la longitud del valor de la variable que se le pase como argumento y evaluándola de esa manera, corroboramos que sea mayor a cero (o diferente a false).

Un saludo
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #3 (permalink)  
Antiguo 24/01/2016, 15:21
 
Fecha de Ingreso: enero-2016
Ubicación: Venezuela
Mensajes: 139
Antigüedad: 8 años, 3 meses
Puntos: 3
Respuesta: Redirección con mas diagonales de lo normal

Cita:
Iniciado por Alexis88 Ver Mensaje
Puedes formar la ruta de acuerdo a los valores que obtengas:
Código PHP:
Ver original
  1. $ruta = 'Location: estados/';
  2.  
  3. if (isset($_POST['estado']) && strlen($_POST['estado'])){
  4.     $ruta .= '/' . $_POST['estado'];
  5. }
  6.  
  7. if (isset($_POST['municipio']) && strlen($_POST['municipio'])){
  8.     $ruta .= '/' . $_POST['municipio'];
  9. }
  10.  
  11. if (isset($_POST['localidad']) && strlen($_POST['localidad'])){
  12.     $ruta .= '/' . $_POST['localidad'];
  13. }
  14.  
  15. if (isset($_POST['categoria']) && strlen($_POST['categoria'])){
  16.     $ruta .= '/' . $_POST['categoria'];
  17. }
  18.  
  19. header($ruta);

O recorriendo al array:
Código PHP:
Ver original
  1. $ruta = 'Location: estados/';
  2.  
  3. foreach($_POST as $valor){
  4.     if (isset($valor) && strlen($valor)){
  5.         $ruta .= '/' . $valor;
  6.     }
  7. }
  8.  
  9. header($ruta);

Con la función [URL="http://php.net/manual/es/function.isset.php"][inline]isset()[/inline][/URL], determinamos que la variable que se le pase como argumento, esté definida y no sea nula, mientras que con la función [URL="http://php.net/manual/es/function.strlen.php"][inline]strlen()[/inline][/URL] obtenemos la longitud del valor de la variable que se le pase como argumento y evaluándola de esa manera, corroboramos que sea mayor a cero (o diferente a false).

Un saludo
Gracias amigo, sirvió perfecto, solo en
Código PHP:
$ruta 'Location: estados/'
le quite el / para que no me quedarán los dos al momento de enviar.

Saludos..
  #4 (permalink)  
Antiguo 24/01/2016, 20:09
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Redirección con mas diagonales de lo normal

¡Es verdad!

Se me olvidó quitarlo.
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: select
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 04:31.