Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Problema con include/require

Estas en el tema de Problema con include/require en el foro de PHP en Foros del Web. Un saludo: Ando retocando una aplicación (un calendario). Para uno de los cambios que le estoy haciendo, necesito conectar con una BD y sacar unos ...
  #1 (permalink)  
Antiguo 25/06/2011, 11:54
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Problema con include/require

Un saludo:

Ando retocando una aplicación (un calendario). Para uno de los cambios que le estoy haciendo, necesito conectar con una BD y sacar unos datos de allí. Lo que hago (lo que he hecho siempre) es que meto los datos de acceso al servidor de BDs en un archivo (data.php en mi caso), y lo llamo en la página con un include.

Bueno, en este caso lo llamo, me lo incluye bien, pero luego me dice que una de las variables no está declarada. He probado a cambiar de ruta el archivo, a coger las variables y meterlas directamente en el archivo para no tener que llamarlas, he probado con include_once, require, require_once, he iniciado la variable con isset($legend) antes de usarla...

La variable que me da el error es una que he llamado $legend. Esta variable tiene la función mysql_select_db. No se si el error será de la variable o de la función esa, porque las demás sí las coge bien. Incluso he hecho un echo de $legend, y me pinta 1, supongo que será que hay respuesta. Dejo aquí el código, por si me podeis ayudar a detectar el error, aunque me parece que no es de sintaxis, el mismo archivo lo uso en otra parte de la misma web y funciona perfecto.

El archivo con el acceso al servidor
Código PHP:
<?php
$s 
'127.0.0.1';
$u 'root';
$p 'root';
$calendar 'OK_calendar';
$conect mysql_connect($s$u$p$calendar);
$legend mysql_select_db($calendar$conect);
?>
el archivo index.php
Código PHP:
if(isset($_SESSION['login']) && $_SESSION['login'] == true)
{
    require (
"data.php"); //el archivo conflictivo
    
require ("cal.php"); // el archivo donde uso la función que necesita de una BD
    
color($_SESSION['prof']); //llamada a la función declarada en cal.php
    
....

la función donde conecto con la BD
Código PHP:
function color($prof)
{
if(
$legend)
{
    
$sql "SELECT color FROM profesores WHERE nombre LIKE \"{$prof}\";";
    
$query mysql_query($sql$conect);
    if(
$query)
    {
        
$res mysql_fetch_row($query);
        if(
$res)
        {
            echo 
$res[0];
        }else echo 
mysql_error();
    }else echo 
mysql_error();
}else echo 
'mal: '.mysql_error();

La idea de la función es sacar de la BD un color asignado a un usuario para pintar de ese color unos TD's en una tabla. El echo lo puse para comprobar que funcionaba antes de seguir, aunque va un return $res[0].

Muchas gracias.
  #2 (permalink)  
Antiguo 25/06/2011, 17:49
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Problema con include/require

creo que es porque $legend está a dentro de una funcion, por lo tanto no reconoce las variables que están fuera de ella, tendrías que pasarla como parametro a la funcion

function color($prof,$legend)
{
if($legend)

Sino . Creo que si sacás el primer if de esa funcion la cosa debería funcionar normalmente

Probalo y cuentanos que sucedió
Saludos


.
__________________
la la la
  #3 (permalink)  
Antiguo 25/06/2011, 21:38
Avatar de Alun  
Fecha de Ingreso: diciembre-2009
Ubicación: Liverpool
Mensajes: 140
Antigüedad: 14 años, 4 meses
Puntos: 4
Respuesta: Problema con include/require

Como siempre, paso por alto las cosas más simples... ya llegué a creer que era un problema de la configuración de mysql o algo así... pues menos mal que me avisaste, nunca se me habría ocurrido pasarlo como argumento, siempre lo uso fuera de funciones...

Muchas gracias, truman, ese era el error que me tenía dándole vueltas a la cabeza. Solucionado

Etiquetas: configuración-php
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 08:06.