TRImax documentatie

voor developers


CRUD

CRUD is een letterwoord dat staat voor de vier basisbewerkingen op een databasetabel:

  • Create (nieuwe gegevens toevoegen in een nieuwe rij in de databasetabel)
  • Read (een lijst tonen van gegevens in tabelvorm)
  • Update (gegevens aanpassen van een rij in de databasetabel)
  • Delete (een rij met bestaande gegevens verwijderen uit de databasetabel)

CRUD is volledig geïntegreerd in TRImax. Met CRUD kan de content van een tabel beheerd worden die in een MOD gebruikt wordt om herhalende gegevens op de website te presenteren.Het volstaat om in config.php in $config["crud"] de metagegevens van de tabel te definiëren.

Om de designer toe te laten de stijl van de invulformulieren te kunnen aanpassen, worden blokjes html opgenomen in de metadata die het invulveld beschrijven.

Voorbeelden

  • de verschillende wagens die te koop zijn op een site voor tweedehandswagens
  • de verschillende projecten van een zelfstandig schrijnwerker
  • de lijst van producten van een e-shop
  • een selectie van webprojecten gerealiseerd door TRIOS (zie schermafdruk hieronder)

voorbeeld CRUD op website van TRIOS


$config["crud"]

Algemene structuur:

$config["crud"]["tabelnaam"]["kolomnaam"]["metaparameter”] = "waarde";

De eerste parameter bevat een aantal algemene metadata van de tabel en heeft als kolomnaam =TABLE=. De algemene metadata zijn:

  • SORT : optioneel, mag leeg blijven, sortering van de lijst (READ), dit kan één enkel veld zijn of een lijst van velden gescheiden door komma's; het gedeelte van de SQL-query na de SORT BY
  • FILTER : optioneel, mag leeg blijven, het gedeelte van de SQL-query na de WHERE
  • PAGING : een cijfer dat aangeeft hoeveel rijen uit de tabel in de lijst getoond mogen worden; activeert ook de paging onderaan de tabel

Voorbeeld

$config["crud"]["triosprojecten"]["=TABLE="]=array(
  "SORT"=>"volgorde",
  "FILTER"=>"",
  "PAGING"=>""
);

Elke kolom van de databasetabel krijgt een lijn in $config["crud"]. De tabelnaam en de kolomnaam zijn twee verschillende sleutels en daarna volgen een aantal metaparameters:

  • LABEL
  • TYPE
  • REQUIRED
  • LISTORDER
  • LISTWIDTH
  • FORMORDER
  • HTML

Hieronder een voobeeld, tabelnaam=triosprojecten, kolomnaam=titel:

$config["crud"]["triosprojecten"]["titel"]=array(
  "LABEL"=>"titel",
  "TYPE"=>"text",
  "REQUIRED"=>1,
  "LISTORDER"=>1,
  "LISTWIDTH"=>"",
  "FORMORDER"=>1,
  "HTML"=>"
  <div class='12u 12u$(xsmall)'>
    <input type='text' name='#dbtable_#fieldname' id='#dbtable_#fieldname' value='#fieldvalue' placeholder='...' />
  </div>  
  "
  );  

de metaparameters

LABEL

  • verplicht veld
  • de omschrijving van de kolom zoals die verschijnt als titel in de lijst (READ) of als titel bij de lijn in een invulformulier (UPDATE of CREATE of DELETE)

TYPE

  • verplicht veld
  • één van de zes mogelijke input-types: text, textarea, select, radio, checklist, submit
  • zie het volgende punt voor meer uitleg

REQUIRED

  • verplicht veld
  • 0 = niet verplicht
  • 1 = verplicht veld; wordt aangegeven met een klein cirkeltje naast het label in het invulformulier

LISTORDER

  • verplicht veld
  • 0 = toon dit veld NIET in de lijst (READ)
  • 1 tot n = de volgorde waarin de kolommen in de lijst verschijnen

LISTWIDTH

  • verplicht veld dat een lege waarde mag bevatten, de browser kiest dan zelf de optimale breedte
  • de breedte van de kolom in % uitgedrukt (omwille van responsive views)

FORMORDER

  • verplicht veld
  • 0 = toon dit veld NIET in het invulformulier (UPDATE, CREATE, DELETE)
  • 1 tot n = de volgorde waarin de kolommen onder elkaar in het invulformulier verschijnen

HTML

  • verplicht veld
  • bevat de html-code in het invulformulier voor de kolom
  • zie verder voor meer uitleg en voorbeelden

FIELDLIST

  • dit is een optioneel veld
  • wordt enkel gebruikt bij type=(select, radio, checkbox)
  • de lijst is gedefinieerd als een verzameling van paren (key,label) waarbij de eerste waarde de key is die zal opgeslagen worden in de databasetabel en de tweede waarde die op scherm verschijnt in de CRUD.

Er zijn twee mogelijkheden om de FIELDLIST samen te stellen:

  • via een query
  • via een vaste lijst

De FIELDLIST laat toe relationele gegevens via een query uit de database op te halen, indien de waarden van de (select, radio, checkbox) zich bevinden in een andere tabel.

voorbeeld: "FIELDLIST"=>"SELECT artnr,artomschrijving FROM artikels ORDER BY volgorde",

Het is ook mogelijk een vaste lijst met waarden op te geven, als een JSON-lijst. Een JSON-lijst start met een { en eindigt met een }; de paren worden gedefinieerd met dubbel quotes (verplichte JSON-standaard) en een dubbel punt als volgt:

"key":"label"

voorbeeld: "FIELDLIST"=>'{"M":"man","V":"vrouw","X":"anders"}',


voorbeelden van $config["crud"] : HTML en FIELDLIST

Er zijn zes types input die in CRUD kunnen gebruikt worden:

  • text
  • textarea
  • select
  • radio
  • checklist
  • submit

Hieronder enkele voorbeelden van html-code voor elk van deze types; het is de bedoeling dat de designer de customclass vervangt door een relevante class uit zijn css-classes.

text

"HTML"=>"
<div class='customclass'>  
    <input type='text' name='#dbtable_#fieldname' id='#dbtable_#fieldname' value='#fieldvalue' placeholder='...' />  
</div>
",

htmlarea

"HTML"=>"
<div class='customclass'>
    <textarea name='#dbtable_#fieldname' id='#dbtable_#fieldname' rows='6' placeholder='...'>#fieldvalue
</div>
",

select

"HTML"=>"
<div class='customclass'>
    <div class='select-wrapper'>
        <select name='#dbtable_#fieldname' id='#dbtable_#fieldname'>
        #fieldlist
        </select>
    </div>
</div>
",
"FIELDLIST"=>"SELECT volgorde,volgorde AS volgordeval FROM triosprojecten ORDER BY volgorde",
*OR* "FIELDLIST"=>'{"1":"TRImax 1","2":"TRImax 2","3":"TRImax 3","9":"maatwerk"}',

radio

"HTML"=>"
<div class='customclass'>
    <input type='radio' name='#dbtable_#fieldname' id='#dbtable_#fieldname_#fieldvalue' value='#fieldvalue' #checked>
    <label for='#dbtable_#fieldname_#fieldvalue'>#fieldlabel</label>
</div>
",              
"FIELDLIST"=>"SELECT volgorde,volgorde AS volgordeval FROM triosprojecten ORDER BY volgorde",
*OR* "FIELDLIST"=>'{"1":"TRImax 1","2":"TRImax 2","3":"TRImax 3","9":"maatwerk"}',

checklist

"HTML"=>"
<div class='customclass'>
    <input type='checkbox' name='#dbtable_#fieldname[]' id='#dbtable_#fieldname_#fieldvalue' value='#fieldvalue' #checked>
    <label for='#dbtable_#fieldname_#fieldvalue'>#fieldlabel</label>
</div>
",              
"FIELDLIST"=>"SELECT volgorde,volgorde AS volgordeval FROM triosprojecten ORDER BY volgorde",
*OR* "FIELDLIST"=>'{"1":"TRImax 1","2":"TRImax 2","3":"TRImax 3","9":"maatwerk"}',

submit

"HTML"=>"
<div class='customclass'>
    <input type='submit' value='#fieldvalue' class='special' />
</div>
",