Foros del Web » Programando para Internet » PHP »

LLamar a archivos para cargarlos en una web con aspecto predefinido

Estas en el tema de LLamar a archivos para cargarlos en una web con aspecto predefinido en el foro de PHP en Foros del Web. Hola!! Hace unos dias estoy estudiando un poco de php , lo cierto es que me gustaria sacarle algo , sin embargo por mucho que ...
  #1 (permalink)  
Antiguo 18/01/2003, 08:51
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
LLamar a archivos para cargarlos en una web con aspecto predefinido

Hola!!

Hace unos dias estoy estudiando un poco de php , lo cierto es que me gustaria sacarle algo , sin embargo por mucho que leo hay algunas cosas que no me quedan claras y que no termino por resolver ya que no se apenas de programacion , tan solo interpretar el codigo de fuente... no aspiro a mucho nivel , simplemente quisiera hacer mas comodas y dinamicas las actualizaciones de mi web , tanto en diseño como en contenidos ... y no usar frames !!! ^_^ .Actualizar fichero por fichero despues de saber lo que se puede conseguir con php ya me parece absurdo :)

Mi duda es la siguiente . Me gustaria saber si mediante Includes , requires o cualequier otra funcion se pueden cargar diferentes paginas una vez se haya definido una pagina por defecto a cargar en ese include , llamandola como he visto en phpnuke por ejemplo www.loquesea.com/modules.php?name=elarchivo etc ..., para mantener un aspecto general en el web , he visto el codigo de fuente de phpnuke y no deseo algo tan complejo ... ni siquiera pienso usar DB ... El archivo que se encuentra en el directorio "modules" ,subdirectorio "nombredelmodulo" contiene un include de header.php y otro de footer.php , el resto es un script que queda adaptado al sitio mediante esos parametros de incluir header.php y footer.php .

Me gustaria saber simplemente donde podria encontrar informacion acerca de como definir la pagina en la que se cargaran los archivos a incluir (pagina modelo - index.php) y como definir en el archivo tal.php?(modules.php? del ejemplo)... las funciones que van a permitir que lo haga ... no se como se llama todo esto que cuento , por cierto , no estoy usando db :)

No se si me he explicado bien , ya que todo esto es muy nuevo para mi y de terminos voy un poco mal ....

Muchas Gracias de antemano a todos y saludos !
__________________
Aprender es duro, no aprender lo es más aún .
  #2 (permalink)  
Antiguo 18/01/2003, 09:16
Avatar de MSDark  
Fecha de Ingreso: noviembre-2002
Ubicación: Talca VII región
Mensajes: 337
Antigüedad: 15 años, 1 mes
Puntos: 1
Simple, aver lo que tienes que hacer es tener un index.php con sentencias de control como switch o simples if,elseif y else


yo personamente utilizo switch


Código PHP:

<?
switch ($modulo)//Esta es la variable que ira cambiando dependiendo del enlace
{
case 
inicio://En caso de ser index.php?modulo=inicio, incluimos inicio.
include("inicio.php");
break;

case 
mail:
include(
"mail.php");
break;

default:
//Y por defecto no incluye inicio.php
include("inicio.php");
}
Y ese es todo el codigo.

y en los enlaces tendrias qur poner algo asi

Código PHP:
<a href="index.php?modulo=inicio">Inicio</a

Y listo espero te quede claro
__________________
DelirioLinux.. Software Libre y tecnología.. php también..
Saludos :arriba:
Usuario Linux #198486 y Ubuntu #12791
Gutsy Gibbon
  #3 (permalink)  
Antiguo 18/01/2003, 10:45
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
En las FAQ's de PHP tienes una explicación al respecto .. con integración con tu HTML de "mascara" (template, plantilla) y algunas observaciones ..

http://www.forosdelweb.com/showthrea...278#post265278

Un saludo,
  #4 (permalink)  
Antiguo 18/01/2003, 18:29
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Muchas gracias por todo!!

Muchas gracias por todo a los dos !!

Ahora mismo voy a ponerme a ver que puedo hacer y si consigo integrar las paginas externas y que funcione todo en condiciones

Saludos y Gracias de nuevo de veras !!
__________________
Aprender es duro, no aprender lo es más aún .
  #5 (permalink)  
Antiguo 18/01/2003, 20:33
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Es posible continuar cargando includes pero ya desde http://elsitio.com/index.php?id=1 ??

Me refiero por ejemplo si estoy usando el id=1 para llamar al indice de un libro de visitas , como puedo cargar el resto de paginas (publicar mensajes ...confirmar la publicacion , etc ...) dentro de la zona que he definido para incluir los includes .Hay alguna forma de hacerlo ?

Siento mi torpeza y gracias de nuevo :)
__________________
Aprender es duro, no aprender lo es más aún .
  #6 (permalink)  
Antiguo 18/01/2003, 21:19
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes q modificar todo el código de ese libro de visita o aplicación q uses q se componga de varias páginas (scripts).

Tienes que "propagar" esa variable ID en todo momento .. Es decir; donde tengas un link tipo:

librovisitas_publicar.php?suvariable=valor&otracos asuya=valor

Tendras q "sumar" tu variable id en ese link:

librovisitas_publicar.php?suvariable=valor&otracos asuya=valor&id=1
(siendo tu id=1 correspondiente a esa aplicación).

Otra solución menos drastica (no hay q modificar nada del código de esas aplicaciones) sería usar session o cookies para guardarte esa variable de control q usas para identificar en que "seccion" se encuentran trabajando tus scripts.

Si quieres .. y no conoces como trabajar con sesiones revisa las FAQ's de PHP .. (mira el indice) .. Tienes unos ejemplos de uso básico de sessiones ..

Un saludo,
  #7 (permalink)  
Antiguo 19/01/2003, 09:01
Avatar de udeboss  
Fecha de Ingreso: marzo-2002
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 0
Hola.
Yo tambien soy nuevo en esto del php y se me ocurrió usar el método de propagar la variable "id" para definir la página index.php. Me explico. Esta página index.php está estructurada en diferentes partes, a saber:
1- Área de banner
2- Área del menú
3- Área de información o principal
4- Área de "pie de página"

El archivo index.php tiene la pinta:

Código PHP:
<html>
    <head>
        <title>: FotoDreams : Tus fotos</title>
    </head>
    <body bgcolor="#ffffff" leftmargin="0" marginheight="0" marginwidth="0" topmargin="0">

<?php # creación de id[]:

    
if ( empty($id) ) { $id='00000000'; } # En caso de que no exista la cadena id, pues la inicializa a '00000000'
    
$separador=" ";
    
$id = (string)$id;    #Fuerzo a id a ser string (por si las moscas);
    
$id1 chunk_split($id,2,$separador);    #Separo id en grupos de dos caracteres separados por $separador.
    
$id explode($separador,$id1,5);    #Ahora id pasa a ser un array con elementos los grupos anteriores (y un máximo de 5 grupos)
?>
        <table width="600" border="1" cellspacing="0" cellpadding="0" align="center">
            <tr>
                <td colspan="2">
                <?php #Área del banner = Area0 y id[0]
                        
if ( empty($id[0]) ) { $id[0]='00';echo "<b>No has metido id[0] del área 0</b>"; }
                        
$area0 'a0_'.$id[0].'.htm';    #Creo el nombre a partir de id[0]
                        
if ( !file_exists($area0) ) { 
                            echo 
"fichero $area0 no encontrado o inválido<br>";
                        } else {
                            include(
$area0);
                        }
                
?>
                <img src="pix.gif" alt="" height="1" width="780" align="left" border="0"><br>
                </td>
            </tr>
            <tr>
                <td valign="top">
                <?php #Área del Menu = Area1 y id[1]
                    
if ( empty($id[1]) ) {$id[1]='00'; echo "<b>No has metido id[1] del área 1</b>";}
                    
$area1 'a1_'.$id[1].'.htm';    #Creo el nombre a partir de id[1]
                    
if ( !file_exists($area1) ) { 
                            echo 
"fichero $area1 no encontrado o inválido<br>";
                        } else {
                            include(
$area1);
                        }
                
?>Area 1
<br>
                    <img src="pix.gif" alt="" height="1" width="120" border="0"></td>
                <td valign="top">
                <?php 
                    
if ( empty($id[2]) ) {$id[2]='00';echo "<b>No has metido id[2] del área 2</b>";}
                    
$area2 'a2_'.$id[2].'.htm';    #Creo el nombre a partir de id[2]
                    
if ( !file_exists($area2) ) { 
                            echo 
"fichero $area2 no encontrado o inválido<br>";
                        } else {
                            include(
$area2);
                        }
                
?>Area 2
<br>
                    <img src="pix.gif" alt="" height="1" width="660" border="0"></td>
            </tr>
        </table>
        <p>
        <?php
            
if ( empty($id[3]) ) {$id[3]='00';echo "<b>No has metido id[3] del área 3</b>";}
            
$area3 'a3_'.$id[3].'.htm';    #Creo el nombre a partir de id[3]
            
if ( !file_exists($area3) ) { 
                            echo 
"fichero $area3 no encontrado o inválido<br>";
            } else {
                include(
$area3);
            }
        
?>Pie de pagina</p>
    </body>
</html>
---
Mi variable "id" está dividida en cuatro grupos de dos letras para establecer los documentos a visualizar en cada área.

Haciendo esto, establezco que los ficheros que incluyo con "include" tengan un nombre con un prefijo del tipo de área (a0_*.htm; a_1*.htm ...) y, por ejemplo, el a1_00.htm (el del menú) puede ser de la forma:
Código PHP:
<div align="left">
    
Men&uacute;:
    <
p><font size="-1">1- <a href="ini.php?id=00001000">Quienes somos</a><br>
        </
font><font size="-1">2- <a href="ini.php?id=00002000">Servicios</a><br>
        </
font><font size="-1">3- <a href="ini.php?id=00003000">Acceso</a><br>
        </
font><font size="-1">4- <a href="ini.php?id=00004000">Registro</a><br>
        </
font><font size="-1">5- <a href="ini.php?id=00005000">Ofertas</a><br>
        </
font><font size="-1">6- <a href="ini.php?id=00006000">Galer&iacute;a</a><br>
        </
font><font size="-1">7- <a href="ini.php?id=00007000">Contacta</a><br>
        </
font><font size="-1">8- ....<br>
            <
br>
        </
font><a href="mailto:[email protected]"><font size="-2">webmaster@fotodreams.com</font></a></p>
    
</
div
---
El ejemplo funciona en http://usuarios.lycos.es/udeboss/pruebas/base/ini.php


Espero que te sirva de algo.
P.D. repito que soy un aprendiz novato en esto de php.
  #8 (permalink)  
Antiguo 19/01/2003, 10:12
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
(Words_in_Lam) .. te tocaria igualmente cambiar todos los links q se hagan a las páginas y los nombres de estas ..

Por mi parte prefiero dado el caso propagar mi ID añadiendolo a los links actuales .. o usar una variable de session para tal fin.

Pero está bien q salgan alternativas ..

Un saludo,

Última edición por Cluster; 19/01/2003 a las 10:14
  #9 (permalink)  
Antiguo 19/01/2003, 10:25
Avatar de udeboss  
Fecha de Ingreso: marzo-2002
Mensajes: 45
Antigüedad: 15 años, 9 meses
Puntos: 0
A ver si me explico...

La web tiene cuatro áreas. Según el valor de id incluyo un código html en cada área.

id = "XXYYZZWW" Donde :
XX -> clave para páginas del área0 o de banner
YY -> clave para páginas del área1 o del Menú (vertical izqa)
ZZ -> clave para páginas del área2 o de zona de lectura
WW -> clave para páginas del área3 o de pie de página


Al comienzo de index.php miro si me han enviado id, en caso contrario asigno id=00000000 por defecto. Después separo los cuatro grupos XX YY ZZ y WW y los meto en una nueva variable id de tipo array de strings de forma que:

id[0] contiene XX
id[1] contiene YY
id[2] contiene ZZ
id[3] contiene WW

Luego, en cada celda de latabla de index.php, incluyo un archivo generado por estos XX YY ZZ y WW de la forma:
Área0 -> Zona del banner. Los archivos que van aquí son de nombre: a0_XX.htm
Área1 -> Zona del Menú. Los archivos que van aquí son de nombre: a1_YY.htm
Área2 -> Zona de información. Los archivos que van aquí son de nombre: a2_XX.htm
Área3 -> Zona del piedepágina. Los archivos que van aquí son de nombre: a3_XX.htm

Por supuesto que los prefijos a0_ a1_ a2_ y a3_ se deberían cambiar por: banner_ menu_ central_ y piepag_ , por ejemplo, pero eso ya queda a gusto del consumidor.

Espero haberme explicado mejor. Los archivos para http://usuarios.lycos.es/udeboss/pruebas/base/ini.php están en http://usuarios.lycos.es/udeboss/pruebas/base/
Los *.htm son los que incluyo según la id que mande a ini.php?id=xxyyzzww

¿Mejor ahora? Sólo lo comentaba por si a alguien le valía de algo. Todavía me tengo que pelear con estas cosas para darme cuenta de que son muuuuucho más sencillas de cómo a mi se me ocurren ;)
  #10 (permalink)  
Antiguo 19/01/2003, 10:33
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
udeboss .. ya quedó claro como funciona tu "codigo"..

Pero lo que ¿creo? que no resuelve es el problema que planteabla Words_in_Lam:

Lo que planteaba no es como gestionar varias Zonas de la estructura de la template (mascara) .. sino Dentro de una misma Zona (ejemplo Zona de lectura) .. Como poder hacer varias llamadas a varias páginas q componen una aplicación tipo "foro .. libro de visitas .. etc" y .. q mas encima ya están desarrolladas .. con sus nombres propios de los scritps.php y páginas q use ..

Tu sistema ubeboss se basa en un diseño desde cero del "frame work" (o zona de trabajo) .. donde tu impones el estilo de llamadas a las páginas q uses con tu "codigo" caracteristicos ..

Ni mucho menos digo que esté "mal" .. es una solución mas a un mismo problema .. Peo no al problema que planteaba en ultima instancia Words_in_Lam ...

Por lo demas .. me gusta q valides el fichero q vas a cargar .. y en general las validaciones que haces para incluir solo la seccion q esté dentro del rango q defienes ...

Un saludo,
  #11 (permalink)  
Antiguo 19/01/2003, 10:58
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Gracias de nuevo!!

Lo cierto es que en poco tiempo , con vuestros ejemplos y haciendo muchas prueba en el http://localhost voy aprendiendo y entendiento un poco la sintaxis de php , aunque todavia me cuesta bastante escribirla para funciones , para mi (no digo que lo sean jeje) bastante complejas .

He probado todos los ejemplos , simplemante por ver cual iba a serme más facil de recordar a la hora de escribir el hipervinculo , y de propagar las id en los hipervinculos .... Finalmente he elegido:

<?
$id=$_GET['id'];

switch ($id) {
case 1:
include("pagina1.php");
break;
case 2:
include("pagina2.php");
break;
case 3:
include("pagina3.php");
break;
default:
include("pagina_por_defecto.php");

}
?>


y he cambiado los id numéricos por el nombre de la sección ej :

<?
$id=$_GET['id'];

switch ($id) {
case librodevisitas:
include("tipo/librodevisitas/index.php");
break;
....
y usando el enlace Ej.-

<a href="index.php?id=librodevisitas">Libro de visitas</a>

Me funciona perfectamente ...

El problema me sigue surgiendo a la hora de continuar cargando paginas del script , por ejemplo , a la hora de firmar , directamente tengo un enlace a "firmar.php" en el index del libro de visitas que cargué como include en el template de mi sitio ...

ahora no se como enlazarlo ...

creeis que podría conseguirlo creando un nuevo index.php en el script ,en el que usase el modelo anterior

<?
$id=$_GET['id'];

switch ($id) {
case 1:
include("pagina1.php");
break;
case 2:
include("pagina2.php");
break;
case 3:
include("pagina3.php");
break;
default:
include("pagina_por_defecto.php");

}
?>

y de esta forma usase includes dentro de un include principal ??

o quizas sea mucho lio , no?

Me sugerís algo ? je je

Creo que tendré que estudiar más ...
__________________
Aprender es duro, no aprender lo es más aún .
  #12 (permalink)  
Antiguo 19/01/2003, 11:35
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tienes q anidar los switch () para gestionar una nueva variable que será la "sub-seccion" o página del grupo q se está ejecutando .. y a su vez cambiar todos los links q haga referencia a firmar.php .. por:

index.php?id=librovisita&accion=firmar
( o la seccion q requieras) ..

Luego en tu switch () del case "librovisita" tienes que anidar otro switch () para determinar que pagina ha de cargar dentro del grupo "librovisita" .


Código PHP:
<?
$id
=$_GET['id'];
$accion=$_GET['accion'];

switch (
$id) {

   case 
"librovisitas":

       echo 
"Estas en la seccion ".$id."<br>";

       switch (
$accion) {

          case 
"firmar":
                 include(
"firmar.php");
          break;

          case 
"nose":
                 include(
"nose.php");
          break;

        default:
           include(
"index_librovisita.php");   // caso q llames como index.php?id=librovisita .. sin $accion definida      
     
}

       break;

 case 
"otracosa":
     include(
"pagina2.php");
  break;

  case 
"otracosamas":
     include(
"pagina3.php");
  break;

   default:
       include(
"pagina_por_defecto.php"); // por si entras por index.php .. sin mas variables de control de seccion o accion.


?>
Pero recuerda .. q en los links q haga ese libro de visitas hacia tal o cual accion deberas incluir ademas de las variables q use propias las $id y $accion para q tu "template" sepa que ha de cargar en la zona que lo inclullas.

Un saludo,
  #13 (permalink)  
Antiguo 19/01/2003, 17:06
 
Fecha de Ingreso: enero-2003
Ubicación: Córdoba
Mensajes: 36
Antigüedad: 14 años, 10 meses
Puntos: 0
Bien !!! GRACIAS , GRACIAS !!

Ahora si que he conseguido integrar el script !!!

El script que estoy usando utiliza archivos de texto para escribir la informacion ... de momento no uso base de datos ... sigo investigando ,ya que en un principio , como era de esperar me escribia estos archivos en el directorio raiz de la web , pero creo que eso ya los soluciné , ahora sigo trabajando para conseguir integrar el script por completo ...

Ya iré contando que tal todo !!

Muchisimas Gracias por compartir vuestro conocimiento !!Muchisimas gracias por todo !! Me han ayudado mucho y creo que he aprendido algunas cosas que en los tutoriales , debido a mi total desconocimiento de programacion , no era capaz de descifrar .
__________________
Aprender es duro, no aprender lo es más aún .
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 16:38.