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

Extraer de BD con objeto de clase especifica

Estas en el tema de Extraer de BD con objeto de clase especifica en el foro de Frameworks y PHP orientado a objetos en Foros del Web. Buenas, llevo muy poco con esto de las clases pero si un tiempo programando en PHP, pero hasta ahora no me habia interesado por hacer ...
  #1 (permalink)  
Antiguo 24/01/2011, 13:27
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 15 años
Puntos: 2
Extraer de BD con objeto de clase especifica

Buenas, llevo muy poco con esto de las clases pero si un tiempo programando en PHP, pero hasta ahora no me habia interesado por hacer esto

Mi idea, no se si se podrá realizar, es que por ejemplo yo ponga

$alquiler->getAlquiler(id_alquiler) // Esta funcion extraiga de la BD y me de un objeto con los datos de esa fila y me lo devuelva para que yo lo use aqui

Y pueda escribir el objeto de esta forma

echo "El alquiler esta en {$alquiler->getDireccion()}, y su estado es {$alquiler->getEstado()}"

El metodo getAlquiler(id_alquiler) dentro de la clase ALQUILER sería algo asi

public getAlquiler($id_alquiler)
{
sql="select * from alquiler where id_alquiler={$id_alquiler}";
$result=mysql_query($sql);
while ($row = mysql_fetch_assoc($result))
return new Alquiler($row["id_alquiler"],$row['direccion'].... );
}

Esto quiero reflejarlo en un formulario pero al recoger el formulario como lo hariais para guardar los datos?

$alquiler->getAlquiler(id_alquiler)
$alquiler->setDireccion($_POST['direccion'])
.....

¿Como salvaria ahora el objeto en la base de datos?

this->setAlquiler(id_alquiler)??

Gracias anticipadas
  #2 (permalink)  
Antiguo 24/01/2011, 15:32
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 5 meses
Puntos: 2135
Respuesta: Extraer de BD con objeto de clase especifica

Lo que quieres hacer se conoce como patrón Active Record y Active Table, lee sobre estos patrones y vas a poder ver la mejor forma de implementarlo .

Saludos.
  #3 (permalink)  
Antiguo 25/01/2011, 02:22
 
Fecha de Ingreso: octubre-2009
Mensajes: 223
Antigüedad: 15 años
Puntos: 2
Respuesta: Extraer de BD con objeto de clase especifica

muy interesante esos patrones, eso tiene algo que ver con Ruby Rails?
  #4 (permalink)  
Antiguo 25/01/2011, 02:42
 
Fecha de Ingreso: enero-2011
Ubicación: Madrid
Mensajes: 8
Antigüedad: 13 años, 10 meses
Puntos: 0
Respuesta: Extraer de BD con objeto de clase especifica

Te pongo un ejemplo de lo que yo hago.

Por un lado defino un modelo:

Código PHP:
class cliente
{
  public 
$codigo;
  public 
$nombre;
  public 
$nif;

 public function 
guardar()
 {
  
//...
 
}

Ahora un ejemplo de consulta de un solo elemento:

Código PHP:
// Doy por supuesto que $conn es una instancia de PDO

$codigo 3;
$conn->query("select codigo, nombre, nif from clientes where codigo = $codigo");

$objCliente $conn->fetch(PDO::FETCH_CLASS"cliente"); 
Y voilá, tenemos una instancia de cliente rellena.

También vale para sacar listados:

Código PHP:
// Doy por supuesto que $conn es una instancia de PDO

$nombre "luis";
$conn->query("select codigo, nombre, nif from clientes where nombre like '%$nombre%'");

$objClientes $conn->fetchAll(PDO::FETCH_CLASS"cliente"); 
Y tenemos un array de objetos de clase cliente, así que podemos hacer algo así:

Código PHP:
foreach ($objClientes as $cliente)
{
  
$cliente->nombre strtoupper($cliente->nombre);
  
$cliente->guardar();

  #5 (permalink)  
Antiguo 25/01/2011, 04:06
Avatar de historiasdemaria  
Fecha de Ingreso: septiembre-2010
Ubicación: www
Mensajes: 433
Antigüedad: 14 años, 1 mes
Puntos: 54
Respuesta: Extraer de BD con objeto de clase especifica

Bueno en realidad todo esto lo podrias hacer con un ORM, como Doctrine.. para quien les guste los ORMs claro,
Yo una vez escribi un generador de codigo, de puro aburrimiento de escribir los mismos metodos, select, insert, update.. que hacia todo esto por mi generando una clase por tabla
Tal vez vuelva a escribir uno ;)
  #6 (permalink)  
Antiguo 25/01/2011, 06:23
Avatar de masterpuppet
Software Craftsman
 
Fecha de Ingreso: enero-2008
Ubicación: Montevideo, Uruguay
Mensajes: 3.550
Antigüedad: 16 años, 10 meses
Puntos: 845
Respuesta: Extraer de BD con objeto de clase especifica

Cita:
Iniciado por gspablo Ver Mensaje
muy interesante esos patrones, eso tiene algo que ver con Ruby Rails?
Los patrones de diseño son independientes del lenguaje, pero efectivamente una de las implementaciones mas conocidas es la de RoR.


Saludos.
__________________
http://es.phptherightway.com/
thats us riders :)
  #7 (permalink)  
Antiguo 25/01/2011, 21:26
 
Fecha de Ingreso: agosto-2009
Ubicación: Buenos Aires
Mensajes: 13
Antigüedad: 15 años, 2 meses
Puntos: 0
Respuesta: Extraer de BD con objeto de clase especifica

Podrias usar Mysqli y utilizar el metodo [URL="http://ar.php.net/manual/en/mysqli-result.fetch-object.php"]fetch_object[/URL], donde su paremetro le indicas el nombre de la clase que queres q te devuelva los resultados

Código PHP:
Ver original
  1. $query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
  2.  
  3. if ($result = $mysqli->query($query)) {
  4.  
  5.     /* fetch object array */
  6.     while ($obj = $result->fetch_object('nombreDeClase')) {
  7.         printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
  8.     }
  9.  
  10.     /* free result set */
  11.     $result->close();
  12. }

Saludos

Etiquetas: bd, clase, especifica, extraer, objeto
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 14:31.