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

Mostrar datos de BD mediante una class

Estas en el tema de Mostrar datos de BD mediante una class en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, A ver ante todo decir que estoy empezando con la POO de PHP. Hace tiempo quise empezar pero al ver que era "dificil" lo ...
  #1 (permalink)  
Antiguo 15/04/2010, 11:41
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Mostrar datos de BD mediante una class

Buenas,
A ver ante todo decir que estoy empezando con la POO de PHP. Hace tiempo quise empezar pero al ver que era "dificil" lo deje y hoy lo he vuetlo a retomar .

Bueno leyendo un poco y viendo ejemplos, he sido capaz de crear mi propia clase basada en un coche (que novedad xD).

Esta es:
Código PHP:
Ver original
  1. class info_coche {
  2.         var $marca;
  3.         var $modelo;
  4.         var $color;
  5.         var $matricula;
  6.            
  7.             function __construct($marca,$modelo,$color,$matricula) {
  8.                 $this->marca=$marca;
  9.                 $this->modelo=$modelo;
  10.                 $this->color=$color;
  11.                 $this->matricula=$matricula;
  12.             }
  13.             function mostrar_informacion() {
  14.                 return $this->marca .'-'. $this->modelo .'-'. $this->color .'-'. $this->matricula;
  15.             }
  16.     }
  17.    
  18.  
  19. $coche = new info_coche ('Audi','A5','Negro','CBSXXXX');
  20. echo "Información del coche: ".$coche->mostrar_informacion();

La duda que me asalta es la siguiente:
¿Como hacer para que los datos se saquen de la BD y no manualmente como hago yo?

O sea, en la línea:
$coche = new info_coche ('Audi','A5','Negro','CBSXXXX');
¿Como hago para que los datos salgan de una base de datos y no los tenga que poner yo manualmente?

Es he probado escribiendo:

Código PHP:
Ver original
  1. include ("config.php");
  2.  
  3.     class info_coche {
  4.         var $marca;
  5.         var $modelo;
  6.         var $color;
  7.         var $matricula;
  8.            
  9.             function __construct($marca,$modelo,$color,$matricula) {
  10.                 $this->marca=$marca;
  11.                 $this->modelo=$modelo;
  12.                 $this->color=$color;
  13.                 $this->matricula=$matricula;
  14.             }
  15.             function mostrar_informacion() {
  16.                 return $this->marca .'-'. $this->modelo .'-'. $this->color .'-'. $this->matricula;
  17.             }
  18.     }
  19.    
  20.         $Resultado=mysql_query("SELECT * FROM coches ORDER BY id",$conexion);
  21.         while($MostrarFila=mysql_fetch_array($Resultado)){
  22.         $marca = $MostrarFila['marca'];
  23.         }
  24.  
  25. $coche = new info_coche ($marca,'A5','Negro','CBSXXXX');
  26. echo "Información del coche: ".$coche->mostrar_informacion();

Pero claro, esa no es la manera correcta, aparte de que me sale unicamente el ultimo registro habiendo varios de ellos.

Entonces, ¿como podria adaptar el código?

Muchas gracias una vez más
  #2 (permalink)  
Antiguo 15/04/2010, 11:49
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Mostrar datos de BD mediante una class

Si lo que te interesa es solo el code (aunque no soy un teórico jejejeje), bueno deberás añadir métodos de conexión, luego en tu método mostrar_informacion() lo que devuelves sería el resultado de una consulta a tu BD. Aunque no me gusta esta mezcla de clases, mejor empezar a separar las funcionalidades.
Por un lado la conexión a la BD, por otro lado muestra de consultas, etc.
Otra, sustituye var por un modificador de visibilidad, ya está obsoleto
  #3 (permalink)  
Antiguo 15/04/2010, 12:02
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Mostrar datos de BD mediante una class

Lo que puedes hacer es otra clase que sea encargada de eso precisamente que se comunique con la bd y sea encargada de hacer objetos del tipo coche, por ejemplo:
Código PHP:
Ver original
  1. class coches_bd
  2. {
  3.          public function getCoches()
  4.          {
  5.                    // ...
  6.                    $coches = array();
  7.                    while ($datos = $result->fetchRow) {
  8.                           $coches[] = new info_coche($datos['marca'], $datos['modelo']...);
  9.                    }
  10.  
  11.                    return $coches;
  12.          }
  13. }

Saludos.
  #4 (permalink)  
Antiguo 17/04/2010, 05:32
Avatar de OsSk4R  
Fecha de Ingreso: octubre-2006
Ubicación: $this->home
Mensajes: 824
Antigüedad: 17 años, 5 meses
Puntos: 74
Respuesta: Mostrar datos de BD mediante una class

Buenas de nuevo y perdón por la tardanza,

Bueno, la cosa es que finalmente lo he dejado así:

Código PHP:
Ver original
  1. class bdConnect{
  2.       private $host;
  3.       private $user;
  4.       private $password;
  5.       private $bd;
  6.       private $enlace;
  7.      
  8.     function __construct($host,$user,$password,$bd){
  9.         $this->host=$host;
  10.         $this->user=$user;
  11.         $this->password=$password;
  12.         $this->bd=$bd;
  13.         $this->connect();
  14.         }
  15.      
  16.     private function connect(){
  17.             if ($this->host.$this->user.$this->password) {
  18.             $this->enlace = mysql_connect($this->host,$this->user,$this->password) or die (mysql_error());
  19.         mysql_select_db($this->bd,$this->enlace) or die (mysql_error());
  20.             echo "Datos correctos";
  21.             }else{
  22.                 echo "Los datos de conexión no existen";
  23.             }
  24.            
  25.        }
  26.            
  27.         public function consulta(){
  28.             $Resultado=mysql_query("SELECT * FROM coches ORDER BY id",$this->enlace);
  29.             while($MostrarFila=mysql_fetch_array($Resultado)){
  30.             $marca = $MostrarFila['marca'];
  31.              
  32.             }
  33.            
  34.            }
  35.            
  36.            
  37.     }
  38.          
  39.  
  40. $conexion = new bdConnect("localhost","root","******","deffer");
  41. $conexion->consulta();

La cosa es que funciona bien, me muestra todos los resultados correctamente y tal, pero... quisiera saber vuestra opinión acerca de esta clase.
O sea, ¿si se puede hacer mejor?, ¿no tiene mucho sentido?, etc...

y gracias una vez más
  #5 (permalink)  
Antiguo 17/04/2010, 06:25
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Mostrar datos de BD mediante una class

En este mismo foro se ha debatido bastante sobre este tema, podrías probar buscando y comparando las soluciones y sugerencias q se han hecho a esos posts ya viejos
saludos

Etiquetas: bd, class
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 11:37.