De functie trouver_table()
(base_trouver_table_dist
) wordt gedeclareerd in ecrire/base/trouver_table.php en wordt gebruikt om de omschrijving van een SQL-tabel te verkrijgen. Het biedt een mechanisme om de lijst van kolommen, sleutels, gedeclareerde verbindingen en enkele andere informatiedetails op te halen.
Als overrule-bare functie wordt het gebruikt met charger_fonction:
$trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table($table, $serveur);
De parameters zijn:
-
$table
: de naam van de tabel (’spip_articles’ of ’articles’) -
$serveur
: optioneel de naam van de SQL connectie, die standaard dezelfde is als voor de SPIP installatie zelf.
De geretourneerde tabel $desc
heeft deze structuur:
array(
'field' => array('kolom' => 'omschrijving'),
'key' => array(
'PRIMARY KEY' => 'kolom',
'KEY name' => 'kolom' // of 'kolom1, kolom2'
),
'join' => array('kolom' => 'kolom'),
'table' => 'spip_tables'
'id_table' => $table,
'connexion' => 'naam_connectie',
'titre' => 'kolom_titel AS titre, kolom_taal AS lang'
);
- De sleutel
field
is een associatieve tabel met alle kolommen van de tabel en hun SQL beschrijvingen, -
key
is een andere tabel met de primaire en secundaire sleutels, -
join
vermeldt de kolommen van eventuele verbindingen, indien aangegeven in de beschrijvingen van de hoofd- of hulptabellen -
table
is de eigenlijke naam van de tabel (zonder prefix: als de prefix van de tabel verschilt van "spip", dan is het "spip_tables" dat wordt teruggegeven), -
id_table
is de gegeven$table
parameter, -
connexion
is de naam van het verbindingsbestand, indien verschillend van die van de installatie, -
titre
is een SQL SELECT-verklaring die aangeeft waar de kolomtitel is of waar de kolomtaal is (onder andere gebruikt om de URL’s te berekenen); bijvoorbeeld "titre, lang
", of "naam AS title, '' AS lang
".
Deze functie cachet het resultaat van de analyse om herhaalde verstorende toegang tot de SQL-server te voorkomen. Om een herberekening van deze cache te forceren, moet de functie worden aangeroepen met een lege string:
$trouver_table = charger_fonction('trouver_table', 'base');
$desc = $trouver_table('');
Opmerking: Wanneer een tabel wordt aangevraagd zonder het voorvoegsel "spip", wordt de naam van de tabel met het voorvoegsel dat aan de site is toegekend, teruggegeven (zolang de tabel in SPIP wordt gedeclareerd). Door een "spip_tables" tabel aan te vragen wordt gezocht naar het werkelijke bestaan van die tabel (de prefix wordt niet vervangen door de prefix die gebruikt wordt voor de site). In de toekomst zal waarschijnlijk een optie worden toegevoegd aan de trouver_table()
functie, aangezien er al een optie is voor sql_showtable om de prefix automatisch te kunnen wijzigen.