login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Database beheerklasse

Offline ArieMedia - 04/02/2011 10:29 (laatste wijziging 07/02/2011 09:46)
Avatar van ArieMediaGouden medaille

PHP ver gevorderde
Beste,

Ik heb de opdracht gekregen om een beheer klasse te schrijven tussen de database en de applicatie. De manager moet query's kunnen bouwen, zodat de query's zo goed en veilig mogelijk in de database komen te staan (denk dus aan $sql->Add(); $sql->Delete();)

Nu is het zo dat ik het mogelijk maak om tabellen volledig op te slaan in de klasse (tabelnaam + velden). De velden hebben de mogelijkheid om vartype's te forceren. een stukje voorbeeldcode maakt dit wellicht duidelijker:

  1. require_once dirname(__FILE__) . '/plugin/mandb/mandb.class.php';
  2. try {
  3. $o_ManDB = new ManDB();
  4. $o_ManDB->SelectType('mysql');
  5. $o_ManDB->LoadDriver();
  6.  
  7. $b_SetTable = $o_ManDB->mysql->SetTable('berichten',
  8. array('id' => 'int',
  9. 'naam' => 'string',
  10. 'bericht' => 'mixed',
  11. 'datum' => 'date'));
  12. $o_ManDB->mysql->Add(array(
  13. 1, 'Arjan', 'Cool bericht', '[command:NOW():]'));
  14. echo $o_ManDB->mysql->GetQuery();
  15. $o_ManDB->mysql->Execute();
  16. }
  17. catch(MandbException $e) {
  18. echo 'De volgende fout trad op:<br />'.$e->getMessage();
  19. }


Nu zit ik met een aantal vragen/probleempjes die ik wil oplossen om het systeem zo optimaal mogelijk te maken.

1] Performance, door alle lussen waar de query doorheen gaat word het systeem erg traag.. hebben jullie tips om code korter (SNELLER!) te schrijven.

2] Zoals je zo zal zien zitten nog niet alle opties er in, waar ik me in moet gaan verdiepen zijn het maken van selectquery's (denk aan JOIN/meerdere tabellen). Hoe zouden jullie dit oplossen?

Mapstructuur (url = code):
  1. - mandb
  2. - mandb.class.php > http://www.plaatscode.be/140616/
  3. - exceptions.class.php
  4. + drivers
  5. - mysql.inc.php
  6. - global.inc.php > http://www.plaatscode.be/140642/
  7. - adodb.inc.php
  8. + trunk
  9. - vartype.inc.php > http://www.plaatscode.be/140617/


Mocht dit script goed beoordeeld worden en nodig zijn, dan ben ik bereid het te plaatsen in scripts (win/win situatie ).

- Edit 10:30
Ik weet dat ik bij add nog rekening moet houden met autonummering.
Wellicht mag de regex ook nog veranderd worden.
+ Voorbeeld even iets aangepast ivm functionaliteit die veranderd is
- Edit 7/2 09:43
Autonummering implementatie klaar  
+ bump 

2 antwoorden

Gesponsorde links
Offline Ontani - 04/02/2011 11:21
Avatar van Ontani Gouden medailleGouden medailleGouden medailleGouden medaille

-1
Die traagheid van die lussen ga je niet kunnen oplossen omdat je via reflection alle juiste dingen met elkaar moet gaan koppelen. Wel kan je bijvoorbeeld een generator voorzien die da Klasse aan de hand van de Tabellen genereerd waardoor je geen reflection meer nodig hebt.
Bedankt door: ArieMedia
Offline ArieMedia - 06/02/2011 02:46
Avatar van ArieMedia Gouden medaille

PHP ver gevorderde
Ontani schreef:
Die traagheid van die lussen ga je niet kunnen oplossen omdat je via reflection alle juiste dingen met elkaar moet gaan koppelen. Wel kan je bijvoorbeeld een generator voorzien die da Klasse aan de hand van de Tabellen genereerd waardoor je geen reflection meer nodig hebt.
Ik heb gelezen over reflection. Eigenlijk raad iedereen het af.

Zal het dus moeten doen met de code zoals die nu is waarschijnlijk. Bedankt voor het reageren 
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.175s