Foros del Web » Programando para Internet » PHP »

echo en un <li>

Estas en el tema de echo en un <li> en el foro de PHP en Foros del Web. Hola a todos... He realizado una pequeña función sobre Multiples idiomas. Todo funciona bien con un "pero", resulta que tengo el menú horizontal realizado con ...
  #1 (permalink)  
Antiguo 12/11/2009, 07:22
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
echo en un <li>

Hola a todos...

He realizado una pequeña función sobre Multiples idiomas. Todo funciona bien con un "pero", resulta que tengo el menú horizontal realizado con sólo <li> de CSS y resulta que no me imprime el "echo de php", aquí va el ejemplo de un <li>:

Código PHP:
<li class="top-level-li"><a class="top-level-a down" href="#url"><b><?php echo $text['genealogia']; ?></b><!--[if gte IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
He buscado (tal vez mal) pero no puedo encontrar la solución... ojalá me puedan ayudar!
  #2 (permalink)  
Antiguo 12/11/2009, 07:41
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Hazle un var_dump a la variable para que te diga que es lo que hay en ella.
Código PHP:
Ver original
  1. var_dump($text["genealogia"]);
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #3 (permalink)  
Antiguo 12/11/2009, 07:49
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

Hola abimaelrc...

Me da como respuesta NULL

con eso ya me compliqué del todo!!!

Saludos
  #4 (permalink)  
Antiguo 12/11/2009, 07:52
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Pues no esta trayendo informacion, verifica que escribiste correctamente la variable y que exista dentro del array una llave llamada genealogia.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #5 (permalink)  
Antiguo 12/11/2009, 08:02
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

Si, la variable esta bien escrita y el array existe... por que al sacarla del menú, osea del <li> y ponerla en otro sector me la imprime correctamente
  #6 (permalink)  
Antiguo 12/11/2009, 08:04
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Vas a tener que postear el codigo que haz hecho porque el problema esta en esa parte que estas tratando de imprimir la variable posiblemente no exista la variable $text o el array.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #7 (permalink)  
Antiguo 12/11/2009, 08:38
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

Bien, en todas las páginas hago un include(interface), en él tengo las funciones php del menú:


Código PHP:
<?php function CabeceraPagina() { ?>
<!-- CABECERA --><div style="width:100%; background-image:url(imagen); height: 89px;">
<!-- MENU --><div id="menu">
    <ul class="top-level">
        <li class="top-level-li"><a class="top-level-a" href="http://www.misitio"><b>Inicio</b></a></li>
        <li class="top-level-li"><a class="top-level-a down" href="#url"><b><?php echo $text["genealogia"]; ?></b><!--[if gte IE 7]><!--></a><!--<![endif]-->
        <!--[if lte IE 6]><table><tr><td><![endif]-->
        <ul class="drop-down">
          <li><a href="/pagina/menu/listapetng.php">Lista de Apellidos</a></li>
        </ul>
        </li>
    </ul>
<!-- FIN MENU -->
<!-- FIN CABECERA --></div>        
<?php ?>

Me parece que el problema esta en el "echo" dentro de la "function"
  #8 (permalink)  
Antiguo 12/11/2009, 08:42
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Pero ¿donde estás indicando anteriormente el array $text?
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #9 (permalink)  
Antiguo 12/11/2009, 08:58
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

Bien, en las páginas incluyo también el archivo saberidioma.php en el cual está el codigo para detectar el idioma y ahí da las rutas hacia los archivos text_es.php y demás idiomas que contienen los array $text[] = "";

Código PHP:
<?php include($_SERVER['DOCUMENT_ROOT']."/conf/idioma/saberidioma.php"); ?>
y el código de saberidioma.php es el siguiente:

Código PHP:
<?php
$idioma 
= isset($_COOKIE['lang']) ? $_COOKIE['lang'] : "";

if (
$idioma == "") {
$idioma $_SERVER['HTTP_ACCEPT_LANGUAGE'];
$idioma substr($idioma02);
}
if (
$idioma == "es") {
require_once(
$_SERVER['DOCUMENT_ROOT']."/conf/idioma/text_es".$string.".php");
}
elseif (
$idioma == "en") {
require_once(
$_SERVER['DOCUMENT_ROOT']."/conf/idioma/text_en".$string.".php");
}
if(isset(
$_GET['lang'])) {
$idioma $_GET['lang'];
setcookie("lang"$idiomatime() + (3600 24 30), '/');
}
else if(isSet(
$_COOKIE['lang'])) {
$idioma $_COOKIE['lang'];
}
else {
$idioma 'es';
}
switch (
$idioma) {
  case 
'en':
  
$lang_file 'text_en.php';
  break;

  case 
'es':
  
$lang_file 'text_es.php';
  break;

  default:
  
$lang_file 'text_es.php';
}
include_once(
$_SERVER['DOCUMENT_ROOT']."/conf/idioma/".$lang_file);
?>
  #10 (permalink)  
Antiguo 12/11/2009, 09:37
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Pero aun en el codigo que expusiste no veo la variable $text que contiene el array.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #11 (permalink)  
Antiguo 12/11/2009, 09:43
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

En el caso del archivo text_es.php de idioma Español, lo tengo así:

Código PHP:
<?php
//comun
$text['selectidioma'] = "Cambiar Idioma";
$text['inicio'] = "Inicio";
$text['area'] = "Area";
$text['genealogia'] = "Genealogía";
?>
Disculpas si se me espana cosas por novato!
  #12 (permalink)  
Antiguo 12/11/2009, 09:55
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Ok, vamos por parte, primero vas a tener que hacer un var_dump en cada pagina a ver si sale informacion de esa variable. Te sugiero que en la pagina saberidioma.php al final de esa pagina (a lo ultimo) coloques un var_dump de la variable $text para ver si te trae informacion. Así vas haciendo hasta llegar a la pagina donde debes llamarlo.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #13 (permalink)  
Antiguo 12/11/2009, 10:09
 
Fecha de Ingreso: noviembre-2009
Mensajes: 16
Antigüedad: 15 años
Puntos: 1
Respuesta: echo en un <li>

Hola estaba revisando tu post, espero ser claro ya que soy nuevo en este foro.

Tu problema aparentemente es que en una página tienes la variable $text,
en otra haces un include a esa que te carga el idioma en el arreglo $text,
Luego en una función mandas a imprimir el contenido de tu $text;
por lo que tienes por ejemplo abreviando:

Código:
<?php
    $text["texo"] = "Hola mundo";
    function menu() {
        echo $text["texto"];
   }
?>
Oviamente no te va a imprimir nada porque no estás tomando en cuenta el ámbito de las variables, lo correcto sería.

Código:
<?php
    $text["texo"] = "Hola mundo";
    function menu() {
        global $text;
        echo $text["texto"];
   }
?>
Si te fijas aquí al poner global $texto, estás diciendo que la variable $text es una variable que está fuera de la función, pero que necesitas utilizarla para imprimirla.

Esto solucionaría tu problema, como recomendación, te sugiero manejar los idiomas en archivos xml y tener una clase que maneje tus idiomas y que cargue el xml de acuerdo al idioma que necesitas e imprima su contenido, es un tema un poco largo, pero lo importante era solucionar tu problema.

Saludos Cordiales.

Ing. Cristian Avila Montalvo.
Microsoft Certified Professional
Zend Certified Engineer
Senior Developer Metamorf
Senrio Developer Vivatravelguies.
  #14 (permalink)  
Antiguo 12/11/2009, 10:12
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

He puesto var_dump($text["genealogia"]); a lo último del archivo saberidioma.php y me da: string(11) "Genealogía"

En lo demás, que son 3 páginas por ahora, me da NULL

Es como que no está recibiendo la info de las variables en los archivos de idioma. Cuando pongo, por ejemplo, dentro de <?php funtion CabeceraPagina() { ?> el include "<?php include($_SERVER['DOCUMENT_ROOT']."/conf/idioma/text_es.php"); ?>" ahí me toma la variable en Español

No se por que no toma las rutas la funtion!
  #15 (permalink)  
Antiguo 12/11/2009, 11:12
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 15 años, 5 meses
Puntos: 1517
Respuesta: echo en un <li>

Lo que te esta indicando critter2323 es correcto, en la funcion tienes que declararla global. Lee lo que te indico.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos
  #16 (permalink)  
Antiguo 12/11/2009, 12:06
 
Fecha de Ingreso: octubre-2004
Mensajes: 768
Antigüedad: 20 años, 1 mes
Puntos: 3
Respuesta: echo en un <li>

Hola critter2323 y abimaelrc...

Cuando estaba escribiendo mi penúltimo post, en ese momento me estaba contestando critter2323, por eso no vi su post!

Efectivamente, utilice "global $text;" en la funtion y anda perfefctamente!!!

Desde ya muy agradecido a ambos!

Por favor, para seguir aprendiendo, dónde puedo rescatar información de "...manejar los idiomas en archivos xml y tener una clase que maneje tus idiomas y que cargue el xml de acuerdo al idioma que necesitas e imprima su contenido" como me sugiere critter2323?

Saludos!
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 22:02.