Module la bdd

De Cms Made Simple France
Aller à : navigation, rechercher

Faire des requêtes SQL via un module

Bien plus puissant que les UDT, les modules sont évidement les premiers à nécessiter un accès à la base de donnée, opération facilitée dans un module puisque vous bénéficiez de toute l'API de cmsmadesimple, y compris le code de connexion à votre base de donnée.

//Je récupère le connecteur de la bdd
$db = cmsms()->GetDb();

// on crée la requête SQL, en s'assurant de se libérer du préfixe cms_ qui peut différer d'une installation à une autre
$sql = 'SELECT nom,prenom,email FROM '.cms_db_prefix().'`module_monmodule_user` ORDER BY `nom`';

//exécution de la requête et on test le code retour
$dbretour = $db->Execute($sql);

if($dbretour === FALSE)
{  die('Erreur SQL !<br>'.$sql.'<br>'.mysql_error()); }

A ce niveau on récupère toutes les données dans $dbretour. Reste maintenant à l'exploiter.

echo "<table>";
while ($row = $dbretour->FetchRow()) {
  echo <<<REQUETE
   <tr>
   <td>{$row['nom']}</td>
   <td>{$row['prenom']}</td>
   <td>{$row['email']}</td>
   </tr>
REQUETE;
}
echo "</table>";

Finit.

Pour ceux qui se posent la question : le <<<REQUETE et le REQUETE; sont une utilisation de ce qu'on appel en php [la syntaxe heredoc]

Et avec un paramètre ?

Comme dans tous les modules, on peut appeler les pages avec des paramètres.

Exemple {mon_module action='monAction' prenom="Jean"} qui est récupérable dans la page du module "monAction" sous la forme

$prenom = params['prenom'];

On peut donc utiliser ce paramètre pour améliorer les requêtes de notre exercice.


changer ces quelques lignes :

// on crée la requête SQL, en s'assurant de se libérer du préfixe cms_ qui peut différer d'une installation à une autre
$sql = 'SELECT nom,prenom,email FROM '.cms_db_prefix().'`module_monmodule_user` WHERE prenom = ? ORDER BY `nom`';

//Liste des paramètres (array)
$parametreSql = array();
$parametreSql[] = $params['prenom'];

//exécution de la requête et on test le code retour
$dbretour = $db->Execute($sql, $parametreSql);

Notez l'utilisation d'un point d'interrogation, c'est plus sécurisé que de faire Where prenom = '.$param["prenom"].'

Déjà finit...

Voilà pour cette partie, vous savez maintenant comment faire vos requêtes sur la base de donnée.

Retourner sur la liste des tutoriaux

(Complément) Utiliser un ORM

Sans rentrer dans la définition d'un ORM, sachez que Bess à réalisé un ORM simplifié disponible sur la forge afin de réduire le nombre de requêtes SQL dans votre code. Plus d'info sur la page Github du produit