Dudas y recursos para programas que no están en ninguno otro de los foros.
Avatar de Usuario
por Vito
#2944 Buenos días, estoy haciendo el curso de PHP, concretamente la clase 6. Alrededor del minuto 34 de la misma se intenta conectar mediante la base de datos MySQL utilizando la funcion mysql_connect, pero según la documentación de PHP, esta función está obsoleta. ¿Alguien podría indicarme como solventar este error? No consigo establecer la conexion entre el archivo PHP y la base de datos....

Gracias y un saludo.
Avatar de Usuario
por Vito
#2945 El error que se muestra exactamente es:

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in C:\xampp\htdocs\curso\configuracion.php:9 Stack trace: #0 C:\xampp\htdocs\curso\login\autenticar.php(4): include() #1 {main} thrown in C:\xampp\htdocs\curso\configuracion.php on line 9

Gracias.
Avatar de Usuario
por Vito
#2948 Este es el archivo completo de configuracion.php:

Código: Seleccionar todo   $dbhost = 'localhost'; //Hosting de servidor
   $db = 'megacursos'; //Nombre de la base de datos
   $dbuser = 'root'; //usuario de la base de datos
   $dbpass = ''; // password de la base de datos

   //Conectamos y seleccionamos la base de datos
   mysql_connect($dbhost, $dbuser, $dbpass);
   mysql_select_db($db);

   //Comenzamos la sesión
   session_start();
?>


Un saludo.
Avatar de Usuario
por HadocDesign
#2949 Mmmm es posible que estes utilizando una versión de PHP que no dispone de soporte para las funciones obsoletas de PHP para conectar con MySQL..., te doy 2 opciones:

1) Utilizar las nuevas funciones de PHP para conectar con MySQL (mysqli_connect(), etc.), o algún otro método como PDO.
2) Utilizar una versión anterior de PHP y/o habilitar las funciones obsoletas (mysql_connect(), etc.).

Te dejo un ejemplo para ver si te ayuda a solucionarlo:

*********************
<?php
$enlace = mysqli_connect("127.0.0.1", "mi_usuario", "mi_contraseña", "mi_bd");
if (!$enlace) {
echo "Error: No se pudo conectar a MySQL." . PHP_EOL;
echo "errno de depuración: " . mysqli_connect_errno() . PHP_EOL;
echo "error de depuración: " . mysqli_connect_error() . PHP_EOL;
exit;
}
echo "Éxito: Se realizó una conexión apropiada a MySQL! La base de datos mi_bd es genial." . PHP_EOL;
echo "Información del host: " . mysqli_get_host_info($enlace) . PHP_EOL;
mysqli_close($enlace);
?>

*********************

Avísame si te sirvió sino para seguir indagando.
Avatar de Usuario
por Vito
#2954 Vale, me sirvió para conectar. Ahora tengo otro problema, estoy con un archivo de configuración PHP, del que hemos estado hablando:

Código: Seleccionar todo<?php

   $dbhost = 'localhost'; //Hosting de servidor
   $db = 'megacursos'; //Nombre de la base de datos
   $dbuser = 'root'; //usuario de la base de datos
   $dbpass = ''; // password de la base de datos

   //Conectamos y seleccionamos la base de datos
   $link_megacursos = mysqli_connect($dbhost, $dbuser, $dbpass, $db); //Es la función de PHP no obsoleta, con mysqli se pone tambien la base de datos a la que se quiere conectar como último parámetro

   //Comenzamos la sesión
   session_start();
?>


Luego, desde un archivo llamado consultas.php, hago lo siguiente:

Código: Seleccionar todo<?php

//En este PHP vamos a centralizar todas las consultas de la Intranet
include("configuracion.php");

if ($_SESSION['nivel'] == 1) {

    //Consultar usuarios
    function getUsuarios() {

        $usuarios = mysqli_query($link_megacursos, 'SELECT * FROM usuarios');

        while ($fila = mysqli_fetch_array($link_megacursos, $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>";
        }
    }

} else {
    define('PAGINA_INICIO', '../../index.php?mensaje=sin_permiso');
    header('Location:' . PAGINA_INICIO);
}
?>


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

Código: Seleccionar todoNotice: Undefined variable: link_megacursos in C:\xampp\htdocs\curso\main\funciones\consultas.php on line 12

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

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

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


Vuelve a ser un fallo de mysqli, que no está incluido en el curso porque utilizan la funcion obsoleta mysql(). No entiendo por qué me da ese error, porque en otro archivo PHP incluyo el include(configuracion.php) y si funciona:

Código: Seleccionar todo<?php

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

//RECUPERAMOS USUARIO Y CONTRASEÑA MEDIANTE EL METODO POST (UTILIZAR EL CONTENIDO DE LA ETIQUETA NAME) Y SE USAN DOS FUNCIONES PARA EVITAR CÓDIGOS MALICIOSOS
$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.
Avatar de Usuario
por higuevision
#2958 Buenas noches, una consulta y necesito ayuda, cree una web para una administradora de condominios, ya tengo la base de datos para registrar los usuarios estan creados todo en la pagina pero me falta lo siguiente, quiero que al ingresar johan chirino y llegue a su home.php el mismo pueda ver en un enlace de un menu que dice estado de cuenta. su recibo de lo que debe pagar en el mes, el recibo esta en formato. pdf, la duda es saber si lo subo al hosting en alguna ruta o si en una base de datos para poder mostrarlo si me pueden ayudar les agradezco. cabe destacar que quiero que johan chirino en su inicio de sesion pueda ver el suyo pero andres mata inicia sesion en simultaneo y pueda ver el de andres mata mas no cualquier otro. espero haberme explicado . gracias saludos