Scholieren.com forum

Scholieren.com forum (https://forum.scholieren.com/index.php)
-   Software & Hardware (https://forum.scholieren.com/forumdisplay.php?f=20)
-   -   [PHP] Formulieren maken voor datatypen (https://forum.scholieren.com/showthread.php?t=1316240)

dragonstorm 07-12-2005 08:10

[PHP] - Maken van paginas op beschrijven
 
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.

eddie 07-12-2005 08:30

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.

dragonstorm 07-12-2005 08:43

php4 :) helaas

ehm ehm... hoe bedoel je dat precies, met het compileren van sql?

eddie 07-12-2005 10:22

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).

Nigo 07-12-2005 15:50

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.

dragonstorm 07-12-2005 16:19

aha...en als ik een functie en lijst als argument geef?

ExVaal 08-12-2005 07:15

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?

Nigo 08-12-2005 23:33

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?


Alle tijden zijn GMT +1. Het is nu 22:16.

Powered by vBulletin® Version 3.8.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.