Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => 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í:

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

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

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