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 à pour paramètres :

  • $select_fields – string – List of fields to select from the table. This is what comes right after « SELECT … ».
  • $from_table – string – Table(s) from which to select. This is what comes right after « FROM … ». Required value.
  • $where_clause – string - Optional additional WHERE clauses put in the end of the query. NOTICE: You must escape values in this argument with $this->fullQuoteStr() yourself! DO NOT PUT IN GROUP BY, ORDER BY or LIMIT!
  • $groupBy – string – Optional GROUP BY field(s), if none, supply blank string.
  • $orderBy – string – Optional ORDER BY field(s), if none, supply blank string.
  • $limit – string – Optional LIMIT value ([begin,]max), if none, supply blank string.
  • Returns : pointer MySQL result pointer / DBAL object


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 à pour paramètres :

  • $select_fields – string – See exec_SELECTquery()
  • $from_table – string – See exec_SELECTquery()
  • $where_clause – string – See exec_SELECTquery()
  • $groupBy – string – See exec_SELECTquery()
  • $orderBy – string – See exec_SELECTquery()
  • $limit – string – See exec_SELECTquery()
  • $uidIndexField – string – If set, the result array will carry this field names value as index. Requires that field to be selected of course!
  • Returns : array Array of rows


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 à pour paramètres :

  • $table – string – Table name
  • $fields_values – array – Field values as key=>value pairs. Values will be escaped internally. Typically you would fill an array like « $insertFields » with ‘fieldname’=>’value’ and pass it to this function as argument
  • $no_quote_fields – string/array – See fullQuoteArray()
  • Returns : pointer MySQL result pointer / DBAL object


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 à pour paramètres :

  • $table – string – Table name
  • $where – string – WHERE clause, eg. « uid=1″. NOTICE: You must escape values in this argument with $this->fullQuoteStr() yourself!
  • $fields_values – array – Field values as key=>value pairs. Values will be escaped internally. Typically you would fill an array like « $insertFields » with ‘fieldname’=>’value’ and pass it to this function as argument
  • $no_quote_fields – string/array – See fullQuoteArray()
  • Returns : pointer MySQL result pointer / DBAL object


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 à pour paramètres :

  • $table – string – Table name
  • $where – string – WHERE clause, eg. « uid=1″. NOTICE: You must escape values in this argument with $this->fullQuoteStr() yourself!
  • Returns : pointer MySQL result pointer / DBAL object


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

Partager sur :
  • Print
  • Digg
  • del.icio.us
  • Facebook
  • Google Bookmarks
  • Twitter

Article(s) sur le même sujet :

  1. Changer le titre de la page dans un plugin
  2. Générer le rendu d’un contenu en TS et dans un plugin en TYPO3
  3. Utiliser Fluid dans un plugin tslib_pibase
  4. Embarquer une config realurl par défaut dans une extension TYPO3
  5. Ajouter un flexform à un plugin