¿Donde m... está el error?

  • Autor Autor DosTera
  • Fecha de inicio Fecha de inicio
D

DosTera

Beta
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Bueno, esto ya me está desesperando XD
Tengo el siguiente código:
PHP:
<?php session_start(); include('acceso_db.php'); ?>
<?php
$sql = "SELECT usuario_nombre FROM administrador";//Este es el script SQL que necesitas para obtener el ultimo registro
$query = mysql_query($sql);
$result = mysql_fetch_assoc($query);

    if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías         
?>

Error:
Insertar CODE, HTML o PHP:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in /.... on line 5

si bien me aparece ese error, igual me muestra el formulairo para loguearme, pero cuando lo hago me da error aquí: (en la línea de mysql_fetch_array)
PHP:
           $sql = mysql_query("SELECT usuario_id, usuario_nombre, usuario_clave FROM administrador WHERE usuario_nombre='".$usuario_nombre."' AND usuario_clave='".$usuario_clave."'"); 
            if($row = mysql_fetch_array($sql)) { 
                $_SESSION['usuario_id'] = $row['usuario_id']; // creamos la sesion "usuario_id" y le asignamos como valor el campo usuario_id 
                $_SESSION['usuario_nombre'] = $row["usuario_nombre"]; // creamos la sesion "usuario_nombre" y le asignamos como valor el campo usuario_nombre 
                echo" <SCRIPT LANGUAGE='javascript'>" . "location.href = 'editz.php';" . "</SCRIPT>" ."";
            }else {

¿que les parece que pueda estar mal en ese código? :O
 
En el primer script lo que esta sucediendo es que probablemente no esta devolviendo datos el query.

Puedes checar haciendo un print_r($query); antes de $result para saber si te esta devolviendo algo, en todo caso es una buena práctica validad que el resultado de query contenga algo para continuar o mandar el error pertinente en caso de que venga vacio.

Saludos.
 
Dice que la funcion mysql_fetch_assoc() recibió un parametro de tipo booleano (False/True), en este caso el valor de $query es False, ya que mysql_query() devuelve false en caso de que haya un error al ejecutar la consulta sql, puedes verificar el error haciendo eso:
PHP:
$sql = "blablavla";
$query = mysql_query($sql) or die("error en la consulta, motivo: ".mysql_error());
 
Dice que la funcion mysql_fetch_assoc() recibió un parametro de tipo booleano (False/True), en este caso el valor de $query es False, ya que mysql_query() devuelve false en caso de que haya un error al ejecutar la consulta sql, puedes verificar el error haciendo eso:
PHP:
$sql = "blablavla";
$query = mysql_query($sql) or die("error en la consulta, motivo: ".mysql_error());

Me pone "No database selected" . Lo raro es que anterior a esa consulta puse:
PHP:
<?php session_start(); include('acceso_db.php'); ?>
y allí se encuentra seleccionada.. :O
 
Pon el codigo de acceso_db.php

PHP:
<?php 
    $host_db = "localhost"; // Host de la BD 
    $usuario_db = "minombre"; // Usuario de la BD 
    $clave_db = "xxxxxx"; // Contraseña de la BD 
    $nombre_db = "basededatosprueba"; // Nombre de la BD 
	

    mysql_connect($host_db, $usuario_db, $clave_db); 
    mysql_select_db($nombre_db); 
?>

- - - Actualizado - - -

Pon el codigo de acceso_db.php
Me había olvidado de subir el archivo acces_db al servidor. Sin comentarios...........
 
Habra que depurar, haz esto:
PHP:
$link = mysql_connect($host_db,$usuario_db,$clave_db);
if(!link){
  die("error al conectar al servidor, motivo: ".mysql_error());
}
if(!mysql_select_db('db'){
  die("error al seleccionar bases de datos, motivo: ".mysql_error());
}
 
PHP:
<?php 
    $host_db = "localhost"; // Host de la BD 
    $usuario_db = "minombre"; // Usuario de la BD 
    $clave_db = "xxxxxx"; // Contraseña de la BD 
    $nombre_db = "basededatosprueba"; // Nombre de la BD 


    mysql_connect($host_db, $usuario_db, $clave_db); 
    mysql_select_db($nombre_db); 
?>

- - - Actualizado - - -


Me había olvidado de subir el archivo acces_db al servidor. Sin comentarios...........
Jaja ok, sin comentarios....
 
Ese error sucede cuando con el query omites el parámetro de conexión. Si miras tu fichero de conexión hay un "connect" llamado $link, ese se declara dentro del query.

PHP:
$query = mysql_query($link, $sql);
 
Habra que depurar, haz esto:
PHP:
$link = mysql_connect($host_db,$usuario_db,$clave_db);
if(!link){
  die("error al conectar al servidor, motivo: ".mysql_error());
}
if(!mysql_select_db('db'){
  die("error al seleccionar bases de datos, motivo: ".mysql_error());
}


Ehmmm.. perdón pero.. ¿depurar?, esto ya es del archivo acceso_db??
 
Ehmmm.. perdón pero.. ¿depurar?, esto ya es del archivo acceso_db??

Te voy a poner los archivos depurados, aunque te puse el link necesario para que copiaras anteriormente:

- Archivo acceso_db.php
PHP:
 <?php 
    $host_db = "localhost"; // Host de la BD 
    $usuario_db = "minombre"; // Usuario de la BD 
    $clave_db = "xxxxxx"; // Contraseña de la BD 
    $nombre_db = "basededatosprueba"; // Nombre de la BD 
    
    $link = mysql_connect($host_db, $usuario_db, $clave_db) or die('No se pudo conectar: ' . mysql_error());
    mysql_select_db($nombre_db) or die('No se pudo seleccionar la base de datos');
?>

Te marco $llink en negrita porque es el principal problema que tienes, creas la conexión pero no se la asignas a una variable, cuando lanzas consultas en el otro archivo y no le pasas la conexión, te tira un error que desconoces, porque tampoco tienes la depuración hecha.

Código del primer post:
PHP:
<?php 
session_start(); 
include('acceso_db.php');

$sql = "SELECT usuario_nombre FROM administrador";//Este es el script SQL que necesitas para obtener el ultimo registro

$query = mysql_query($sql, $link) or die('Consulta fallida: ' . mysql_error());
$result = mysql_fetch_assoc($query);

    if(empty($_SESSION['usuario_nombre'])) { // comprobamos que las variables de sesión estén vacías         
?>

Con esto debería bastar, o al menos estar cerca del éxito. No lo he probado, puede que de error.

Saludos.
 
Atrás
Arriba