¿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());
 

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());
}
 
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);
 


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.