Foros del Web » Programando para Internet » PHP »

No me coge el un archivo del include

Estas en el tema de No me coge el un archivo del include en el foro de PHP en Foros del Web. Hola, pues sigo trasteando con el PHP y me ha surgido el siguiente problema. Al crear una función para conectar a la base de datos, ...
  #1 (permalink)  
Antiguo 23/04/2008, 05:57
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 1
No me coge el un archivo del include

Hola, pues sigo trasteando con el PHP y me ha surgido el siguiente problema.
Al crear una función para conectar a la base de datos, pues quise que en un archivo independiente estuviesen los datos de conexión.
Código PHP:
function Conectar() {
$enlace mysql_connect($host,$usuario,$pass) or die('Error: No pudo conectarse al servidor');
$db_selected mysql_select_db($bd,$enlace) or die('Error: No se puede conectar a la BD');
return 
$enlace;

La variables $host,$usuario,$pass,$bd las tengo en el archivo configuracion.php.
Código PHP:
<?php
$host
'aaaaaaa';
$usuario 'bbbbb';
etc.
?>
Pues bien, antes de la funcion conectar he puesto require('configuracion.php'), pero al ejecutar la página me saltaba lo de no pudo conectarse al servidor.
Probé con Include e igual.
Al final puse el require dentro de la funcion Conectar y si, ahora va.

La duda es: ¿Porqué?, si el require está al comienzo de la página, la función tendría que coger las variables no?

Gracias por la ayuda!
Un Saludo!
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas
  #2 (permalink)  
Antiguo 23/04/2008, 07:05
AlvaroG
Invitado
 
Mensajes: n/a
Puntos:
Re: No me coge el un archivo del include

No, la función no tiene por qué tomar las variables definidas fuera.

Las funciones tienen su propio "espacio de nombres" (que sería como los nombres de las variables definidas). En PHP las variables globales (definidas fuera de cualquier función) no están disponibles por defecto para las funciones.

Para que lo estén, tenés que usar la palabra "global" delante del nombre:

Código PHP:
function Conectar() {
    global 
$host;
    global 
$usuario;
    global 
$enlace;

    
$enlace mysql_connect($host,$usuario,$pass) or die('Error: No pudo conectarse al servidor');
    
$db_selected mysql_select_db($bd,$enlace) or die('Error: No se puede conectar a la BD');

    return 
$enlace;

Y vale lo mismo para las variables definidas dentro de la función y que quieras usar fuera, en este caso podría ser $enlace (por eso lo agregué a tu código, en principio no lo necesitarías).


Saludos.
  #3 (permalink)  
Antiguo 23/04/2008, 08:04
 
Fecha de Ingreso: mayo-2005
Ubicación: Vimianzo. A Coruña
Mensajes: 230
Antigüedad: 19 años, 6 meses
Puntos: 1
Re: No me coge el un archivo del include

pues no acabo de entender bien del todo porqué tengo que definirlas como globales ahí...
Fijandome en los archivos que usa Joomla: configuration.php y index.php, simplemente ponen en el index el require(configuration.php) y utilizan por el resto del index las variables del configuration.php a sus anchas...
__________________
Técnico Superior en Desarrollo de Apliciones Informáticas

Última edición por Baldur; 23/04/2008 a las 08:10
  #4 (permalink)  
Antiguo 23/04/2008, 08:16
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años, 7 meses
Puntos: 326
Re: No me coge el un archivo del include

pq dentro del configuration no estara dentro de una funcion.

Si quieres usar una variable de "fuera" de la funcion, tienes que decirle "oye, que es la variable q existe fuera!" y eso lo haces con global :)
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 14:10.