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

consulta sobre clases

Estas en el tema de consulta sobre clases en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Que tal, tengo una conexion echa en clases con unas consultas, pero me tira error, alguien me da una mano, es algo basico de clases ...
  #1 (permalink)  
Antiguo 25/12/2008, 21:58
Avatar de Fogox  
Fecha de Ingreso: abril-2008
Mensajes: 59
Antigüedad: 16 años
Puntos: 0
Pregunta consulta sobre clases

Que tal, tengo una conexion echa en clases con unas consultas, pero me tira error, alguien me da una mano, es algo basico de clases loq pido que me expliquen...
esto es conexion.class.php
Código PHP:
class conexion{
        
        function 
conexion(){
            
            
$cnx1 mysql_connect("xxxx""xxxxx" ,"");
        }
        
        function 
conexiondb(){
            
$cnx mysql_select_db("x1");
        }
        
}

class 
muestra{
    
    function 
mostrar(){
        
        
$conx mysql_query("select nombre, apellido from datos",$cnx);
    }

y esto es donde hago las purebas llamemos
prueba.php

Código PHP:
include_once("Db\conexion.class.php");


    
//conexiondb();
$mostrar = new muestra();

    while(
$celda mysql_fetch_row($mostrar->mostrar())){
        
        print 
$celda[1]."<br>";
        print 
$celda[2]."<br>";
        
    
    } 
y me tira este error

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\xampp\htdocs\Db\conexion.class.php on line 20

Warning: mysql_fetch_row(): supplied argument is not a valid MySQL result resource in C:\xampp\htdocs\prueba.php on line 8

Alguien me podria dar una mano a ver donde le erro

muchas gracias
SaludoS!!!!!
  #2 (permalink)  
Antiguo 25/12/2008, 22:15
Avatar de Ronruby  
Fecha de Ingreso: julio-2008
Ubicación: 18°30'N, 69°59'W
Mensajes: 4.879
Antigüedad: 15 años, 9 meses
Puntos: 416
Respuesta: consulta sobre clases

El problema no esta en las clases, donde fallas es en las funciones.

Recuerda que las variables declaradas dentro de una funcion son LOCALES, y dichas variables no pueden ser vistas desde fuera de la funcion a menos que la especifiques como variable GLOBAL.

Por eso al pasarle la variable $cnx a mysql_query() te da un error de que no le estas dando una conexion valida.
Si quieres resolver el problema no le pases el segundo parametro a mysql_query(), este tomara la ultima conexion abierta.

Leete esto:
http://www.php.net/variables.scope
  #3 (permalink)  
Antiguo 26/12/2008, 11:43
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Respuesta: consulta sobre clases

Tema trasladado a PHP Orientado a Objetos.
  #4 (permalink)  
Antiguo 26/12/2008, 16:30
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: consulta sobre clases

El problema es de clases, no está entendiendo el alcance de las variables/atributos dentro de los métodos.

Atención: Las variables globales están terminantemente prohibidas.

Lo que deberías hacer es tener un atributo de la clase para la conexión y este ser usado por los métodos de la propia clase.

Detalles a tener en cuenta
  • El nombre de la clase no se ajusta al contexto, lo que tu intentas hacer es una operación de base de datos y la conexión sería un atributo de la clase
  • Revisa la nomenclatura, usa el estándar de Zend

Debería ser algo del estilo:

Código PHP:

Archivo
BaseDeDatos.php

class BaseDeDatos

   private 
$_conexion;
   private 
$_resultado;
 
   public function 
__construct($nombre)
   {       
      
$this->_conexion mysql_connect("xxxx""xxxxx" ,"");
      
mysql_select_db($nombre);
   }
   public function 
ejecutarConsulta($sql)
   {
      
$this->_resultado mysql_query($sql,$this->_conexion);
   }
   public 
functino obtenerDatos()
   {
     return 
mysql_fetch_row($this->_resultado);
   }
}

ArchivoCliente.php

require_once 'BaseDeDatos.php';

class 
Cliente
{    
   public function 
mostrar()
   {   
       
$bd = new BaseDeDatos('clientes');     
       
$bd->ejecutarConsulta("select nombre, apellido from datos");

      while(
$datos $bd->obtenerDatos()){
          
// etcétera
      
}

   }

__________________
Blog phpsenior.com Cursos a Distancia surforce.com
  #5 (permalink)  
Antiguo 27/12/2008, 11:44
Avatar de Fogox  
Fecha de Ingreso: abril-2008
Mensajes: 59
Antigüedad: 16 años
Puntos: 0
Respuesta: consulta sobre clases

Muchas gracias enriqueplace, te consulto, hay alguna buena documentacion en alguna web que me puedas recomendar de oop, no tanto apuntado al lunguaje php sino a la logica...

Saludos
  #6 (permalink)  
Antiguo 27/12/2008, 15:31
Avatar de enriqueplace  
Fecha de Ingreso: mayo-2005
Ubicación: Uruguay / Argentina
Mensajes: 1.102
Antigüedad: 18 años, 11 meses
Puntos: 32
Respuesta: consulta sobre clases

Cita:
Iniciado por Fogox Ver Mensaje
Muchas gracias enriqueplace, te consulto, hay alguna buena documentacion en alguna web que me puedas recomendar de oop, no tanto apuntado al lunguaje php sino a la logica...

Saludos
Sobre libros o materiales, poco o nada puedo recomendarte para PHP, lo mejor es que busques material conceptual sobre POO en Java.
__________________
Blog phpsenior.com Cursos a Distancia surforce.com
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 09:13.