Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] incluir archivos php

Estas en el tema de incluir archivos php en el foro de PHP en Foros del Web. buenas noches espero que estén bien y me puedan ayudar con lo siguiente: cuando hago un llamado a un archivo php desde otro archivo php ...
  #1 (permalink)  
Antiguo 10/06/2013, 20:27
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Pregunta incluir archivos php

buenas noches

espero que estén bien y me puedan ayudar con lo siguiente:

cuando hago un llamado a un archivo php desde otro archivo php como por ejemplo:

include_once("../../carpeta/ARCHIVO1.php");

imaginemos que la anterior sentencia se encuentra en el archivo ARCHIVO3.PHP

luego dentro del archivo ARCHIVO1.php se ejecutan unas sentencias que llaman a otro archivo

por ejemplo ARCHIVO2.PHP, pero dentro de ARCHIVO2.PHP se vuelve a llamar

a ARCHIVO3.PHP el cual vuelve a llamar dentro de su código a ARCHIVO1.PHP



entonces se genera un error porque ARCHIVO1.PHP es llamado con una determinada URL o ruta que para el primer llamado funciona pero durante la ejecución del código cuando se vuelve a llamar la ruta debería ser diferente porque en ese instante el programa se encuentra llamado a ARCHIVO1.PHP desde otro lugar.
  1. ¿cómo se puede corregir eso?
  2. ¿hay alguna función en php que pueda detectar el nombre del archivo que esta incluyendo a un archivo X desde el archivo incluido osea en este caso el archivo X ?


DE ANTEMANO MUUUUUCHAS GRACIAS POR SU AYUDA
__________________
http://tecnologiaco.com/
  #2 (permalink)  
Antiguo 10/06/2013, 20:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: incluir archivos php

te aconsejo re-leas sobre:

include
include_once
requiere
require_once


Si quieres saber si un archivo ya lo incluistes (creeria tu logica esta mal de todas formas), podrias chequear si una variable esta seteada con isset() o sino como te expongo aca:

index.php
Código PHP:
<?php
   $_included
[] = __FILE__;
   ...
archivo2.php
Código PHP:
<?php
   $_included
[] = __FILE__;
   ...
archivo3.php
Código PHP:
<?php
   $_included
[] = __FILE__;
   ...

Luego preguntas:
Código PHP:
   if (in_array($_included,'archivo2.php')){
       
// hacer algo
   
}
   ... 

Te aclaro que si haces todo esto (aunque tecnicamente posible) ESTAS MAL........y mas bien empieza a leer sobre frameworks para organizar un poco tu sistema

Saludos!
__________________
Salu2!

Última edición por Italico76; 10/06/2013 a las 20:49
  #3 (permalink)  
Antiguo 11/06/2013, 07:00
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: incluir archivos php

hola Italico76,

muchas gracias por tu interes en querer ayudarme, te comento que estoy usando MVC pero a punta de código php pues no quiero depender de un framework.

¿cómo haría para saber desde un archivo php A que ha sido invocado por un archivo php B que ha sido B quien lo ha invocado y no otro archivo diferente?

tal vez, el array:

$_SERVER['PHP_SELF'];

¿me sirva?

Gracias de antemano por tu valiosa ayuda.
__________________
http://tecnologiaco.com/

Última edición por andresbetancourt; 11/06/2013 a las 07:33
  #4 (permalink)  
Antiguo 11/06/2013, 07:55
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Respuesta: incluir archivos php

Lo que buscas quedo apilado en la pila de inclusiones $_included en mi ejemplo (sin probar)

Cita:
$last = $_included[count($_included)-1];

En cambio $_SERVER['PHP_SELF'] es el archivo actual


Mira....ya tenias la respuesta servida:

a.php
Cita:
<?php
$_included=array();

$_included[] = __FILE__;
include 'b.php';
b.php
Cita:
<?php
$_included[] = __FILE__;
include 'c.php';
c.php
Cita:
<?php
// var_dump ($_included);
echo $_included[count($_included)-1];
Cita:
Iniciado por andresbetancourt Ver Mensaje
hola Italico76,

muchas gracias por tu interes en querer ayudarme, te comento que estoy usando MVC pero a punta de código php pues no quiero depender de un framework.

¿cómo haría para saber desde un archivo php A que ha sido invocado por un archivo php B que ha sido B quien lo ha invocado y no otro archivo diferente?

tal vez, el array:

$_SERVER['PHP_SELF'];

¿me sirva?

Gracias de antemano por tu valiosa ayuda.
__________________
Salu2!

Última edición por Italico76; 11/06/2013 a las 08:02
  #5 (permalink)  
Antiguo 11/06/2013, 20:00
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: incluir archivos php

hola Italico76, muchas gracias por tu ayuda.

1. ¿quiere decir que el array que uno crea en un archivo php es visto desde cualquier otro archivo php sin necesidad de pasarlo por medio de una función determinada?


2. ahora tengo otra pregunta, resulta que cuando ejecuto un flujo en mi programa php
por ejemplo CREAR un producto en la bd

el programa empieza en la pagina crearproducto.html y en la url aparece dicha pagina http://localhost:8081/ventas/crearproducto.html

pero luego de guardar y pasar los datos entre la vista el controlador y el modelo
y volver a dejar la vista inicial desde donde se creo el producto, la cual cargo desde el controlador, ya no queda la url con crearproducto.html sino

http://localhost:8081/ventas/producto.php que es el controlador, quien carga la vista nuevamente por medio del función

print $template; (donde $template es el string de toda la vista crearproducto.html)

luego de realizar la creación en la bd del producto.


la explicación de porque cargo la vista con print es que en la vista crearproducto.html, tengo unos datos ocultos que luego cambio por un mensaje que dice, EL PRODUCTO SE CREO EXITOSAMENTE, ese mensaje lo pongo asi:


$template = file_get_contents('../plantilla/crearproducto.html');

$template = str_replace('{menssaje}', "el producto se creo correctamente", $template);


print $template;



EL PROBLEMA con lo anterior, es que como la URL al final de todo el proceso de creación, ya no es la inicial, cuando deseo crear otra vez un producto, ya todos los includes que funcionaban en el primer flujo de creación no funcionan en el segundo porque estan siendo llamados desde la segunda ruta osea

http://localhost:8081/ventas/producto.php

no se que hacer, parece que tuviera que identificar tooodos los caminos posibles y mezclas entre estos y usar diferentes rutas en los includes para que el programa me funcione.

me voy a volver loco.


gracias si me pueden ayudar.
__________________
http://tecnologiaco.com/
  #6 (permalink)  
Antiguo 13/06/2013, 08:42
Avatar de andresbetancourt  
Fecha de Ingreso: julio-2008
Ubicación: colombia
Mensajes: 334
Antigüedad: 15 años, 9 meses
Puntos: 2
Respuesta: incluir archivos php

bueno doy la respuesta y cierro el tema asi:

la idea es usar rutas absolutas en php.

gracias por su colaboración.
__________________
http://tecnologiaco.com/

Etiquetas: incluir
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 10:44.