Foros del Web » Programando para Internet » PHP » Frameworks y PHP orientado a objetos »

problema con Class

Estas en el tema de problema con Class en el foro de Frameworks y PHP orientado a objetos en Foros del Web. esta es la clase: Código PHP: class  Usuariosenlinea  {  /*      * @param string $servidor el host para conectar, usualmente localhost      * @param string $basededatos el nombre de la base de datos      * @param string $nombredb el nombre de la tabla, preferentemente no editar      * @param string $usuario usuario de la base de datos      * @param string $pass la contraseña de la base de datos  */     var  $servidor  =  'localhost' ;    var   $basededatos  =  ...
  #1 (permalink)  
Antiguo 10/03/2008, 08:44
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Exclamación problema con Class

esta es la clase:

Código PHP:

class Usuariosenlinea 

/* 
    * @param string $servidor el host para conectar, usualmente localhost 
    * @param string $basededatos el nombre de la base de datos 
    * @param string $nombredb el nombre de la tabla, preferentemente no editar 
    * @param string $usuario usuario de la base de datos 
    * @param string $pass la contraseña de la base de datos 
*/ 

  
var $servidor 'localhost'
  var  
$basededatos 'db_midb'
  var 
$nombredb =  'enlinea'
  var 
$usuario 'usuario'
  var  
$pass 'pass'
  
## Fin de Conexion ## 
   
   
var $e_rror
  
//Segundos para borrar de la base de datos a los usuarios inactivos 
  
var  $segundos 120
  var 
$ahora =  

    
//CONSTRUCTOR 
    
function Usuariosenlinea() { 

     
$this->recargar(); 

    } 
                     
    function  
cuantos () { 

    return 
$this->ahora

    } 
                     
    function  
enlinea() { 

        if(
$this->ahora  ==  1) { 

    echo 
$this->ahora " Usuario en linea" 
        } 
        else 
        { 
    echo 
$this-> ahora  ." Usuarios en linea"
        } 
         
    } 

        function 
ipreal (){ 

            if (
$real_ip getenv('HTTP_X_FORWARDED_FOR' )){ 
             
                
$explode_real_ip explode","$real_ip); 
                return 
trim $explode_real_ip[0]); 
            } 
            else 
            { 
            return  
getenv ('REMOTE_ADDR'); 
            } 
        } 
         
        function  
error (){ 

        return 
$this->e_rror =  mysql_error (); 

        } 
         
        function 
recargar() { 
             
             
$tiempo_actual  time(); 
            
$tiempo_final =  $tiempo_actual  $this->segundos
             
$ip =  $this->ipreal(); 
    
        @ 
mysql_connect ($this->servidor$this -> usuario$this->pass 
        or die(
'Error al Intentar Conectar con la base de datos ' .$this-> error().'' ); 

        @
mysql_select_db$this->basededatos 
        or die(
'Error Seleccionando la base de datos ' .$this-> error().''); 
         
        
$result =  mysql_query("SELECT ip FROM $this->nombredb WHERE ip='$ip'" 
        or die(
'Error de lectura en la base de datos ' .$this-> error().'' ); 
         
        if(
mysql_num_rows ($result) == ){ 
         
        
mysql_query ("INSERT INTO $this->nombredb VALUES ('$tiempo_actual','$ip','$_SERVER[REQUEST_URI]')" 
        or die( 
'Error al Insertar en la base de datos '.$this-> error(). ''); 
         
        } 
        else 
         
        {         
         
mysql_query"UPDATE $this->nombredb SET timestamp='$tiempo_actual' where ip='$ip'" 
        or die(
'Error al Insertar en la base de datos ' .$this-> error().'' ); 
        } 

        
mysql_query"DELETE FROM $this->nombredb WHERE timestamp < $tiempo_final" 
        or die(
'Error al intentar borrar en la base de datos ' .$this-> error().''); 

         
$result =  mysql_query("SELECT ip FROM $this->nombredb" 
        or die(
'Error de lectura en la base de datos ' .$this-> error().'' ); 
                 
        
$this-> ahora mysql_num_rows ($result); 
              
         
mysql_close(); 
               
        } 



asi la llamo:

Código PHP:
include("class.online.php"); 
$enlinea = new Usuariosenlinea (); 
$enlinea->enlinea(); 

PROBLEMA!

1) tengo un archivo de conexion que cambio la clave todos los meses y no quiero entrar en la class para cambiar ahi tambien como puedo llamar a las variables de conexion para que cuando cambie en ese archivo tambien cambie automatico en mi class?
2) en la pagina donde incluyo esta clase tengo la variable $ID donde esta el id del usuario... quiero que inserte en la base de datos tambien ese ID como hago para llamarlo desde la clase?
  #2 (permalink)  
Antiguo 10/03/2008, 09:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema con Class

Puedes pasarle como parámetro a tu constructor el ID:
Código PHP:
var $u_id;
function 
Usuariosenlinea($ID) { 
     
$this->u_id $ID;
     
$this->recargar(); 

    } 
Luego mas abajo en recargar lo puedes rescatar como $this->u_id, y asi lo puedes agregar a tus consultas de tu base de datos.

Para cambiar los parámetros de conexión puedes crear una función que los lea desde un archivo de configuración.

Tema trasladado a PHP Orientado a Objetos.

Saludos.
  #3 (permalink)  
Antiguo 10/03/2008, 10:52
Avatar de farra  
Fecha de Ingreso: marzo-2008
Ubicación: Aqui estoy
Mensajes: 574
Antigüedad: 16 años, 2 meses
Puntos: 20
Exclamación Re: problema con Class

Este Error me da!

Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: Access denied for user 'ODBC'@'localhost' (using password: NO) in C:\wamp\www\misitio\online.php on line 11


que puede tratarse?

esto tengo en la linea 11:
Código PHP:

 
if (!function_exists("GetSQLValueString")) {
function 
GetSQLValueString($theValue$theType$theDefinedValue ""$theNotDefinedValue ""
{
  
$theValue get_magic_quotes_gpc() ? stripslashes($theValue) : $theValue;

/// linea 11 :
  
$theValue function_exists("mysql_real_escape_string") ? mysql_real_escape_string($theValue) : mysql_escape_string($theValue);

  switch (
$theType) {
    case 
"text":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;    
    case 
"long":
    case 
"int":
      
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
      break;
    case 
"double":
      
$theValue = ($theValue != "") ? "'" doubleval($theValue) . "'" "NULL";
      break;
    case 
"date":
      
$theValue = ($theValue != "") ? "'" $theValue "'" "NULL";
      break;
    case 
"defined":
      
$theValue = ($theValue != "") ? $theDefinedValue $theNotDefinedValue;
      break;
  }
  return 
$theValue;
}


luego lo llamo asi:

Código PHP:

<?php  include("../class.online.php");    $enlinea = new Usuariosenlinea ();  $enlinea->enlinea();  ?>
  #4 (permalink)  
Antiguo 10/03/2008, 11:04
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años
Puntos: 2135
Re: problema con Class

La función mysql_real_escapestring se trata de conectar primero a la base de datos, como no tienes ninguna conexión definida, es por eso que trata de conectarse con los datos del php.ini, pero son incorrectos, revisa los datos de conexión.

Saludos.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:41.