[php] ervaringen met objecten opslaan in een mysql database

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Bartholomew
  • Registratie: Januari 2000
  • Laatst online: 29-04-2024
Vroeg me af wie er hier allemaal ervaring heeft met het opslaan van objecten in een (mysql) database. Nu heb ik een flink aantal tabellen nodig op een bestelling van een klant op te slaan. Ik kan naturlijk ook een bestelling object in 1 tabel opslaan. Dit bestelling object heet dan een klant object met de naam en adres gegevens enzo en een array van product objecten met de productnaam, aantal prijs etc.

Maar ik heb niet veel ervaring met het opslaan van objecten in een db en voordat ik veel tijd steek in he proggen was ik benieuwd of hier mensen zijn die er goede of juist slechte ervaring mee hebben.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
Tsja, als een een object serialized kun je het niet doorzoeken in de database op bijv. klantnummer of iets dergelijks.

Persoonlijk zie ik er absoluut geen heil in, omdat je ook nog rekening moet gaan houden met dat je classes eerst zal moeten laden etc. Hoe laad je je dbclass object uit een database?

Als het je er om gaat om veel (relationele) informatie tussen pagina's door te sluizen zou serialize en sessions wel handig zijn, imho.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Wat is er mis met een flink aantal tabellen gebruiken. Dat is nou juist zo ongeveer het idee achter een database..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 18-09 21:53

Tux

Als je voor elke klant ofzo een nieuwe tabel aan zou moeten maken enzo is je database design imho niet goed.

En waarom zou je klantgegevens in een object op willen slaan? Een array is toch veel handiger?

Als je dan toch een object wil hebben kan je beter de gegevens op een 'normale' manier opslaan en met een query alle benodigde informatie ophalen. Dan heb je de functie mysql_fetch_object() :)

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • seweso
  • Registratie: Augustus 2003
  • Laatst online: 04-04-2018

seweso

de mouw is uit de aap

Als je object-georienteerd programmeerd en je data ook persistent maakt m.b.v. een database dan sla je in feite objecten op in een database.

Zelf vind ik het enigsinds lastig om object georienteerd te programmeren in PHP. Dat komt vooral doordat je het volgende niet kan doen:
PHP:
1
$object->functie()->nogeenfuntie();
heel irritant.

Als je dan toch oo programmeert in PHP dan kun je je oo-model sowieso omzetten naar een relationeel model. Vervolgens kun je een laag schrijven zodat je objecten kan opvragen en opslaan vanuit een mysql database.

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
class woo_object {
  var $id = -1;     // permanent id
  var $data = null;     // data cache

  function woo_object($id) {
    $this->id = $id;
  }
  
  function get_data() {
    if (!is_null($this->data))
      return $this->data;

    $result = mysql_query("SELECT OB_DATA FROM ".WOO_TABLE_OBJECT." WHERE OB_ = $this->id") or die("err: mysql_query:".mysql_error()."<br>".$query);
    $row = mysql_fetch_row($result);
    $this->data = $row[0];
    return $this->data;
  }
  function set_data($data) {
    $this->data = $data;
    $data = mysql_real_escape_string($data);

    $result = mysql_query("UPDATE ".WOO_TABLE_OBJECT." SET OB_DATA = '$data' WHERE OB_ = $this->id") or die("err: mysql_query:".mysql_error()."<br>".$query);
  }
}


Bovenstaand voorbeeld werkt altijd met live data, maar je kunt je natuurlijk ook voorstellen dat je alle velden van het object cached voor de snelheid. Daarnaast kun ook nog een extra laag tussen je objecten en mysql maken zodat je niet in je objecten direct met mysql-functies werkt (zodat je objecten lichtgewicht blijven en je makkelijker dingen kan aanpassen in de structuur).

[ Voor 49% gewijzigd door seweso op 22-02-2004 13:34 ]

seweso's blog


Acties:
  • 0 Henk 'm!

  • JHS
  • Registratie: Augustus 2003
  • Laatst online: 16-09 16:02

JHS

Splitting the thaum.

Ik zou geen hele objecten gebruiken om op te slaan, je kan het veel dynamischer maken (en op snelheid houden) door een redelijk aantal tabellen te gebruiken, zodat die doorzocht kunnen worden.

En idd, als je het in een object voor het scriptdeel wil hebben, kan je net zo goed mysql_fetch_object gebruiken :)

[ Voor 24% gewijzigd door JHS op 22-02-2004 13:58 . Reden: mysql_fetch_object toegevoegd ]

DM!

Pagina: 1