Registreer FAQ Berichten van vandaag


Ga terug   Scholieren.com forum / Technologie / Software & Hardware
Reageren
 
Topictools Zoek in deze topic
Oud 07-12-2005, 08:10
dragonstorm
Avatar van dragonstorm
dragonstorm is offline
hoi hoi,

ik moet een cms schrijven met een tigtal databases, en aldus schrijf ik nogal vaak hetzelfde op. Dit heb ik min of meer kunnen verminderen dmv een hoop abstracte functies, maar wat ik eigenlijk wil is door middel van argumenten een formulier en bijbehorende SQL query genereren. Wat ik bedoel is min of meer dit:

administratiepagina -> toevoegformulier -> toevoegscript

dit heb ik tot nu toe zo'n 5 keer; en dat vind ik teveel Dus eigenlijk wil ik een generale administratiepagina, toevoegformulier, en script hebben; het probleem is alleen dat ze allen verschillende types informatie hebben en een verschillend aantal velden.

Gezien m'n soorten informatie nogal beperkt is (plaatjes, text, en unique ids) zou ik toch willen dat het kon. Oh ja, mysql en php (en perl) zijn het enige waarover ik beschik; ik zou het met bvb lisp denk ik wel kunnen doen.
Met citaat reageren
Advertentie
Oud 07-12-2005, 08:30
Verwijderd
OO?

Code:
$s = new Script( parametertjes )
class Script
{
  Script(){}
  Script( @parameters ){}
  overige functie om het script te genereren
}
Verder is het dynamisch genereren van SQL niet zo handig, aangezien de database server dan iedere keer een execution plan moet maken ('hoe kan ik de query het beste uitvoeren') en moet compileren alvorens deze de query kan uitvoeren. Dit kan enorm veel performance kosten.
Met citaat reageren
Oud 07-12-2005, 08:43
dragonstorm
Avatar van dragonstorm
dragonstorm is offline
php4 helaas

ehm ehm... hoe bedoel je dat precies, met het compileren van sql?
Met citaat reageren
Oud 07-12-2005, 10:22
Verwijderd
met php4 kun je ook classes maken hoor

Over het sql verhaal:

De server moet het eerst omzetten naar begrijpelijke taal voor hemzelf ('compileren'). Wanneer je een statement stuurt moet de database:
- een zogenaamd 'execution plan' genereren
- op basis van dit execution plan het statement compileren
- de gecompileerde versie uitvoeren

Stuur je vaak exact hetzelfde statement (achter elkaar) dan zal deze vaak nog gecompileerd uit de cache gehaald worden. Zodra je echter maar één conditie hebt gewijzigd begint het hele verhaal weer van voor af aan.

Beter is om bijvoorbeeld een 'paramterized query' te gebruiken. De query wordt gecached en bij wisselende parameters haalt de database de gecompileerde versie uit de cache en vervangt alleen de paramters (omdat deze geen invloed hebben op het execution plan).
Met citaat reageren
Oud 07-12-2005, 15:50
Verwijderd
Citaat:
eddie schreef op 07-12-2005 @ 09:30 :
OO?

Code:
$s = new Script( parametertjes )
class Script
{
  Script(){}
  Script( @parameters ){}
  overige functie om het script te genereren
}
Dit gaat natuurlijk niet werken he, daar PHP geen overloading kent (of je moet het willen simuleren dmv method invocations op te vangen en te delegeren, maar dat moet op een andere manier dan deze)
PHP4 OO is vrij bout, daar het geen accesibility modifiers, interfaces en typehinting kent, dus als het mogelijk is zou ik je ten zeerste PHP5 aanraden die deze dingen wel heeft. Overloading is ook hier helaas ver te zoeken.
Met citaat reageren
Oud 07-12-2005, 16:19
dragonstorm
Avatar van dragonstorm
dragonstorm is offline
aha...en als ik een functie en lijst als argument geef?
Met citaat reageren
Oud 08-12-2005, 07:15
ExVaal
Avatar van ExVaal
ExVaal is offline
Werkt je code, opmaak en data gescheiden? Dan is het toch onwijs simpel, maak een formuliertje als template per pagina, een drop down menu in je main template met alle verschillende pagina's?
Met citaat reageren
Oud 08-12-2005, 23:33
Verwijderd
Citaat:
dragonstorm schreef op 07-12-2005 @ 17:19 :
aha...en als ik een functie en lijst als argument geef?
Wat bedoel je hiermee? PHP kan niet zoals C(++) pointers naar functies meegeven he?
Met citaat reageren
Advertentie
Reageren


Regels voor berichten
Je mag geen nieuwe topics starten
Je mag niet reageren op berichten
Je mag geen bijlagen versturen
Je mag niet je berichten bewerken

BB code is Aan
Smileys zijn Aan
[IMG]-code is Aan
HTML-code is Uit

Spring naar


Alle tijden zijn GMT +1. Het is nu 14:14.