Problema al concatenar cadenas

Iniciado por Feedeex, 13 Mayo 2011, 03:46 AM

0 Miembros y 1 Visitante están viendo este tema.

Feedeex

Hola a todos, voy al grano. Tenía un code que es el menú de una página web, algo así:

<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:

<?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):

<?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:


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!

Shell Root

Es mejor una matriz, así:
Código (php) [Seleccionar]
$sPoC[0] = array("Inicio", "index.php");
$sPoC[1] = array("¿Quiénes somos?", "quienes_somos.php");
$sPoC[2] = array("Trabajo comunitario", "trabajo_comunitario.php");
$sPoC[3] = array("¿Por qué reciclar?", "porque_reciclar.php");

for( $i = 0; $i < count( $sPoC ); $i++ ){
print "Nombre:  ".$sPoC[$i][0]."\n";
print "Archivo: ".$sPoC[$i][1]."\n\n";
}


Salida:
Código (PoC) [Seleccionar]
shellroot@alex:~/Escritorio$ php PoC.php
Nombre:  Inicio
Archivo: index.php

Nombre:  ¿Quiénes somos?
Archivo: quienes_somos.php

Nombre:  Trabajo comunitario
Archivo: trabajo_comunitario.php

Nombre:  ¿Por qué reciclar?
Archivo: porque_reciclar.php
Por eso no duermo, por si tras mi ventana hay un cuervo. Cuelgo de hilos sueltos sabiendo que hay veneno en el aire.

Feedeex

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.

<?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.

bomba1990

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.
"Cuando le di de comer a los pobres me llamaron santo, pero cuando pregunte porque los pobres eran pobres me dijeron comunista"

http://sosinformatico.blogspot.com/
http://www.publisnet.com.ve

Feedeex

Es verdad, tenía que usar un return. Disculpen mi ignorancia en algunas cosas y muchas gracias por ayudarme :D