Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Frameworks y PHP orientado a objetos (http://www.forosdelweb.com/f68/)
-   -   problema con Class (http://www.forosdelweb.com/f68/problema-con-class-564510/)

farra 10/03/2008 08:44

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?

GatorV 10/03/2008 09:21

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.

farra 10/03/2008 10:52

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


GatorV 10/03/2008 11:04

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.


La zona horaria es GMT -6. Ahora son las 20:34.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.