Si vous débutez avec prestashop, vous ne connaissez peut-être pas les fonctions intégrés pour effectuer des requêtes sur votre base de données. Je vais vous expliquer comment réaliser ces requêtes simplement à l’aide de la classe « Db ».
Il existe plusieurs fonctions utiles dans la classe « Db » :
- getInstance()->Execute() : Récupère une seule ligne de valeur
- getInstance()->ExecuteS() : Récupère plusieurs lignes sous forme de tableau
- getInstance()->getValue() : Récupère une seule et unique valeur
_DB_PREFIX_ est une variable contenant le préfixe des tables dans la base de données (configuré à l’installation).
Récupérer une valeur dans la base de données
result = Db::getInstance()->getValue('
SELECT macolonne
FROM `'._DB_PREFIX_.'matable`
WHERE `id` = 1');
echo 'Result for id 1 : '.$result;
Ici nous récupérons la valeur de « macolonne » ayant pour identifiant : 1 dans « matable »
Récupérer une seule ligne de valeur dans la base de données
$result = Db::getInstance()->Execute('
SELECT *
FROM `'._DB_PREFIX_.'matable`
WHERE `id` = 1');
$result = mysql_fetch_array($result);
echo 'Result for id : '.$result['id'];
Ici nous récupérons la ligne de « matable » ayant pour identifiant : 1
Récupérer plusieurs lignes de valeurs dans la base de données :
$results = Db::getInstance()->ExecuteS('
SELECT *
FROM `'._DB_PREFIX_.'matable`');
foreach ( $results as $f )
echo 'Valeur: '.$f['macolonne'];
Ici nous listons les valeurs de « macolonne » présentes dans « matable ».
Attention : Il n’est pas recommandé d’effectuer des requêtes autre part que dans les classes, cependant cela s’avère parfois nécessaire. Si vous pouvez utiliser les classes pour récupérer des valeurs, faites le !
Bonjour,
pour le 2ème exemple il est plus juste d’utiliser getRow au lieu de Execute (réservé aux requêtes en écritures : http://www.prestashop.com/blog/fr/les-bonnes-pratiques-de-la-classe-db-sur-prestashop-1-5/), et vous avez oubliez de supprimer la ligne $result = mysql_fetch_array($result);
Bonjour
Merci pour vos remarques.