Foros del Web » Programando para Internet » PHP »

PHP OO Dudas con implementacion de una clase

Estas en el tema de Dudas con implementacion de una clase en el foro de PHP en Foros del Web. Hola, Tengo una duda como realizar una consulta para una clase. La siguiente clase recuperar el nombre de un anuncio almacenado en la base de ...
  #1 (permalink)  
Antiguo 25/10/2012, 04:35
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Dudas con implementacion de una clase

Hola,

Tengo una duda como realizar una consulta para una clase. La siguiente clase recuperar el nombre de un anuncio almacenado en la base de datos.

Código PHP:
class Anuncio{
    
    var 
$nombre            null;
    
    public function 
__construct() {
    
    }
    
    public function 
get_anuncio($id_anuncio$activado){
        
        global 
$conex;

        
$res_anuncio=mysql_query("

            SELECT a.*, p.nombre AS 'provincia'
            FROM anuncio a, provincia p
            WHERE a.id='$id_anuncio' AND a.activado='$activado'
            LIMIT 1 "
$conex);
        
        
$fila_anuncio=mysql_fetch_array($res_anuncio);
        
        
$this->nombre            $fila_anuncio['nombre'];
        
    }

Ahora lo que queria es poder crear una función que recuperase un conjunto de anuncios y devolviese un array pero no tengo muy claro como debo proceder.

No sé si debería crear una clase aparte o desde esta misma se puede hacer. Estoy atascado.

Agradecería la ayuda.
  #2 (permalink)  
Antiguo 25/10/2012, 04:51
 
Fecha de Ingreso: mayo-2004
Mensajes: 102
Antigüedad: 19 años, 11 meses
Puntos: 5
Respuesta: Dudas con implementacion de una clase

Yo haría algo así como:

class Anuncio{

var $nombre = null;

public function __construct() {

}

public function get_anuncio($id_anuncio, $activado){

global $conex;

$res_anuncio=mysql_query("

SELECT a.*, p.nombre AS 'provincia'
FROM anuncio a, provincia p
WHERE a.id='$id_anuncio' AND a.activado='$activado'
LIMIT 1 ", $conex);

$fila_anuncio=mysql_fetch_array($res_anuncio);



$this->nombre = $fila_anuncio['nombre'];

}
public function get_all_anuncios(){

//haces tu consulta mysql


//hacesu nloop con los datos tipo
$i="0";
do{

$array_datos[$i] = $fila_anuncio['nombre'];

$i++;


}while($fila_anuncio=mysql_fetch_array($res_anunci o))'








return $array_datos;


}
}

saludos1
__________________
Bruno Quintana
  #3 (permalink)  
Antiguo 25/10/2012, 04:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Dudas con implementacion de una clase

Umm, pero el problema viene con la estructura en la class articulo solo me he creado el atributo nombre, no array de nombres.

El tema esta en que estaria devolviendo un conjunto de artículos en la classe articulo.

Dentro de la class articulo podría crearme una variable articulo? que sea un vector de articulos?

algo como:

function get_all_articulos(){

/*consulta a base de datos */

$articulos = new Articulo();

/* Asignar atributos a cada articulo */
}

y aquí ir metiendo los articulos recuperados de la base de datos
  #4 (permalink)  
Antiguo 25/10/2012, 05:05
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Dudas con implementacion de una clase

Prueba con algo así

Código PHP:
function get_all_articulos(){

/*consulta a base de datos */

while($arr fetch) {
    
$return_arr[$i] = new Articulo();
    
$return_arr[$i]->put($arr); //O lo q uses para inicializarlo
    /* Asignar atributos a cada articulo */
    
$i++;
}
return 
$return_arr


O algo así haria yo.. más o menos xDD

Te devolveria un array de objetos, q podrías tratar en plan
Código PHP:
foreach($articulos as $articulo) {
    echo 
$articulo->nombre;

__________________
>> Eleazan's Source
>> @Eleazan
  #5 (permalink)  
Antiguo 25/10/2012, 05:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 45
Antigüedad: 14 años, 2 meses
Puntos: 1
Respuesta: Dudas con implementacion de una clase

Genial, ya lo tengo solucionado haciendo lo que me haveis pasado ha quedado perfecto.

He hecho una clase privada para poner los datos y ha quedado así la estructura base.

Gracias a los dos!!

Código PHP:
Ver original
  1. class Anuncio{
  2.    
  3.     var $nombre         = null;
  4.    
  5.     public function __construct() {
  6.    
  7.     }
  8.    
  9.    
  10.     /* Asignar nombre */
  11.     private function put($valores){
  12.        
  13.         $this->nombre   = $valores['nombre'];
  14.     }
  15.    
  16.    
  17.    
  18.     /* Un anuncio */
  19.     public function get_anuncio($id_anuncio, $activado){
  20.        
  21.         global $conex;
  22.  
  23.         $res_anuncio=mysql_query("
  24.  
  25.             SELECT a.*, p.nombre AS 'provincia'
  26.             FROM anuncio a, provincia p
  27.             WHERE a.id='$id_anuncio' AND a.activado='$activado'
  28.             LIMIT 1 ", $conex);
  29.        
  30.         $fila_anuncio=mysql_fetch_array($res_anuncio);
  31.        
  32.         $this->put($fila_anuncio);
  33.        
  34.     }
  35.    
  36.    
  37.     /* Un conjunto de anuncios */
  38.     public function get_anuncios(){
  39.        
  40.         global $conex;
  41.  
  42.         $res_anuncio=mysql_query("
  43.  
  44.             SELECT a.*, p.nombre AS 'provincia'
  45.             FROM anuncio a, provincia p
  46.             WHERE a.id>'0'
  47.             LIMIT 10 ", $conex);
  48.        
  49.         $i=0;
  50.         while($fila_anuncio=mysql_fetch_array($res_anuncio)){
  51.            
  52.             $anuncios[$i] = new Anuncio();
  53.             $anuncios[$i]->put($fila_anuncio);
  54.            
  55.             $i++;
  56.         }
  57.        
  58.         return $anuncios;
  59.     }
  60. }

Etiquetas: clase, dudas, implementacion, sql
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 01:15.