TRImax documentatie

voor developers


Airtable

Airtable is een database in The Cloud. Alle functies voor het aanmaken van tabellen en het beheer van de gegevens in die tabellen, worden door Airtable aan de eindgebruiker aangeboden. Airtable staat volledig los van TRImax maar via een API kunnen de gegevens in een website met TRImax gebruikt worden.

syncen

Het duurt enkele seconden om de gegevens van een tabel in Airtable via de API door te sturen naar de website. Daarom is er in de Admin per Airtable een sync-functie voorzien. Nadat er wijzingen aangebracht zijn aan een Airtable, moet de tabel gesynced worden met de website. De sync zorgt ervoor dat alle gegevens van de tabel éénmalig getransfereerd worden en bewaard worden in de map ./data in JSON-formaat.

config

Om de JSON-bestanden te beschermen tegen ongeoorloofd gebruik, worden de filenames met een token van 16 characters aangemaakt. Deze token wordt door de developer zelf gedefinieerd.

 $config["airtable"]["=FILETOKEN="]="2a5d19a48580b74d";

De API-gegevens worden gedefinieerd met twee regels per tabel:

  • algemene API-key voor toegang tot Airtable
  • database API-key voor de database

voorbeeld

$config["airtable"]["autos"]["apikey"]='keyXXXXXXXX';
$config["airtable"]["autos"]["base"]='appYYYYY';

ophalen ( SELECT )

Gegevens worden niet met SQL-statements opgehaald, maar met TRImax-functies. Om te sorteren en te filteren, worden array-functies gebruikt.

$arrresult=$T->base("autos");

filteren ( WHERE )

één enkele kolom gelijk aan een waarde

Dit is de meest voorkomende filter, bijvoorbeeld om een detailscherm te bekijken na selectie van 1 rij uit een tabel via een ID, door toevoeging van een array met de key en de waarde. Dit geldt enkel voor een is gelijk aan filter.

 $arrresult=$T->base("autos",array("id"=>$urlid));

met meerdere argumenten en andere operatoren ( kleiner, groter, niet gelijk )

voorbeeld met filter op één kolom die gelijk is aan vaste waarde

$arrall=$T->base("autos");
$arrresult = array_filter( $arrresult, function( $v ) { return $v['merk'] == "BMW"; } );  

Dit kan eenvoudiger als volgt:  
$arrresult=$T->base("autos",array("merk"=>"BMW"));

voorbeeld met filter op één kolom die groter is dan een variabele waarde

$arrall=$T->base("autos");
$bouwjaar=2010;
$arrresult = array_filter( $arrresult, function( $v ) use ($bouwjaar) { return $v['bouwjaar'] > $bouwjaar; } );

voorbeeld met filter op meerdere kolommen en verschillende operatoren met variabele waarden

$arrall=$T->base("autos");
$merk="BMW";
$bouwjaar=2010;
$arrresult = array_filter( $arrresult, function( $v ) use ($merk,$bouwjaar) { return $v['merk'] == $merk && $v['bouwjaar']>=$bouwjaar; } );

sorteren ( ORDER BY )

voorbeeld sortering op één kolom

$merk=array();
foreach ($arrresult as $key => $row)  
{
    $merk[$key]  = $row['merk'];  
}  
array_multisort($merk, SORT_ASC, $arrresult);

voorbeeld sortering volgens verkocht (0/1) en dan volgens spotlight (0/1) :: de niet verkochte eerst ( SORT_ASC ) en als tweede sortering dan de spotlights eerst ( SORT_DESC )

foreach ($arrresult as $key => $row)  
{
    $verkocht[$key]  = $row['verkocht'];  
    $spotlight[$key] = $row['spotlight'];  
}  
array_multisort($verkocht, SORT_ASC, $spotlight, SORT_DESC, $arrresult);

unieke waarden opvragen (DISTINCT)

$arrall=$T->base("autos",array("zichtbaar"=>1));
$arrmerk1 = array_column($arrall, 'merk','id');
$arrmerk = array_unique($arrmerk1);

# sorteren in alfabetische volgorde
foreach ($arrmerk as $key => $row)  
{
    $merk[$key]  = $row;  
}  
array_multisort($merk, SORT_ASC, $arrmerk);

integratie in Google Drive

zie documentatie van Airtable