Foros del Web » Programando para Internet » PHP »

Ayuda con require(?) o include(?)

Estas en el tema de Ayuda con require(?) o include(?) en el foro de PHP en Foros del Web. Como se coloca el contenido del require require'../modelo/pagina.php'; o require'./modelo/pagina.php'; Cuando incluyo una pagina con require o include la ubicacion en el archivo lo coloco ...
  #1 (permalink)  
Antiguo 16/07/2009, 11:42
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Pregunta Ayuda con require(?) o include(?)

Como se coloca el contenido del require

require'../modelo/pagina.php';
o
require'./modelo/pagina.php';

Cuando incluyo una pagina con require o include la ubicacion en el archivo lo coloco con
require'./modelo/pagina.php'; y cuando uso un enlace(<a></a>) require'../modelo/pagina.php';

Como se debe colocar la ubicación de las partes de las paginas

Esta es mi pagina

Código HTML:
<html>
<head>
<link href="partes/css/frame.css" rel="stylesheet" type="text/css"></link>
</head>
<body>
	<div id="encabezado">
		<?php include("partes/encabezado.php"); ?>	
	</div>
	<div id="contenido">
		<div id="lateral">texto lateral</div>
		<div id="todo">
			<?php include'controller/contenido.php';?>
		</div>
	</div>
</body>
</html> 
Encabezado

Código HTML:
[ <a href="/<?php getServerName();?>/controller/contenido.php">Contenido</a> ]
/controller/contenido.php

Si lo coloco de la siguiente forma el archivo me carga con <?php include'controller/contenido.php';?> pero no me funciona cuando hago clic en el enlace del encabezado

Código PHP:
<?php
require'./modelo/contenidoModel.php';

require
'./vista/contenidoVista.php';
?>
De esta forma me funciona al revez

Código PHP:
<?php
require'../modelo/contenidoModel.php';

require
'../vista/contenidoVista.php';
?>
Este es el error que me aparece cuando no funciona

Warning: require(./modelo/contenidoModel.php) [function.require]: failed to open stream: No such file or directory in D:\Sistema\Programas\Programar\xampp\htdocs\Local\ controller\contenido.php on line 2

Fatal error: require() [function.require]: Failed opening required './modelo/contenidoModel.php' (include_path='.;D:\Sistema\Programas\Programar\xa mpp\php\pear\') in D:\Sistema\Programas\Programar\xampp\htdocs\Local\ controller\contenido.php on line 2

Como funciona o tengo que usar las dos formas.
  #2 (permalink)  
Antiguo 16/07/2009, 11:53
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 15 años, 9 meses
Puntos: 1532
Respuesta: Ayuda con require(?) o include(?)

include es para incluir toda la pagina, require sólo hace referencia a las funciones, revisa bien las rutas, aunque creo que le estás dando un uso inapropiado a los include, lo que pretendes hacer se resuelve con un solo archivo de funciones básicas que debes incluir en los demás, algo así como tu libreria de funciones más utilizadas, en el cual declares como función todos esos pequeños segmentos que necesitas, por ejemplo, yo utilizo esto para los metas:

Código PHP:
function includeScripts($ruta="../control/"){
        
//<script type="text/javascript" language="javascript" src="lib/mootools.v1.11.js"></script>
        //<script type="text/javascript" language="javascript" src="lib/validaciones.js"></script>
         
echo '    
                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/dom-drag.js"></script>
                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/jquery-1.3.2.min.js"></script>
                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/main.inc.js"></script>

                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/calendar.js"></script>
                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/calendar-es.js"></script>
                <script type="text/javascript" language="javascript" src="'
.$ruta.'lib/calendar-setup.js"></script>
                <link rel="stylesheet" type="text/css" media="all" href="'
.$ruta.'lib/calendar-green.css" /> ';
    }
    
    function 
includeModalBox($ruta="../control/"){
        echo 
'<script type="text/javascript" language="javascript" src="'.$ruta.'lib/jquery.simplemodal-1.2.3.js"></script>';
    }
    
    function 
includeMouseTouch($ruta="../control/"){
        echo 
'<script type="text/javascript" language="javascript" src="'.$ruta.'lib/mouse_touch.inc.js"></script>';
    }
    
    function 
getClassModalButtonClose(){
        return 
'simplemodal-close';
    }
    
    function 
getUrl($file){
        return 
'../'.$file;
    }
    
    
    }
    function 
includeMeta(){
        echo 
'<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />';
    } 
y en los demás archivos:

Código PHP:
<?php
@session_start();


    require_once(
"../control/main_control.inc.php");
    require_once(
"control/funciones.inc.php");
?>

<html>
    <head>
        <?php 
            includeMeta
();
            
includeScripts();
            
getXajaxJavascript();
            
includeModalBox();
        
?>
        <link rel="stylesheet" type="text/css" href="css/sa_general.css" />
        <title>titulo</title>
        <script>
            
        </script>
        
        <style type="text/css">
            table caption{
                border:1px solid #000000;
                padding:2px;
                font-weight:bold;
            }
        </style>
    </head>

...
  #3 (permalink)  
Antiguo 16/07/2009, 12:21
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 9 meses
Puntos: 102
Respuesta: Ayuda con require(?) o include(?)

Cita:
Iniciado por maycolalvarez Ver Mensaje
include es para incluir toda la pagina, require sólo hace referencia a las funciones [...]
¿¿¿¿???? Error.

include() y require() hacen exactamente lo mismo, la diferencia está en que con include(), si el recurso no existe, solo mandará una advertencia del mientras que con require() el script dejará de ser ejecutado en ese momento.

www.php.net/include
www.php.net/require

Observase que fuera de esa aclaración, la propia documentación redirige a la de la otra función.


PanchoJ: Para tu entendimiento, podrías ver que include() y/o require() no hacen más que un Copy&Paste del contenido del archivo a incluir. Cuando las utilizas estás haciendo referencia a un archivo en tu disco duro, por es buena idea utilizar rutas absolutas; puedes construirlas dinámicamente.

Ejemplo:
Código php:
Ver original
  1. define('PATH', '/var/www/html/misitio');
  2.  
  3. require PATH . '/cabecera.php';
  4. require PATH . '/contenido/pagina1.php';

Ojo, que peticiones por URL parten del directorio donde está apuntando el dominio, osea, no tendrías por qué "combinarlas", cosas distintas.

:adis:
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 16/07/2009, 12:21
Avatar de Ronin46  
Fecha de Ingreso: junio-2009
Mensajes: 398
Antigüedad: 14 años, 10 meses
Puntos: 8
Respuesta: Ayuda con require(?) o include(?)

Cita:
Iniciado por maycolalvarez Ver Mensaje
include es para incluir toda la pagina, require sólo hace referencia a las funciones
¿Como? Que yo sepa include incluye un archivo, y si surge cualquier error da un warning pero permite continuar ejecutando el código restante, mientras que require te daría un error y no dejaría continuar ejecutando el código restante.

EDITO: uyy, se me adelantaron por milésimas.
  #5 (permalink)  
Antiguo 16/07/2009, 13:07
 
Fecha de Ingreso: abril-2009
Ubicación: Santa Fe, Capital
Mensajes: 38
Antigüedad: 15 años
Puntos: 0
Respuesta: Ayuda con require(?) o include(?)

Lo que no entiendo es porque cuando uso link <a></a> me pide el path de esta forma '../' y cuando uso include o require coloco el path de esta forma './'

Gracias por la información me es muy útil.

Lo resolvi de la siguiente manera en el archivo

Coloque en el archivo /controller/contenido.php

<?php
//$post es igual a link si se entra a travez del enlace sino no.
$post = $_GET['var'];
if ($post=='link'){
require'../modelo/contenidoModel.php';
require'../vista/contenidoVista.php';
}else{
require'./modelo/contenidoModel.php';
require'./vista/contenidoVista.php';
}
?>

y en el encabezado a los link le coloque /controller/contenido.php?var=link

No uso path absoluto o relativo al sitio es porque yo voy entrado a diferentes directorios y después quiero ingresar a otro que esta en otra ubicacion distinta, no tengo todos los archivos uno al lado del otro por eso(sueltos).
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 15:53.