Forum CMS Made Simple Francophone

Aide francophone sur CMS Made Simple

Vous n'êtes pas identifié(e).

Annonce

ATTENTION

  • Prenez le temps de rechercher si quelqu'un n'a pas déjà proposé une solution à votre problème. Sur le forum français et sur le wiki
  • Pensez à mettre à jour votre version de CMS Made Simple. Nous ne faisons de support que sur LA dernière version de CMS Made Simple.
  • Renseignez impérativement le formulaire de nouveau message de manière la plus complète que possible. Dans votre CMS utiliser le menu Administration du site/Informations du système en haut Vue au format texte. Ces informations demandées nous permettent de mieux vous aider
  • Ajoutez [Résolu] au début du titre de votre 1er message lorsqu'une solution a été trouvée.

#1 26/01/2009 19:38:27

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 687
Site Web

Effectuer une requête vers la base de données

créer une balise utilisateur (extension=>balise Utilisateur)

echo '<table>
<caption>test BD</caption>';
echo '<thead><tr>';
echo "<th>content id</th>";
echo "<th>alias</th>";
echo "</tr></thead>";
global $gCms; //pour pouvoir travailler avec les objets, classes et méthodes du cms
$db = &$gCms->GetDb(); //connection à la bd cms
$query = "SELECT * FROM cms_content WHERE content_id >1 AND type = 'content' ORDER BY parent_id ";
$dbresult = &$db->Execute($query);//exécution de la requête
    while ($dbresult && !$dbresult->EOF)
    {
$resultChamps1 = $dbresult->fields['content_name'];
$resultChamps2 = $dbresult->fields['content_alias'];
echo <<<REQUETE
<tr>
<td>{$resultChamps1}</td>
<td>{$resultChamps2}</td>
</tr>
REQUETE;
    $dbresult->MoveNext();//enregistrement suivant
}//tous les enregistrements sont dans des tableaux
if ($dbresult) $dbresult->Close();//on ferme la connection
echo "</table>";

Si vous avez nommé cette balise "select", vous n'avez plus qu'à insérer {select} dans la page où vous désirez voir apparaître le tableau avec le résultat.
Cela devrait vous donner un tableau avec le nom de chacun de vos content ainsi que l'alias de page correspondant.
Vous n'avez plus qu'à modifier votre requête pour qu'elle corresponde à vos désirs.
Note :

echo <<<REQUETE
<tr>
<td>{$resultChamps1}</td>
<td>{$resultChamps2}</td>
</tr>
REQUETE;

c'est la syntaxe heredoc, très pratique pour ne pas s'ennuyer avec les apostrophes et raccourcir le code. Voir http://www.manuelphp.com/php/language.t … eredoc.php
Et pour un INSERT :

global $gCms;
$db = &$gCms->GetDb();
$query = "INSERT INTO nomTable (champs1, champs2, ...) VALUES ('$variable1', 'variable2')";
$db->Execute($query);

Vous pouvez bien sûr utiliser une autre table que cms_content, il est d'ailleurs très pratique d'ajouter vos tables perso dans la bd de cms. Vous n'aurez ainsi jamais besoin de vous demander comment vous y connecter.
Have fun smile

Dernière modification par Jean le Chauve (15/05/2009 08:55:03)

Hors ligne

#2 24/03/2009 20:25:04

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 687
Site Web

Re : Effectuer une requête vers la base de données

Plus difficile : vous devez afficher des adresses email dans votre tableau et voudriez utiliser {mailto address='[email protected]' encode='javascript' subject='Bonjour'}.
Pas de chance, la tag utilisateur vous renvoie une erreur.
Comme la documentation l'indique : Comment exécuter une balise Smarty à partir d'une balise personnalisée

echo "<table>";
echo "<thead><tr><th>email</th></tr></thead>";
global $gCms;
$db = &$gCms->GetDb();
$query = "SELECT email FROM maTable ";
$dbresult = &$db->Execute($query);
    while ($dbresult && !$dbresult->EOF)
    {
       $email = $dbresult->fields['email'];
       if ($email !='') 
       {
           $smarty = &$gCms->GetSmarty(); 
           $smarty_data = "{mailto address='$email' encode='javascript' subject='Bonjour'}";   
           $smarty->_compile_source('temporary template', $smarty_data, $_compiled );
           @ob_start();
           $smarty->_eval('?>' . $_compiled);
           $_contents = @ob_get_contents();
           @ob_end_clean();
           echo "<td>".$_contents."</td></tr>";
        }
        else {
           echo "<td></td></tr>";
        }
        $dbresult->MoveNext();
    }
   if ($dbresult) $dbresult->Close();
   echo "</table>";

Hors ligne

#3 28/03/2009 09:08:18

Jean le Chauve
Sa Seigneurie le Chauve, Comte du domaine .be
Lieu : Bruxelles
Inscription : 13/12/2007
Messages : 4 687
Site Web

Re : Effectuer une requête vers la base de données

Merci d'ouvrir un nouveau post. Celui-ci était sensé servir de tuto.

Hors ligne

#4 07/04/2010 14:23:25

jce76350
Administrateur
Lieu : Rouen
Inscription : 23/09/2007
Messages : 6 086
Site Web

Re : Effectuer une requête vers la base de données


J-C Etiemble Tutoriels v 2.2.x

Hors ligne

Pied de page des forums