Effectuer des requêtes dans un plugin/module TYPO3

Posté le 23-09-2009

Un petit rappel sur la manipulation des requêtes au sein de TYPO3 (une question qui revient souvent sur les forums ou en formation). Pour cela, vous devez utiliser l’objet $GLOBALS['TYPO3_DB'] qui est une instanciation de la connexion à la base. Voici les fonctions qui vous permettrons de manipuler facilement les tables.


Requête de type SELECTquery

$GLOBALS['TYPO3_DB']->exec_SELECTquery($select_fields, $from_table, $where_clause, $groupBy='', $orderBy='', $limit='');

Qui a pour paramètres :

Elle s’utilise de la manière suivante :

...
$res = $GLOBALS['TYPO3_DB']->exec_SELECTquery('*', 'tt_news', '');
while ($row = $GLOBALS['TYPO3_DB']->sql_fetch_assoc($res)) {
// Traitement de l'enregistrement $row
}
// On dégage la connexion
$GLOBALS['TYPO3_DB']->sql_free_result($res);
...

Requête de type SELECTgetRows

La différence avec « exec_SELECTquery » est que cette fonction renvoie directement un tableau de données.

$GLOBALS['TYPO3_DB']->exec_SELECTgetRows($select_fields, $from_table, $where_clause, $groupBy='', $orderBy='', $limit='', $uidIndexField=''); 

Qui a pour paramètres :

Elle s’utilise de la manière suivante :

...
$datasArray = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows ('*', 'tt_news', '');
...

Requête de type INSERT

$GLOBALS['TYPO3_DB']->exec_INSERTquery($table, $fields_values, $no_quote_fields=FALSE); 

Qui a pour paramètres :

Elle s’utilise de la manière suivante :

...
$insertArray = array(
    "hidden" => 1,
    "title" => 'test',
    "tstamp" => time()
);
$GLOBALS['TYPO3_DB']->exec_INSERTquery('tt_news', $insertArray);
...

Requête de type UPDATE

$GLOBALS['TYPO3_DB']->exec_UPDATEquery($table, $where, $fields_values, $no_quote_fields=FALSE); 

Qui a pour paramètres :

Elle s’utilise de la manière suivante :

...
$updateArray = array(
    "hidden" => 1,
    "title" => 'test',
    "tstamp" => time()
);
$GLOBALS['TYPO3_DB']->exec_UPDATEquery('tt_news', $this->fullQuoteStr('uid=3','tt_news'), $updateArray);
...

Requête de type DELETE

$GLOBALS['TYPO3_DB']->exec_DELETEquery($table, $where);

Qui a pour paramètres :

Elle s’utilise de la manière suivante :

...
$GLOBALS['TYPO3_DB']->exec_DELETEquery('tt_news', $this->fullQuoteStr('uid=3','tt_news'));
...

Utilisation de enableFields() pour les requêtes de type SELECT

La fonction enableFields() vous permet de générer un WHERE pour votre requête en accord avec le framework TYPO3 (enregistrement non caché, non supprimé, supérieur à date de début…). Cela permet de générer une chaine du type : « AND hidden=0 AND deleted=0 AND starttime < 123345567...".

tslib_cObj.enableFields($table, $show_hidden=0);         

Elle s’utilise de la manière suivante :

...
$datasArray = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows ('*', 'tt_news', '1=1 '.$this->cObj->enableFields('tt_news'));
...

comments powered by Disqus