¿Cómo usar include() así?

Iniciado por Cergath, 12 Mayo 2015, 01:07 AM

0 Miembros y 1 Visitante están viendo este tema.

Cergath

Hola,

Estoy haciendo una plantilla básica para una demo, y tengo múltiples páginas, por lo que necesito ir alternando entre diferentes casos dependiendo de la página que se tenga abierta.

La lógica del asunto es que en la página que tiene los contenidos a incluir (digamos archivo.php), iba como "caso 1: muestra tal, caso 2: muestra tal"... Y en las páginas que incluyen ese archivo, va como "si caso 1, entonces incluir archivo.php caso 1", "si caso 2, entonces incluir archivo.php en caso 2"

Lo del condicional bueno, podría ser cualquier cosa, pero ¿existe un parámetro en el include para incluir solo un caso del archivo?

xiruko

No te acabo de entender, pero bueno te dejo dos opciones por si es alguna de ellas:

1.

caso_A.php
Código (php) [Seleccionar]
echo "A!";

caso_B.php
Código (php) [Seleccionar]
echo "B!";

main.php
Código (php) [Seleccionar]
$caso = 1;
if ($caso == 1) include('caso_A.php'); else include('caso_B.php'); // se mostrará 'A!'


2.

caso_A.php
Código (php) [Seleccionar]
echo ($caso == 1) ? 'Caso == 1!' : 'Caso != 1';

main.php
Código (php) [Seleccionar]
$caso = 1;
include('caso_A.php'); // se mostrará 'Caso == 1!'


Saludos!

Cergath

Hola,

Oh, es como caso 2... Lo que quiero es ciertamente ahorrar en cantidad de archivos... Por lo que sería caso dos. Necesito es hacer esto:

Incluir ciertos <scripts /> y <link rel="stylesheet" /> en el footer y header (respectivamente) dependiendo de en qué pagina se encuentra.

El condicional es irrelevante, tal vez con $_SERVER['PHP_SELF'] ¿verdad?, pero bueno, lo que necesito saber es cómo puedo crear esto:

Archivo1.php contiene toooodos los casos, es decir, tooodos los scripts y estilos posibles, discriminados por casos, claro está.

index.php, calendario.php, perfil.php, etcétera, que hagan un include() (supongo yo, no sé), de Archivo1.php pero únicament en el caso que le corresponda, ¿es posible?

xiruko

#3
Sí, claro que es posible. Piensa que el include equivale a copiar-pegar el contenido del archivo incluído en el archivo en el que uses la directiva. Lo más sencillo para lo que pides sería usar un switch con $_SERVER['PHP_SELF'], aunque ten en cuenta que éste devuelve la ruta completa del archivo y no solo su nombre. Por ejemplo, si estás en www.dominio.com/articulos/articulo.php, eso te devolvería articulos/articulo.php.

Y bueno, yo más que incluirlo absolutamente todo en un archivo, haría más bien dos. Un header.php, que tenga los estilos, las meta tags, etc. de cada uno de los demás archivos según un switch, y un footer con más de lo mismo.

Edito: Para decir que separar el contenido en archivos es gratis, y a la hora de depurar suele ser más fácil que encontrarte absolutamente todas las funciones y demás en un solo archivo. Esto que comentas está bien para el header y el footer, pero yo suelo ser más partidario de hacer un archivo para cada cosa (por ejemplo, uno con todas las funciones para enviar distintos tipos de emails, otro para la clase que maneja la BBDD, otro para el ajax de cada sección, etc) más que juntar muchas cosas distintas en el mismo tiesto. Pero bueno, eso ya es gusto personal.

Saludos!

Cergath

Oh, sí, sí, yo separé eso en dos archivos, como mínimo.

No es un script como tal, sino que cada página llama casi que a un plugin js o estilo diferente, así que tener un archivo para cada uno sería tan complicado que para esa gracia creo páginas estáticas en html, jajaja...

Switch, eso me serviría para cada script o estilo!, pero, ¿cómo hago el include de la página que lo incluye? :xD no tengo idea

Código (php) [Seleccionar]
if ($_SERVER['PHP_SELF'] == 'index.php') {
include(???incluir script en particular del archivo archivo.php¿¿¿)
}

poco_digo

En PHP hay una forma de averiguar desde que script *.php se ha invocado a una funcion.
Esto lo puedes usar para crear condicionales dentro de la función, y tomar decisiones dependiendo del origen de la llamada. Este dato PHP lo guarda en una vairable de sistema y lo usa return para volver al origen de la llamada.

Salu2