logo

Types de blocs supplémentaires (EBT) – Nouvelle expérience de Layout Builder❗

Types de blocs supplémentaires (EBT) – types de blocs stylisés et personnalisables : diaporamas, onglets, cartes, accordéons et bien d’autres. Paramètres intégrés pour l’arrière-plan, la boîte DOM, les plugins JavaScript. Découvrez dès aujourd’hui le futur de la création de mises en page.

Démo des modules EBT Télécharger les modules EBT

❗Types de paragraphes supplémentaires (EPT) – Nouvelle expérience Paragraphes

Types de paragraphes supplémentaires (EPT) – ensemble de modules basé sur les paragraphes analogiques.

Démo des modules EPT Télécharger les modules EPT

Défilement

Travail avec la base de données dans Drupal 7 - leçon 7 - Traitement des résultats de requête (fetch)

06/07/2025, by Ivan

Une requête de sélection retournera toujours un résultat contenant zéro ou plusieurs enregistrements. Il existe plusieurs façons de traiter les données du résultat que vous pouvez utiliser selon vos besoins.

Le plus souvent, les résultats sont utilisés dans une boucle foreach().

<?php
$result = db_query("SELECT nid, title FROM {node}");
foreach ($result as $record) {
  // faire quelque chose avec chaque $record
  $node = node_load($record->nid);
}
?>

Selon ce que vous devez faire avec le résultat, vous pouvez utiliser d'autres méthodes de traitement des enregistrements. Pour un traitement explicite des enregistrements suivants, utilisez :

<?php
$record = $result->fetch();            // Utilise le traitement par défaut (objet).
$record = $result->fetchObject();    // Traité comme un objet.
$record = $result->fetchAssoc();     // Traité comme un tableau associatif.
?>

Si aucun enregistrement ne reste, FALSE sera retourné. Il est préférable d’utiliser fetchObject() ou fetchAssoc() plutôt que fetch(), car cela explique plus clairement comment les enregistrements seront traités. Vous pouvez aussi changer la manière dont fetch() traite une ligne par défaut. Pour récupérer une seule valeur, utilisez :

<?php
$record = $result->fetchField($column_index);
?>

La valeur par défaut de $column_index est 0. Pour compter le nombre de lignes dans le résultat, utilisez :

<?php
$number_of_rows = $result->rowCount();
?>

Pour récupérer tous les enregistrements sous forme de tableau, utilisez :

<?php
// Renvoie le résultat sous forme de tableau associatif d'objets.
$result->fetchAll();

// Renvoie le résultat sous forme de tableau associatif avec la clé du nom du champ et la valeur correspondante.
$result->fetchAllAssoc($field);

// Renvoie la deuxième colonne sous forme de tableau associatif : champ 1 => champ 2
$result->fetchAllKeyed();
$result->fetchAllKeyed(0,2); // tableau avec champ 0 => champ 2
$result->fetchAllKeyed(1,0); // tableau avec champ 1 => champ 0

// Renvoie une seule colonne sous forme de tableau.
$result->fetchCol();

// Compte le nombre d’enregistrements pour la colonne par défaut (0 par défaut)
$result->fetchCol($column_index);
?>

Notez que fetchAll() et fetchAllAssoc() utiliseront par défaut le mode fetch configuré. Cela peut être défini en passant une nouvelle constante de mode fetch. Pour fetchAll(), c’est le premier paramètre. Pour fetchAllAssoc(), c’est le deuxième paramètre.

Comme PHP supporte le chaînage de méthodes pour les objets retournés, cela permet d'omettre la variable $result :

<?php
// Obtenir un tableau associatif nid => title
$nodes = db_query("SELECT nid, title FROM {node}")->fetchAllKeyed();

// Obtenir un enregistrement unique depuis la base
$node = db_query("SELECT * FROM {node} WHERE nid = :nid", array(':nid' => $nid))->fetchObject();

// Obtenir une valeur unique depuis la base
$title = db_query("SELECT title FROM {node} WHERE nid = :nid", array(':nid' => $nid))->fetchField();
?>