Foros del Web » Programando para Internet » PHP »

Problemas con links dentro de un include

Estas en el tema de Problemas con links dentro de un include en el foro de PHP en Foros del Web. Hola a todos! Estuve buscando en las faqs sobre mi problemita y creo que no encontré la solución (espero, antes que me reten) Es simple: ...
  #1 (permalink)  
Antiguo 20/04/2004, 14:23
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
Problemas con links dentro de un include

Hola a todos! Estuve buscando en las faqs sobre mi problemita y creo que no encontré la solución (espero, antes que me reten)

Es simple: tengo un sitio muy sencillo con sub-carpetas y todas las páginas tienen el mismo menú. A ESE menú lo llamo con un include.
El problema está en los links. Solo desde la página principal hacia todo el sitio funciona perfecto... pero desde cualquiera de las demás páginas seleccionadas hacia otro sector del sitio, los links no funcionan. Es como que se repiten algunos directorios.

Este sitio ya lo tengo armado y funciona con el ejemplo de "Web Modulares" que dió Cluster, pero en este caso solo usé una página sola con el menú. De esta forma, cada item incluye solo el contenido en el cuerpo de esta única página.

Lo que quiero hacer ahora es que cada página tenga este menú (esto YA está echo) pero que me funcionen los links.

¿Hay alguna forma de hacerlo, parecido al ejemplo de "WEB Modulares"? ¿Cómo hago para llamar a otra página en vez de incluirla?

Gracias gente por todo y como dije antes, creo que no lo encontré antes de escribir esto.

Si a alguien le ofende mi pregunta porque Sí estaba la respuesta, tan solo no me responda. Volveré a buscar.

Gracias por todos de antemano y felicitaciones por este gran foro.

Atte. desde Argentina... Marx.
  #2 (permalink)  
Antiguo 20/04/2004, 15:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
¿Hay alguna forma de hacerlo, parecido al ejemplo de "WEB Modulares"? ¿Cómo hago para llamar a otra página en vez de incluirla?
literalmente sería (si no vas a incluirna sino que quires redireccionar, cambiar la página completa ..):

Código PHP:
header("Location: pagina_llamar.tal");
exit; 
No sé si será eso lo que necesitas .. Sólo recuerda que antes de una llamada a header() NO puede existir nada de HTML por encima de ella (salida en general) .. ni un simple espacio antes de <? ni un salto de línea antes de <? .. ni echo "algo" ni HTML/etc ...

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 20/04/2004, 15:49
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
en caso de que no se lo que cluster dice

beuno si lo que quieres es incluir solo el menu (que supongo eso es lo que quieres) fijate si no estas comentiendo error con las rutas de los link por ejmplo:
supongamos que el menu esta en una subcarpeta llamada menu:
entonces la dirección para ir al link seria
<a href="../lo_que_sea/pagina.php">

pero que pasa si incluyes el menu en el index es decir no en una subcarpeta... pues esta direccion estaria mala, recuerda que el "include" incluye las lineas del codigo en este caso la forma correcta de colocar la direccion seria la siguiente

<a href="lo_que_sea/pagina.php">

mira que no me devolvi en la carpeta

bueno espero em halla hecho entender
un saludo
__________________
SEO en Medellin
  #4 (permalink)  
Antiguo 20/04/2004, 18:43
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
Gracias gente por responder, pero ninguna de las dos formas me funcionó.

Efectivamente tengo páginas en sub-carpetas y ahí es donde vienen los problemas.

Pero para que me comprendam mejor lo que necesito hacer... en la página principal de Maestros del Web, en la parte superior hay en negro un menú y los enlaces que aparecen... ¿están hechos con include? ("la web del programador" también tiene este sistema de menú)

¿No se puede hacer con el formato de WEbs Modulares... no sé, metiendo en una variable la url a la página o algo así?

Sepan disculparme, pero si no les pido ayuda a uds. que saben... a quien voy a recurrir. A lo sumo no se podrá hacer, pero tengo que aprender.

Gracias a todos.

Marx.
  #5 (permalink)  
Antiguo 20/04/2004, 20:41
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
en efecto, bueno asi por encima supongo que si

pues estube mirando el codigo... y no tiene nada raro, simplement para cada pagina inserta el mismo menu eso se puede hacer (y seria la forma mas facil) con un include...

sabes como funciona el include???

lo que hace es que inserta las lineas de codigo de un archivo donde se pide que lo inserte, es decir ud puede incluir un archivo de texto (solo el contenido), lo que nos ahorra esta d¿funcion es un monton de codigo que ya hemos realizado (bueno esto en principio y no pienso enredarte mas) en si dejanos ver tu problema, haber si te podemos ayudar...
__________________
SEO en Medellin
  #6 (permalink)  
Antiguo 20/04/2004, 21:24
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
mafima: Muchas gracias por tu atención.

Como te habrás dado cuenta, hace poco comencé a meterme en este mundo de PHP y no me canso de leer y buscar y ver las dudas que tienen todos (como yo) en esta sección de los foros del web. Pero bueno, a los ponchasos uno aprende.

Si no es mucha molestia, quisiera que entres a la página que estoy haciendo... es muyyyy básica y solo usé PHP para el menú y los includes que por cierto funciona de maravillas... la página es http://www.chevereproducciones.com.ar/indexa.php

Para que veas, es una sola página con menú, cabecera y pié y lo único que cambia es el contenido, la info de donde apuntan los links. Esto lo creé con el ejemplo de Webs Modulares de Cluster. Las demás páginas son solo texto.

Como te decía antes, en otras pruebas offline que estoy haciendo, con include puse el menú en todas las páginas, pero me gustaría hacer los links del menú en PHP, como el ejemplo de web modulares.

O sea... ¿no se puede reemplazar algo de acá?
<?
$id=$_GET['id'];

switch ($id) {
case 1:
include("pagina1.php"); // en vez de include que te mande a esa página
break;

Ya se que pido mucho, pero si no se puede... para que seguir insistiendo.
Simplemente quisiera saber si se puede y desde ya te agradesco mucho la atención.

Un abraso argentino.

Marx.

Última edición por marx; 20/04/2004 a las 21:27
  #7 (permalink)  
Antiguo 20/04/2004, 22:51
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Creo que no estás siendo claro aún...

Si lo que quieres es redireccionar (como ya te dijo Cluster), utiliza la función header():
Código PHP:
$id=$_GET['id'];

switch (
$id) {
case 
1:
header("location: pagina1.php"); //ahora te redirecciona a esa página.
break; 
No sé si eso es lo que quieres.. pero si no... pon un ejemplo o trata de explicar con más detalle tu problema.

Saludos
  #8 (permalink)  
Antiguo 21/04/2004, 06:47
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
A ver si entendí ahora ..

Si tu tienes una estructura tipo:

/
/directorio1
/directorio2 --> aquí nose.php que llama a tu menu.php bajo un include
/directorioN
index.php -> que llama a tu menu.php
menu.php -> y .. menu.php lo tienes en el raiz por ejmplo

Para ese tipo de "lios" de directorios lo ideal es que indiques rutas abosolutas completas a tus archivos a incluir y lo mismo en las imagenes/archivos (como css, javascript externos .. etc) que uses en ellos.

Es decir .. un supuesto menu.php con llamadas a imagenes deberían ser tipo:
<img src="http://www.nose.tal/imagenes/aqui_una.tal">

De esta forma dará igual donde llames tu include("menu.php") con su ruta absoluta si corresponde o relativa según subas de rama en tu estructura de directorio.

Y los links que hagas "dinámicos" .. si son archivos a incluir deberías usar rutas absolutas tipo:

include($_SERVER['DOCUMENT_ROOT']."/menu.php");

o donde tengas tu menú .. el caso es que "DOCUMENT_ROOT" (hazle un echo a eso) te va a devolver la ruta absoluta de donde esté tu sitio (si usas servidores virtuales será tu sitio .. si no usas servidores virtuales y divides tus "sitios" en simples directorios .. tendrás que añadir ese directorio a la ruta ..)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #9 (permalink)  
Antiguo 21/04/2004, 13:22
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
Muchas gracias a todos por la ayuda. Ya estoy probando todo.

Una ultima pregunta y no molesto mas...

¿como se hace para que al pasar el mouse por arriba de los links aparezcan de esta forma y no el nombre de la página con la extensión?
http://www.maestrosdelweb.org/editorial/
http://www.maestrosdelweb.org/actualidad/
http://www.maestrosdelweb.org/lista/

Esta forma se ve en muchos lados...

Graxias otra vez y milllllllllllones de graxias nuevamente.

Saludos.

Marx
  #10 (permalink)  
Antiguo 21/04/2004, 14:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
como se hace para que al pasar el mouse por arriba de los links aparezcan de esta forma y no el nombre de la página con la extensión?
Se hace con técnicas de "reescritura" del URL .. como las que puedes ver en este tutorial:

http://www.zonaphp.com/articulo30.php

pero más simple .. Si tu creas una estructura de directorios con esa forma y en cada directorio usas un index.php .. podrás acceder a esa página con esa ruta e incluso hacer cosas tipo:

http://www.nose.tal/nose/?variable=valor

pero, .. más bien hoy por hoy se hace como se describe el tutorial que te dejé el link .. con alguna de esas técnicas que se describen ahí.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #11 (permalink)  
Antiguo 21/04/2004, 14:34
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Cluster, que tan bueno es usar estas rutas absolutas, no es mejor relativas para hacer más portable la aplicación..?????

ahora lo del menú no se si entendi bien lo que pedis de los include... pero que tal si probas con iframe en html??? si es para llamar siemre el mismo menú y que solo cambie el texto??... (que conste que no entiendo bien lo que te pasa.. )
  #12 (permalink)  
Antiguo 21/04/2004, 14:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Cluster, que tan bueno es usar estas rutas absolutas, no es mejor relativas para hacer más portable la aplicación..?????
Con la variable de servidor DOCUMENT_ROOT .. tienes el problema de la portabilidad resuelto.

$_SERVER['DOCUMENT_ROOT']

No te lo puedo confirmar .. pero supongo que dar una ruta absoluta a una función tipo "include()" será algo más rápido que el S.O. empiece a "calcular" rama por rama según ../ hagas. (pero es sólo una supoción ..)

Dar una ruta absoluta también limitas las acciones de momiviendo por la estructura de directorios .. "fijando" una ruta de origen tipo la que te dá DOCUMENT_ROOT

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #13 (permalink)  
Antiguo 21/04/2004, 14:59
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
Salome: es muy simple:

Tengo 6 páginas .php y 1 página donde solo está la estructura del menú que se llama menu.php y en las 6 tiene que ir ese menú en la parte izquierda. Para esto hago en las 6 páginas un <? include('menu.php'); ?>

El tema está en que las 6 páginas tienen distintos niveles... una es el index.php y las demás están dentro de carpetas y sub-carpetas y no logro que los links de ese menu.php funcione por igual en tooooodas las páginas. Por eso que Cluster decía lo de las rutas absolutas y relativas.

Pero yo sigo insistiendo que no es muy complicado lo que pido, ya que ni siquiera estoy trabajando con base de datos (por ahora) y seguro que me estoy expresando mal por principiante que soy.

Simplemente necesito un menú donde los links funcionen en todas las páginas que haga. Lo que no sé es como hacerlo con código. Por eso pregunté sobre los links que aparecen de esta forma http://www.maestrosdelweb.org/editorial/

Igual desde hace días que estoy recorriendo el foro buscando y aprendiendo cosas así que si no lo encuentro, tal vez lo invento ;)

Un abraso Salome y gracias por aportar.

Marx.

PD: GRACIAS CLUSTER...... POR EL TUTORIAL Y LA PACIENCIA.
  #14 (permalink)  
Antiguo 21/04/2004, 15:05
Avatar de Salome  
Fecha de Ingreso: noviembre-2002
Ubicación: Colombia
Mensajes: 1.032
Antigüedad: 21 años, 5 meses
Puntos: 1
Pues simple (creo.. )... el menu.php dejalo donde tenes el index.php por ejemplo.... y pues cada vez que haces el include para este.. desde cualquiere página independiente donde este, es en el include que das la ruta del lugar donde se encuentre el menu.php...y ya este (menu.php) pues ya debe funcionar asi...
  #15 (permalink)  
Antiguo 21/04/2004, 19:05
Avatar de mafima  
Fecha de Ingreso: abril-2003
Ubicación: Medellin-Colombia
Mensajes: 1.109
Antigüedad: 21 años
Puntos: 24
QUE BIEN

CADA VEZ ME ENAMORO MAS D EFOROS DEL WEB....
creo que las dudas de marx quedaron resueltas... eso espero...
en sintesis, creo que el problema radicaba en la direccion que le daba en el menu general para llegar a cada una de las subcategorias del menu, por esto para todos los que posterior mente lean este mensaje, para mi criterio cuando hagan un menu coloquen URL asolutas...

__________________
SEO en Medellin
  #16 (permalink)  
Antiguo 22/04/2004, 15:27
 
Fecha de Ingreso: octubre-2003
Mensajes: 20
Antigüedad: 20 años, 6 meses
Puntos: 0
Cita:
Mensaje Original por jpinedo
Código PHP:
$id=$_GET['id'];

switch (
$id) {
case 
1:
header("location: pagina1.php"); //ahora te redirecciona a esa página.
break; 
Estuve probando esta opción del amigo jpinedo y solo me funciona si coloco un link directamente en en la página, sin utilizar include. De esta forma funciona. Pero no logro que funcione si lo coloco dentro del archivo menu.php y luego haciendo un include de este en la página principal:

index.php
<html>
// estructura de la página
<? include('menu/m_ppal.php'); ?>
// resto de la estructura de la página
</html>

menu.php
<?
$id=$_GET['id'];
switch ($id) {
case 1:
header('Location: prueba.php'); //ahora te redirecciona a esa página.
break;
}
?>

<table width="99%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td width="98%" height="1" bgcolor="#FFCC00" class="link-menu"><img src="/menu/trans_1x1.gif" width="1" height="1"></td>
</tr>
<tr align="center">
<td width="98%" height="18" align="center" bgcolor="#FFCC00" class="link-menu">ESPECTACULOS</td>
</tr>
<tr align="right">
<td width="98%" height="1" align="right" bgcolor="#FFFFFF" class="link-menu"><img src="/menu/trans_1x1.gif" width="1" height="1"></td>
</tr>
<tr align="right">
<td height="20" align="left" class="link-menu"
onClick=mClk(this);
onMouseOver="mOvr(this,'#CAE395');"
onMouseOut="mOut(this,'');">&nbsp;• <a href="menu/indexa.php?id=1">prueba</a></td>
</tr>
<tr align="right">
<td height="1" align="left" bgcolor="#FFFFFF" class="link-menu"><img src="/menu/trans_1x1.gif" width="1" height="1"></td>
</tr>
</table>


Me tira error.

Creo que lo que me está fallando es la forma de "linkear" a prueba.php.

Diganme... el link prueba <a href="menu/indexa.php?id=1">prueba</a> ¿está bien direccionado o me mandé cualquiera?

Y una última cosita: una opinión...
Recorriendo el foro PHP y buscando y buscando noté que fueron muchas las personas que en allllgo tuvieron la misma duda que yo sobre esto del menú... ¿no se podría hacer un ejemplito aunque sea muy chiquito como para indicarnos la forma de crearlo? No pido mucho, solo 2 secciones que lleven a otra parte del sitio y encima sin trabajar con base de datos.

Ya sé que me van a decir... ya hay uno y es web modulares y les agradesco mucho el haberlo puesto porque con ese ejemplo armé mi sitio expuesto más arriba y solo pregunté por esto una o dos veces y en este post voy batiendo records.
Pero me gustaría si ese menú puede ir en cada página y estar hecho en php.

Yo por mi parte sigo recorriendo los rincones del foro "picoteando" códigos a ver si armo algún rejunte (con tutorial cerca por supuesto).+

Ya sé que soy hinchapelotas, pero acuerdense que a veces un ejemplito concreto es mejor que mostrar pedazos de código que a veces nosotros los pataduras no sabemos donde ponerlo.

Como siempre, les agradesco la ayuda, la atención y por sobretodo... la paciencia.

Saludos y buenas programaciones.

Atte. Marx.
  #17 (permalink)  
Antiguo 23/04/2004, 06:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Por mi parte creo que ya te he dado la solución en anteriores mensajes.

El ejemplito que pides .. mas bien seria una FAQ tipo "direcciones absolutas y relativas" .. pues el transfondo del problema es eso mismo, saber donde se requiere una ruta absoluta y donde una relativa .. además de tener claro en que consiste una estructura de directorios y otros temas que .. tal vez tu conozcas pero mucha gente se lia con eso.

A todo esto .. cuando dices "me tira error" .. En los foros y si preguntas algo .. es imprescindible que menciones el error textual que te dé PHP o lo que corresponda. Del error suelen salir los problemas que tienes y en consecuencia la solución. (esto como norma general simplemente: más datos = mejor respuesta)

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 12:49.