Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
26/01/2009, 19:38:27
(Modification du message : 15/05/2009, 08:55:03 par Jean le Chauve.)
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.ty...eredoc.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
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
26/01/2009, 19:38:27
(Modification du message : 15/05/2009, 08:55:03 par Jean le Chauve.)
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.ty...eredoc.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
Enfin
Merci beaucoup pour tes recherches !
Enfin
Merci beaucoup pour tes recherches !
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
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
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
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>";
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
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>";
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
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
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
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
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
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
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Merci d'ouvrir un nouveau post. Celui-ci était sensé servir de tuto.
Messages : 8,242
Sujets : 58
Inscription : Dec 2007
Réputation :
0
Merci d'ouvrir un nouveau post. Celui-ci était sensé servir de tuto.
athena_pallas
Unregistered
Bonjour,
Existe-t-il une liste des objets, classes et méthodes du cms ?
Merci et bonne journée.
athena_pallas
Unregistered
Bonjour,
Existe-t-il une liste des objets, classes et méthodes du cms ?
Merci et bonne journée.
Messages : 11,007
Sujets : 230
Inscription : Sep 2007
Réputation :
1
Messages : 11,007
Sujets : 230
Inscription : Sep 2007
Réputation :
1
athena_pallas
Unregistered
Magnifique ! Un grand merci.
athena_pallas
Unregistered
Magnifique ! Un grand merci.
|