Exploiter pleinement la puissance du nouveau layer MySQL ( plus rapide - plus secure )
Un article de Wiki Maximus CMS.
Le nouveau layer SQL de Maximus 2008 est extrêmement simple de compréhension, rapide à souhait, le tout doté d'une sécurité jamais atteinte.
Sur les versions précédentes de Maximus il fallait vider les ressources après usage, mais avec Maximus 2008 cette étape se réalise automatiquement, de plus une simple requête pourvait demander à son développeur entre 2 à 5 lignes de code, maintenant une seule suffira :)
Voici quelques exemples vous permettant de commencer à développer vos propres requêtes SQL facilement.
[edit]
Faire un UPDATE d'une table SQL
- exemple: simuler une désinstallation d'un module
$GLOBALS['db']->query("UPDATE `".TABLE_MODULES."` SET `active`='0',
`install`='0' WHERE `title`='AvantGo' ");
[edit]
Faire un DELETE d'une table SQL
- exemple, supprimer tout le contenu de la table sessions
$GLOBALS['db']->query("DELETE FROM `".TABLE_SESSION."` ");
- exemple, ne supprimer que les sessions des visiteurs
$GLOBALS['db']->query("DELETE FROM `".TABLE_SESSION."` WHERE `guest`='1' ");
[edit]
Extraire des données sous forme d'objets d'une table avec un ID
- exemple: extraire l'adresse email du l'utilisateur ID 1, nous génèrerons ici un objet que nous nommerons users, facilitant ainsi la lecture sur le reste du code
$users = $GLOBALS['db']->get_object("SELECT `user_email` FROM `".TABLE_USERS."` WHERE `id`='1' ");
$users->user_email = secure( $users->user_email, 'strip', 'clean');
echo 'email: '. $users->user_email ;
[edit]
Extraire des données sous forme de tableau array d'une table avec un ID
- exemple: extraire l'adresse email du l'utilisateur ID 1, nous génèrerons ici un tableau ( array ) que nous nommerons users, moins facile de compréhension lors de long script
$users = $GLOBALS['db']->get_row("SELECT `user_email` FROM `".TABLE_USERS."` WHERE `id`='1' ");
$users['user_email'] = secure( $users['user_email'], 'strip', 'clean');
echo 'email: '. $users['user_email'] ;
[edit]
Extraire un tableau objet d'une table avec une limitation
- exemple: afficher les catégorie de la FAQ sous forme objet
// on requête un tableau OBJET
$sql = $GLOBALS['db']->get_list_object("SELECT `id_cat`, `categories` FROM
`".TABLE_FAQCATEGORIES."` WHERE `flanguage`='$currentlang'");
// on présente l'affichage
echo '<div id="faq_home_categorie_detail"><ul class="circle">';
// on boucle sur le tableau objet
foreach ( $sql as $row ) {
// on sécurise ses variables
$row->id_cat = secure( $row->id_cat, 'num');
$row->categories = secure( $row->categories, 'strip', 'clean');
// on affiche le résultat
echo "<li><a href=\"".MAXURL."".MODULE_NAME."&op=detailsfaq&id_cat=".$row->id_cat."\">
".$row->categories."</a></li>";
// on ferme la boucle
}
// on ferme les ''div'' et ul de présentation
echo '</ul></div>';
[edit]
Extraire un tableau array d'une table avec une limitation
- exemple: afficher les catégorie de la FAQ sous forme de tableau array
// on requête un tableau ARRAY
$sql = $GLOBALS['db']->get_list_row("SELECT `id_cat`, `categories` FROM
`".TABLE_FAQCATEGORIES."` WHERE `flanguage`='$currentlang'");
// on présente l'affichage
echo '<div id="faq_home_categorie_detail"><ul class="circle">';
// on boucle sur le tableau array
foreach ( $sql as $row ) {
// on sécurise ses variables
$row['id_cat'] = secure( $row['id_cat'], 'num');
$row['categories'] = secure( $row['categories'], 'strip', 'clean');
// on affiche le résultat
echo "<li><a href=\"".MAXURL."".MODULE_NAME."&op=detailsfaq&id_cat=".$row['id_cat']."\">
".$row['categories']."</a></li>";
// on ferme la boucle
}
// on ferme les ''div'' et ul de présentation
echo '</ul></div>';
[edit]
Compter le nombre de lignes d'une table SQL
- exemple simple, comment afficher le nombre de modules existants en base
$num = $GLOBALS['db']->get_num("SELECT `mid` FROM `".TABLE_MODULES."` ");
echo $num .' modules';
- autre exemple en ne comptant que les modules installés
$num = $GLOBALS['db']->get_num("SELECT `mid` FROM `".TABLE_MODULES."` WHERE `install`='1' ");
echo $num .' modules';
Cyril 26 sep 2008 à 13:58 (CEST)

