Foros del Web » Programando para Internet » PHP »

Menu en array

Estas en el tema de Menu en array en el foro de PHP en Foros del Web. Hola, gracias a la ayuda de este foro y en especial al colaborador abimaelrc me ha sido de gran utilidad hacer el menu para varios ...
  #1 (permalink)  
Antiguo 13/05/2010, 06:38
 
Fecha de Ingreso: diciembre-2006
Mensajes: 173
Antigüedad: 13 años
Puntos: 2
Menu en array

Hola,

gracias a la ayuda de este foro y en especial al colaborador abimaelrc me ha sido de gran utilidad hacer el menu para varios idiomas que me funciona perfectamente, el problema es que cuando un archivo no esta definido en el array, me muestra una pagina en blanco y me gustaria que me mostrara una por defecto si no esta definido.

Os paso el codigo para ver que linea de codigo hay que agregar o modificar para que cuando el archivo no este definido en el array me muestre un archivo por defecto el nomenu.php en ves de dejarme la pagina en blanco.

Código PHP:
<?php
if(empty($_GET['url'])){exit;}
//Limpiamos la url por si hay algún ataque XSS
$url strip_tags(trim(urldecode($_GET['url'])));
$arr = array();
$arr[] = array('espanol.php','english.php');
$arr[] = array('tienda.php','shop.php');
$arr[] = array('noticias.php','news.php');
foreach(
$arr as $v){
if((
$k array_search($url,$v)) !== false){
$k = ($k == 0);
header('Location: ' $v[$k]);
break;
}
}
?>
  #2 (permalink)  
Antiguo 13/05/2010, 07:21
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: Menu en array

Hola

Solo has de hacer else

Código PHP:
Ver original
  1. }
  2. else {
  3. //lo que sea
  4. break;
  5. }
  6. }

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 13/05/2010, 07:33
 
Fecha de Ingreso: diciembre-2006
Mensajes: 173
Antigüedad: 13 años
Puntos: 2
Respuesta: Menu en array

Lo he puesto de la siguiente manera pero no me funciona:

Código PHP:
foreach($arr as $v){
if((
$k array_search($url,$v)) !== false){
$k = ($k == 0);
header('Location: ' $v[$k]);
}
else {
header('Location: ./blanco.php');
break;
}

  #4 (permalink)  
Antiguo 13/05/2010, 07:37
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: Menu en array

Hola

Acabo de probarlo y funciona. Quitale

Cita:
header('Location: ./blanco.php');
Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #5 (permalink)  
Antiguo 13/05/2010, 12:04
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Menu en array

Un detalle: Tu array es un array multidimencional arrays dentro de arrays

Asi lo podras recorer:

//pongo una url literal
$_GET['url'] = "http://localhost/espanol.php";

$arr[] = array('espanol.php','english.php');
$arr[] = array('tienda.php','shop.php');
$arr[] = array('noticias.php','news.php');

$_GET['url'] = "http://localhost/espanol.php";

for($fila=0; $fila<sizeof($arr); $fila++){
for($columna=0; $columna<sizeof($arr); $columna++) {
//echo " <b>".($columna+1)."</b> ".$arr[$fila][$columna];
if(strstr($url,$arr[$fila][$columna])){
echo "<br />Estoy en la url...!";
}else{
echo "<br />No estoy en la url...!";
}
}

}


Ahora header no te va a funcionar dentro del loop repetidamente, deberas colocar un contador: si 9 veces te dice "no estoy", antonces redireccionas, algo asi...
  #6 (permalink)  
Antiguo 13/05/2010, 12:41
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 13 años
Puntos: 126
Respuesta: Menu en array

Hola

Cita:
Iniciado por wiwi74 Ver Mensaje
Un detalle: Tu array es un array multidimencional arrays dentro de arrays

Asi lo podras recorer:

//pongo una url literal
$_GET['url'] = "http://localhost/espanol.php";

$arr[] = array('espanol.php','english.php');
$arr[] = array('tienda.php','shop.php');
$arr[] = array('noticias.php','news.php');

$_GET['url'] = "http://localhost/espanol.php";

for($fila=0; $fila<sizeof($arr); $fila++){
for($columna=0; $columna<sizeof($arr); $columna++) {
//echo " <b>".($columna+1)."</b> ".$arr[$fila][$columna];
if(strstr($url,$arr[$fila][$columna])){
echo "<br />Estoy en la url...!";
}else{
echo "<br />No estoy en la url...!";
}
}

}


Ahora header no te va a funcionar dentro del loop repetidamente, deberas colocar un contador: si 9 veces te dice "no estoy", antonces redireccionas, algo asi...
Has obviado un detalle: break
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 19/05/2010, 12:39
Avatar de wiwi74  
Fecha de Ingreso: marzo-2008
Mensajes: 515
Antigüedad: 11 años, 10 meses
Puntos: 10
Respuesta: Menu en array

Tan pronto como encuentre una url te va a redireccionar, provocando un break si en la parte que se cumple la condicion colocas el header()

Al contador debes colocarlo en la parte del if que no se cumple...

luego, ejemplo:

if($count == 6){
echo "No hubo coincidencias...";
}

Etiquetas: Ninguno
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 21:02.