Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Feedeex en 13 Mayo 2011, 03:46 am



Título: Problema al concatenar cadenas
Publicado por: Feedeex en 13 Mayo 2011, 03:46 am
Hola a todos, voy al grano. Tenía un code que es el menú de una página web, algo así:

Código:
<li class="current_page_item"><a href="#">Inicio</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index2.php">¿Quiénes somos?</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index3.php">Trabajo comunitario</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index4.php">¿Por qué reciclar?</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index6.php">Campaña</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index7.php">&iexcl;Comente!</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="index5.php">¡H&aacute;gase cliente!</a></li>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="#">Contacto</a></li>

Entonces, para no repetirlo en cada index y hacerlo más dinámico se me ocurrió automatizarlo de la siguiente forma:

1. Crear un archivo config.php donde indico la cantidad de secciones totales, el nombre y link de cada sección. Y además, una función que hice para obtener solo el nombre de la pag. actual:

Código:
<?php
$web_habilitada = "1";
//Secciones
$total_secciones = "7";
$seccion1 = "Inicio";
$seccion1_link = "index.php";
$seccion2 = "¿Quiénes somos?";
$seccion2_link = "index2.php";
$seccion3 = "Trabajo comunitario";
$seccion3_link = "index3.php";
$seccion4 = "¿Por qué reciclar?";
$seccion4_link = "index4.php";
$seccion5 = "Campaña";
$seccion5_link = "index5.php";
$seccion6 = "Repartos";
$seccion6_link = "index6.php";
$seccion7 = "¡Hágase cliente!";
$seccion7_link = "index7.php";
//Funciones
function pagina_actual() {
  $pagina = $_SERVER['REQUEST_URI'];
  $pagina_actual = str_replace("/", " ", $pagina);
  echo trim($pagina_actual);
  }
?>

2. En cada index, fijo un for en 1, y me fijo si es menor que la cantidad de secciones totales que indica config.php. A su vez, me fijo si la página actual es igual a la sección que voy a escribir (porque utilizo un estilo de css diferente cuando estamos en una página, es decir, en la sección aparece en verde el nombre de la página actual):

Código:
<?php
for($a = 1; $a < $total_secciones; $a++) {
    $pag = pagina_actual();
if($pag == $sección.$a) {
?>
<li class="current_page_item"><a href="<?php echo $sección.$a_link; ?>"><?php echo $sección.$a; ?></a></li>
<?php
} else {
?>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="<?php echo $sección.$a_link; ?>"><?php echo $sección.$a; ?></a></li>
<?php
}
}
?>

Entonces, la idea sería que imprima las cosas bien como lo indica el config.php. Pero me imprime:

(http://s3.subirimagenes.com:81/otros/previo/thump_6392914asd.jpg) (http://www.subirimagenes.com/otros-asd-6392914.html)

Y si lo pienso, lo que no puede hacer es unir $sección con la variable $a del for y crear una única sección, por ejemplo seccion1. No se me ocurre como hacer... ¿Alguien me puede dar una ayuda?.

Gracias!


Título: Re: Problema al concatenar cadenas
Publicado por: Shell Root en 13 Mayo 2011, 04:55 am
Es mejor una matriz, así:
Código
  1. $sPoC[0] = array("Inicio", "index.php");
  2. $sPoC[1] = array("¿Quiénes somos?", "quienes_somos.php");
  3. $sPoC[2] = array("Trabajo comunitario", "trabajo_comunitario.php");
  4. $sPoC[3] = array("¿Por qué reciclar?", "porque_reciclar.php");
  5.  
  6. for( $i = 0; $i < count( $sPoC ); $i++ ){
  7. print "Nombre:  ".$sPoC[$i][0]."\n";
  8. print "Archivo: ".$sPoC[$i][1]."\n\n";
  9. }

Salida:
Código
  1. shellroot@alex:~/Escritorio$ php PoC.php
  2. Nombre:  Inicio
  3. Archivo: index.php
  4.  
  5. Nombre:  ¿Quiénes somos?
  6. Archivo: quienes_somos.php
  7.  
  8. Nombre:  Trabajo comunitario
  9. Archivo: trabajo_comunitario.php
  10.  
  11. Nombre:  ¿Por qué reciclar?
  12. Archivo: porque_reciclar.php


Título: Re: Problema al concatenar cadenas
Publicado por: Feedeex en 13 Mayo 2011, 05:19 am
Muchas gracias!. Por ese lado, ya está solucionado. Ahora tengo otro problema:

• NO me funciona la parte que verifica si es la página actual, así se le indica otro estilo de css.
• Me muestra un separador antes que la primera sección.

Código:
<?php
for($a = 0; $a < count($sección); $a++) {
    $pag = pagina_actual();
if($pag == $sección[$a][1]) {
?>
<li class="current_page_item"><a href="<?php echo $sección[$a][1]; ?>"><?php echo $sección[$a][0]; ?></a></li>
<?php
} else {
?>
<li ><a style="margin-top:-15px; padding-left:0px; padding-right:0px"><img src="images/img04.jpg"/></a></li>
<li><a href="<?php echo $sección[$a][1]; ?>"><?php echo $sección[$a][0]; ?></a></li>
<?php
}
}
?>

No entiendo por qué. Si $pag me devuelve correctamente "index.php", ¿cuál es el problema por el que no puedo verificar si $pag es igual a $sección[$a][1]?. Y por otro lado, no entiendo lo del separador al principio, pero debe ser por eso mismo.


Título: Re: Problema al concatenar cadenas
Publicado por: bomba1990 en 13 Mayo 2011, 06:32 am
bueno si la funcion pagina actual es la misma que tienes en el primer post, pues por suspuestoq ue no va a funcionar porque tienes que usar return no echo.


Título: Re: Problema al concatenar cadenas
Publicado por: Feedeex en 13 Mayo 2011, 12:49 pm
Es verdad, tenía que usar un return. Disculpen mi ignorancia en algunas cosas y muchas gracias por ayudarme :D