elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  Problema al concatenar cadenas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema al concatenar cadenas  (Leído 4,801 veces)
Feedeex

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Problema al concatenar cadenas
« 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:


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!


En línea

Shell Root
Moderador Global
***
Desconectado Desconectado

Mensajes: 3.724


<3


Ver Perfil WWW
Re: Problema al concatenar cadenas
« Respuesta #1 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


En línea

Te vendería mi talento por poder dormir tranquilo.
Feedeex

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Problema al concatenar cadenas
« Respuesta #2 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.
En línea

bomba1990


Desconectado Desconectado

Mensajes: 395



Ver Perfil WWW
Re: Problema al concatenar cadenas
« Respuesta #3 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.
En línea

"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

Desconectado Desconectado

Mensajes: 173


Ver Perfil
Re: Problema al concatenar cadenas
« Respuesta #4 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
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
[PROBLEMA] Concatenar variables. [SOLUCIONADO]
Programación C/C++
Siquillote 8 8,293 Último mensaje 27 Diciembre 2010, 14:12 pm
por Siquillote
Concatenar cadenas
Programación C/C++
caronte80 4 4,374 Último mensaje 31 Agosto 2012, 23:38 pm
por avesudra
problemas con concatenar cadenas
Programación C/C++
d91 2 2,140 Último mensaje 15 Abril 2014, 15:53 pm
por d91
Concatenar cadenas con memoria dinámica en lenguaje C.
Programación C/C++
NOB2014 3 4,537 Último mensaje 19 Junio 2016, 19:22 pm
por AlbertoBSD
Concatenar cadenas o string verticalmente
Programación General
Flamer 6 4,602 Último mensaje 15 Julio 2017, 13:58 pm
por ivancea96
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines