Home
Accueil
Downloads
Téléchargements
Forums
Forums
Your Account
Votre compte
Menu
· Accueil ·

· Communication ·
  · Forums
  · Messages privés
  · Contactez nous
  · Recommendez nous
  · Sondages
  · Les projets

· Nouvelles ·Stats
  · Sujets
  · Ecrire un article
  · Articles archivés
  · Articles RSS
  · Lettre de sécurité
  · Archive de lettres

· Téléchargements ·
  · Accueil
  · Nouveautés
  · Mises à jour
  · Thêmes

· Outils ·
  · Outils divers
  · Convertisseur de temps
  · Table de caractères
  · Générateur de boutons
  · Compresseur Javascript

· Documentation ·
  · Wiki
  · Questions/Réponses
  · Documents
  · Manuel PHP-Nuke
  · Manuel PHP
  · Manuel PEAR
  · Encyclopédies

· Liens ·
  · Nos liens
  · Nos fluxs RSS
  · Partenaires
  · Votre publicité
  · Sitemap
  · Mes bannières

· Infos ·
  · Rechercher
  · Votre compte
  · Liste des membres
  · Carte des membres
  · Top

· Divers ·
  · Météo
  · Galeries
  · Statistiques Phpnuke
  · MS Analysis


Introduction - Résultats

Introduction - Résultats

Introduction - Résultats --  Obetnir des données depuis une requêtes de résultats

Description

Sélectionner le format de la rangée traitée

Les données d'une ligne issu du résultat d'une requête peuvent être placées dans l'un de ces trois constructeurs : un tableau trié (avec les numéros des colonnes comme clés), un tableau associatif (avec les noms des colonnes comme clés) ou un objet (avec les noms des colonnes comme propriétés).

DB_FETCHMODE_ORDERED (défaut)
Array
(
    [0] => 28
    [1] => hi
)

DB_FETCHMODE_ASSOC
Array
(
    [a] => 28
    [b] => hi
)

DB_FETCHMODE_OBJECT
stdClass Object
(
    [a] => 28
    [b] => hi
)

NOTE : Lorsqu'une requête contient plus d'une colonne du même nom (comme lorsque vous faîtes une jointure entre plusieurs tables qui possèdent des noms de colonnes portant le même nom) et que le mode est DB_FETCHMODE_ASSOC ou DB_FETCHMODE_OBJECT, les données de la dernière colonne portant le même nom seront les seules retournées. Il y a deux options pour contourner ce problème :

Utilisez des alias dans votre requêtes, par exemple People.Name AS PersonName
Changez le mode en DB_FETCHMODE_ORDERED

ASTUCE : Si vous êtes dans ce cas, c'est que votre schéma de base de données n'est pas bien pensé. Soit les données sont inutilement dupliquées, soit le même nom est utilisé pour des données différentes.

Récupérer les résultats par numéro

Le système de traitement de PEAR DB supporte également un paramètre supplémentaire à la fonction de traitement. Vous pouvez ainsi récupérer les résultats par numéro. C'est particulièrelent pratique si vous souhaitez montrer l'ensemble du résultat (par exemple pour construire des listes HTML sur plusieurs pages) ou pour traiter les rangées dans un ordre spécial, etc.

Récupération de la totalité du jeu de résultats

L'objet DB_common fournit plusieurs méthodes pour récupérer les données facilement en combinant ce que vous avez défini comme mode pour le traitement de vos requêtes, en mettant les données retournées dans une structure de données PHP et en libérant de la mémoire les résultats. Ces méthodes incluent getOne(), getRow(), getCol(), getAssoc() et getAll().

Libérer le résultat

Une fois que vous avez terminé d'utiliser le jeu de résultats, si votre script continue son exécution, cela peut être une bonne idée de libérer la mémoire allouée à ce jeu de résultats en utilisant la fonction free().

Obtenir plus d'informations du résultat d'une requête

Avec DB, il y a quatre manières de récupérer des informations intéressantes des jeux de résultats :

Exemple 33-6. numRows() retourne le nombre de lignes disponibles dans le jeu de résultats issu d'une requête SELECT

<?php
// Une fois que vous avez un objet DB valide nomm&eacute; $db
$res =& $db->query('SELECT * FROM phptest');
echo $res->numRows();
?>

Exemple 33-7. numCols()retourne le nombre de colonnes disponibles dans le jeu de résultats issu d'une requêteSELECT

<?php
// Une fois que vous avez un objet DB valide nomm&eacute; $db
$res =& $db->query('SELECT * FROM phptest');
echo $res->numCols();
?>

Exemple 33-8. affectedRows() retourne le nombres de lignes affectées par une requête du type INSERT, UPDATE ou DELETE

<?php
// Souvenez-vous que cette requ&ecirc;te
// ne retourne pas d'objet de r&eacute;sultats
$db->query('DELETE * FROM clients');
echo 'I have deleted ' . $db->affectedRows() . ' clients';
?>

Exemple 33-9. tableInfo() retourne un tableau associatif contenant des informations sur les colonnes issues d'un résultat de requête du type SELECT

<?php
// Une fois que vous avez un objet DB valide nomm&eacute; $db
$res =& $db->query('SELECT * FROM phptest');

// Syntaxe valide pour DB < 1.6.0
print_r($db->tableInfo($res));

// Syntaxe valide pour DB => 1.6.0
print_r($res->tableInfo());
?>

Vérification des erreurs

N'oubliez pas d'utiliser isError() pour vérifier si vos traitements retournent ou pas un objet DB_Error.


Manuel PEAR pour PHP-Nuke © www.stefvar.com
Syndiquez notre contenu RSS, Atom, etc..
PHP-Nuke © 2007Reproduction interdite sans autorisation de ma part www.stefvar.com Copyright © 2008Thème iCGstation
Site français de la communauté PragmaMx