Ver Mensaje Individual
  #1 (permalink)  
Antiguo 16/08/2009, 08:36
astut
 
Fecha de Ingreso: septiembre-2005
Ubicación: Valencia
Mensajes: 738
Antigüedad: 19 años, 2 meses
Puntos: 5
Pregunta Call to a member function on a non-object ajax

Hola, bueno tengo una clase que la utilizo para conectarme a mi bd y realizar consultas, es esta:
Código PHP:
class manejadordb
    
{
        public 
$conexion;
        public 
$conexion_servidor"localhost";
        public 
$conexion_usuario"zamblo";
        public 
$conexion_contrasena"pass";
        public 
$conexion_bd"pokemonrpg";
        
        public function 
__construct()
        {
            
$this->Conectar();
        }
        
        
//Realizar conexion a la base de datos
        
public function Conectar()
        {
            
$this->conexionmysql_connect($this->conexion_servidor$this->conexion_usuario$this->conexion_contrasena);
            
mysql_select_db($this->conexion_bd$this->conexion);
            
mysql_query ("SET NAMES 'utf8'");
        }
        
//Realizar consulta a la base de datos
        
public function Consulta($datos)
        {
            
$resultadomysql_query($datos$this->conexion);
            
//echo mysql_errno($this->conexion).": ".mysql_error($this->conexion);
            
            
return $resultado;
        }
        
//Devolver resultado de un campo de consulta a la base de datos
        
public function ResultadoConsulta($consulta)
        {
            
$resultadomysql_result($consulta0);
            
//echo mysql_errno($this->conexion).": ".mysql_error($this->conexion);
            
            
return $resultado;
        }
        
//Devolver array de datos de consulta a la base de datos
        
public function ArrayConsulta($consulta)
        {
            
$resultadomysql_fetch_array($consulta);
            
//echo mysql_errno($this->conexion).": ".mysql_error($this->conexion);
            
            
return $resultado;
        }
        
//Devolver array numerico de datos de consulta a la base de datos
        
public function ArraynumConsulta($consulta)
        {
            
$resultadomysql_fetch_row($consulta);
            
//echo mysql_errno($this->conexion).": ".mysql_error($this->conexion);
            
            
return $resultado;
        }
        
//Devolver numero de filas de consulta a la base de datos
        
public function FilasConsulta($consulta)
        {
            
$resultadomysql_num_rows($consulta);
            
//echo mysql_errno($this->conexion).": ".mysql_error($this->conexion);
            
            
return $resultado;
        }
    } 
La cosa esque estoy tratando de usarla en ajax, de esta forma:
Código PHP:
        //Manejador base de datos
    
include_once("clases/manejadordb.php"); //La incluyo <---
    
if (!isset($db)) $db= new manejadordb//Si ya no esta creada, la creo <---
    
    
require("xajax/nucleo/xajax_core/xajax.inc.php");
    
    
$xajax= new xajax();
    
$xajax->configure('javascript URI''xajax/nucleo');
    
$xajax->setCharEncoding('utf-8');
    
$xajax->configure('debug'true);
    
    
/*----
        Comprar objeto
    ----*/
    
function AccionComprar($objeto_nombre$objeto_cantidad)
    {
        
$respuesta= new xajaxResponse();
           
                
//<--- Aqui la intento utilizar
        
$dinero$db->ResultadoConsulta($db->Consulta("SELECT dinero FROM pokemonrpg_cuenta WHERE nombre='{$_COOKIE[pokemonrpg_jugador_cuenta]}'"));
                
//---->

        
$obtener_costemysql_result(mysql_query("SELECT coste FROM pokemonrpg_objeto WHERE nombre='$objeto_nombre'"), 0);
        
$coste$obtener_coste $objeto_cantidad;
        
        if (
$dinero>= $coste)
        {
            
//Retiramos dinero
            
mysql_query("UPDATE pokemonrpg_cuenta SET dinero= dinero - $objeto_coste WHERE nombre='{$_COOKIE[pokemonrpg_jugador_cuenta]}'");
            
//Insertamos objeto
            
include('funciones/juego/objetos/InsertarObjeto.php');
            
InsertarObjeto($objeto_nombre$objeto_cantidad$_COOKIE['pokemonrpg_jugador_entrenador']);
            
            
//>>>Cambios visuales
            
$bloque_proceso_color'verde';
            
$bloque_proceso_descripcion'Objeto/s adquirido/s correctamente';
        }
        else
        {
            
//>>>Cambios visuales
            
$bloque_proceso_color'rojo';
            
$bloque_proceso_descripcion'No posees dinero suficiente';
        }
        
        
//Icono de carga
        
$respuesta->assign('xajax_carga''className''estado_deshabilitado');
        
        return 
$respuesta;
    }
    
    
$xajax->registerFunction("AccionComprar");
    
$xajax->processRequest();
?> 
Como podeis ver intento usar un metodo de la clase en esta linea:
Código PHP:
$dinero$db->ResultadoConsulta($db->Consulta("SELECT dinero FROM pokemonrpg_cuenta WHERE nombre='{$_COOKIE[pokemonrpg_jugador_cuenta]}'")); 
Bueno pues el debug de xajax me da el siguiente error:
Código:
<b>Fatal error</b>:  Call to a member function ResultadoConsulta() on a non-object in <b>C:\Wamp\www\Pokemonrpg\modulos\juego\eventos\npc_tienda\xj_npc_tienda.php</b> on line <b>20</b><br />
Vamos que es como si el objeto db no se creara, sin embargo si lo utilizo fuera de xajax funciona bien.

¿Que esta mal?, gracias!
__________________
http://www.pkmrpg.es