Forum CMS Made Simple FR
Effectuer une requête vers la base de données - Version imprimable

+- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr)
+-- Forum : Ressources (https://forum.cmsmadesimple.fr/forum-4.html)
+--- Forum : Développement et Astuces (https://forum.cmsmadesimple.fr/forum-15.html)
+--- Sujet : Effectuer une requête vers la base de données (/thread-9.html)



Effectuer une requête vers la base de données - Jean le Chauve - 26/01/2009

créer une balise utilisateur (extension=>balise Utilisateur)
Code :
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 :
Code :
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.types.string.syntax.heredoc.php
Et pour un INSERT :
Code :
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


Effectuer une requête vers la base de données - GnollAbatte - 27/01/2009

Enfin Smile

Merci beaucoup pour tes recherches !


Effectuer une requête vers la base de données - boby - 23/02/2009

Merci Jean!!!
Par manque de temps j'ai laissé tombé smarty pour l'instant ainsi que formbuilder. C'est remis à plus tard.
Je garde ton message précieusement
Salut


Effectuer une requête vers la base de données - Jean le Chauve - 24/03/2009

Plus difficile : vous devez afficher des adresses email dans votre tableau et voudriez utiliser {mailto address='adresse@hebergeur' 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
Code :
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>";



Effectuer une requête vers la base de données - boby - 27/03/2009

Salut Jean!

Du coup je me remet un peu au smarty. Le code que tu as passé marche très bien.
J'ai une base de données externe qui grossit et je ne préfère pas la mélanger avec la base de cmsms. Comme j'expérimente c'est mieux comme ça.
Comment je peux me connecter à une autre bdd avec smarty?
merci


Effectuer une requête vers la base de données - JMPotiquet - 27/03/2009

Bonjour,

Il y a plusieurs méthodes pour accéder à une autre base de données que celle de cms ms.

Je peux t'indiquer celle que j'ai utilisée avec la création d'une balise utilisateur comportant le code php suivant :

ouverture de la base de données externe :

$dbhost="xxxxxt";
$dblogin="yyyy";
$dbpassword="zzzz";
$dbname="aaaaa";
$connect_mysql = mysql_connect($dbhost,$dblogin,$dbpassword);
if(!$connect_mysql) die("Impossible de se connecter à MySQL");
mysql_select_db($dbname) or die( "Impossible d'ouvrir $dbname : ".mysql_error() );

Ensuite ton code de manipulation de ta base et tes traitements.

et pour finir la fermeture de ta base et la reconnexion à celle de cms ms :

mysql_close($connect_mysql);

$dbhost="bbbbb";
$dblogin="ccccct";
$dbpassword="dddd";
$dbname="eeee";
$connect_mysql = mysql_connect($dbhost,$dblogin,$dbpassword);
if(!$connect_mysql) die("Impossible de se connecter à MySQL");
mysql_select_db($dbname) or die( "Impossible d'ouvrir $dbname : ".mysql_error() );

Ne pas oublier de réouvrir la base cms ms, car sinon cms ms est bloqué pour les accès suivants.

Cordialement

Jean-Michel Potiquet


Effectuer une requête vers la base de données - boby - 28/03/2009

J'arrive à me connecter à ma bdd externe mais je n'arrive pas à reproduire le 1er tableau plus haut de Jean le Chauve.

Y a t il quelque chose à changer dans les 2 lignes suivantes?

Code :
global $gCms;
$db = &$gCms->GetDb();
Les bdd externes n'aurons bientôt plus de secrets. Merci à Jean et Jean-Michel.

Boby


Effectuer une requête vers la base de données - Jean le Chauve - 28/03/2009

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


Effectuer une requête vers la base de données - athena_pallas - 07/04/2010

Bonjour,
Existe-t-il une liste des objets, classes et méthodes du cms ?
Merci et bonne journée.


Effectuer une requête vers la base de données - jce76350 - 07/04/2010

re,

Il y a tout ça sur le wiki http://wiki.cmsmadesimple.org/index.php/Main_Page
et en particulier
http://www.cmsmadesimple.org/apidoc/


Effectuer une requête vers la base de données - athena_pallas - 07/04/2010

Magnifique ! Un grand merci.