Récupération données d'un plugin
Jeremmm
Member
dans Modifications
Bonsoir,
Je suis en train de développer un plugin pour lister des domaines. Celui va chercher des données dans une base MySQL déjà existante.
J'ai fait une requête pdo, j'arrive à bien récupérer les données dans le plugin et à les affichées via le plugin. Je voudrais plutôt les exploiter dans une page statique via un return $result; , mais impossible de récupérer.
Voici le code de la fonction que j'ai fait :
Merci
Jeremmm
Je suis en train de développer un plugin pour lister des domaines. Celui va chercher des données dans une base MySQL déjà existante.
J'ai fait une requête pdo, j'arrive à bien récupérer les données dans le plugin et à les affichées via le plugin. Je voudrais plutôt les exploiter dans une page statique via un return $result; , mais impossible de récupérer.
Voici le code de la fonction que j'ai fait :
public function Domain() {
$servername = $this->getParam('servername');
$username = $this->getParam('username');
$passwd = $this->getParam('passwd');
$database = $this->getParam('database');
try {
$dsn = 'mysql:host='.$servername.';dbname='.$database;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);
$dbh = new PDO($dsn, $username, $passwd, $options);
} catch ( Exception $e ) {
echo "Une erreur s'est produite.<br>Reessayez dans quelques instants<br><br>Si le problème continu, contacter le gestionnaire du site.<br>Merci<br><br>Erreur :", $e->getMessage();
die();
}
$select = $dbh->query("SELECT * FROM domain");
$select->setFetchMode(PDO::FETCH_OBJ);
echo '<table>';
echo '<td></td><td></td><td>OVH</td><td>Gandi</td>';
echo '<table>';
while($result = $select->fetch()){
echo '<table>';
echo '<tr>';
echo '<div class="linedomain">';
echo '<td class="flag"><img src="data/images/domaine/'.$result->name.'.png"></td><td class="flag"><span>.'. $result->name. '</span></td><td><span>' .$result->price_ovh.'</span></td><td><span>' .$result->price_gandi.'</span></td>';
echo '</div>';
echo '</tr>';
echo '</table>';
}
$select->closeCursor();
}
Je voudrais éviter d'avoir toute la partie tableau dans le plugin, pour juste avoir la requête.
public function Domain() {
$servername = $this->getParam('servername');
$username = $this->getParam('username');
$passwd = $this->getParam('passwd');
$database = $this->getParam('database');
try {
$dsn = 'mysql:host='.$servername.';dbname='.$database;
$options = array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8',);
$dbh = new PDO($dsn, $username, $passwd, $options);
} catch ( Exception $e ) {
echo "Une erreur s'est produite.<br>Reessayez dans quelques instants<br><br>Si le problème continu, contacter le gestionnaire du site.<br>Merci<br><br>Erreur :", $e->getMessage();
die();
}
$select = $dbh->query("SELECT * FROM domain");
$select->setFetchMode(PDO::FETCH_OBJ);
$result = $select->fetchAll();
return $result;
$select->closeCursor();
}
Si quelqu'un a une idée de pourquoi ça ne fonctionne pas?Merci
Jeremmm
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Quel code utilises-tu pour l'affichage dans ta page statique.
Au niveau de ton plugin tout est bon.
Au passage remplace par
sinon la dernière ligne ne sera jamais exécutée à cause du return
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
public function Domain() {
return 'test';
}
et sur ma page static
<?
global $plxShow;
echo '<div class="grid_2 domain">';
echo '<p>Domaines</p>';
$retour = $plxShow->callHook('Domain');
echo $retour;
echo '</div>';
?>
mais ça ne passe pas, je ne comprend pas trop pourquoi.
voilà le code que j'utilise
dans la page statique
le résultat:
test1 est bien affiché par le echo du plugin dans la fonction monHook
test2 est bien affiché à partir du code utilisé dans la page statique (valeur de retour)
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je n'ai que le test1 qui s'affiche avec le code tu m'as transmis
ça ne peut marcher qu'à partir d'une 5.1.4.
les version précédentes ne gèrent pas le retour de paramètres des hooks
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Je viens de faire un test avec la 5.1.5 et ça fonctionne.
Merci
juste une question par curiosité :
Comment fais-tu pour 'voir' le echo du test1 et ainsi vérifier qu'il se produit correctement ?
test1 est affiché grâce à la ligne echo "test1" de la fonction monHook() et test2 est affiché par la ligne echo $ret; du code mis dans la page statique, où $ret est la variable qui permet de récupérer la valeur de retour de l'appel du hook "monHook".
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Comme indiquer au dessus je vais taper sur une base mysql. Je voudrrai, pour éviter trop de requête vers la base, faire un xml qui stockerait toutes les données et qui serai appelé par le plugin. Ce fichier sera mis à jour tout les jours.
Est-ce qu'il y a une fonction qui permet de choisir le fichier xml que l'on veut parser en dehors des parameters.xml et infos.xml habituel que l'on trouve dans un plugin?
Merci
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Le plugin en question ajoute des champs dans l'article.
Lorsque j'appelle ce champ dans mon template, je prends soin de vérifier d'abord si elle existe.
le retour se fait bien ... sauf quand le champ est vide.
s'il n'existe pas j'ai un ?> qui apparaît
( @Stépane > je t'en avais déjà parlé pendant la phase de test, mais la soluce ne marche plus )
C'est très ennuyeux car en testant l'existence de la valeur avant de l'afficher, il y en a toujours une !
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
Consultant PluXml
Ancien responsable et développeur de PluXml (2010 à 2018)
merci pour les petites corrections, ça marche nickel.
Le pb majeur (?) venait d'un oubli sur quoi faire dans le cas où il n'y a pas de valeur