Ver Mensaje Individual
  #1 (permalink)  
Antiguo 17/09/2017, 09:15
Viturbiko
 
Fecha de Ingreso: septiembre-2014
Mensajes: 72
Antigüedad: 9 años, 7 meses
Puntos: 0
Problema con variables e include()

Buenas, estoy intentando conectar con una base de datos a través de PHP, estos son los archivos que tengo.

configuracion.php

Código PHP:
<?php

    $dbhost 
'localhost';
    
$db 'megacursos';
    
$dbuser 'root'
    
$dbpass '';


    
$link_megacursos mysqli_connect($dbhost$dbuser$dbpass$db);

    
//Comenzamos la sesión
    
session_start();
?>
Luego, desde un archivo llamado consultas.php, hago lo siguiente:

Código PHP:
<?php

include('configuracion.php');

$usuarios mysqli_query($link_megacursos"SELECT * FROM usuarios");

function 
getUsuarios() {
    
    while (
$fila mysqli_fetch_array($usuarios)) {
        echo 
$fila['id'] . "<br/>";
        echo 
$fila['nombre'] . "<br/>";
        echo 
$fila['apellidos'] . "<br/>";
        echo 
$fila['user'] . "<br/>";
        echo 
$fila['pass'] . "<br/>";
        echo 
$fila['email'] . "<br/>";
        echo 
$fila['telefono'] . "<br/>";
        echo 
$fila['nivel'] . "<br/>";
    }
}

?>
Pero se me muestra este error al intentar mostrar los contenidos de la base de datos:

Código:
Notice: Undefined variable: link_megacursos in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 9

Warning: mysqli_query() expects parameter 1 to be mysqli, null given in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 9

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 11
Entiendo que el problema está en que no está reconociendo la variable $link_megacursos definida en configuracion.php, pero si existe, y no entiendo por qué no la localiza. Además, tengo otro archivo en el que uso el include(configuracion.php) y sí que funciona con las mismas funciones. Además, la ruta está bien escrita porque incluyo una funcion con un echo en el archivo configuración.php y lo muestra correctamente. Este es el código que si me funciona, un archivo para comprobar usuairos:

Código PHP:
<?php

//Nos conectamos con la base de datos
include('../main/funciones/configuracion.php');

$usuario $_POST['p_username'];
$usuario addslashes($usuario);
$usuario strip_tags($usuario);

$contrasena $_POST['p_password'];
$contrasena addslashes($contrasena);
$contrasena strip_tags($contrasena);

//Conexion con la base de datos
$usuarios mysqli_query($link_megacursos"SELECT * FROM usuarios WHERE user='$usuario' and pass='$contrasena'");

//Comprobamos que el nombre y usuario son correctos
if ($fila mysqli_fetch_array($usuarios)) {

    
//Una vez comprobado si el login es correcto, asignamos las variables de sesion
    
session_start();
    
$_SESSION['nombre'] = $fila["nombre"];
    
$_SESSION['nivel'] = $fila["nivel"];
    
$_SESSION['telefono'] = $fila["telefono"];

    
define("PAGINA_INICIO""../main/index.php");
    
header("Location: " PAGINA_INICIO);
} else {
    
//Redireccionar a la pagina de inicio
    
define("PAGINA_INICIO""../index.php?mensaje=mensaje_error");
    
header("Location: " PAGINA_INICIO);
}

?>
¿Por qué en el segundo caso si que funciona la conexión con la base de datos y en el primer caso no? En ambos casos intento rescatar los datos de la misma manera y en ambos está declarado el include()...

¿Alguna idea?

Gracias y un saludo.