[résolu] Création de module : pb récupérer variables dans DoAction()

Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
#1
Bonjour,

Je suis en train de créer un module pour CMSMS, appelé LS2CMSMS.
Mon soucis est que je dois utiliser des variables dans la fonction "doAction()" et que ces variables se perdent en route :
Je les déclare dans le fichier "de config" : monModule.module.php
et lorsque je les appelle dans mon fichier action.MonAction.php : elles n'ont pas été conservées . . .
J'ai beau éplucher la documentation, je ne trouve pas comment faire.
quelqu'un aurait une idée ??

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : 1.6.6
#~ Version du MLE si existante :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.6.6
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.1
#~ * MenuManager: 1.6.2
#~ * ModuleManager: 1.3.1
#~ * News: 2.10.3
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.1
#~ * ThemeManager: 1.1.1
#~ * FrontEndUsers: 1.6.11
#~ * FEmessages: 1.1
#~ * SelfRegistration: 1.2.5
#~ * FormBuilder: 0.6
#~ * CGExtensions: 1.17.6
#~ * CustomContent: 1.5.3
#~ * FormBrowser: 0.3
#~ * TinyMCE: 2.6.1
#~ * CGSimpleSmarty: 1.4.3
#~ * SimplePortal: 1.0
#~ * Captcha: 0.4
#~ * Skeleton: 1.7
#~ * LS2CMSMS: 1.0
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 2000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.2.11
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * memory_limit: 128M
#~ * max_execution_time: 30
#~ * safe_mode: Off (Faux)
#~ * session_save_path: D:/wamp/tmp (0777)
#~ * session.use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysqli)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#1
Bonjour,

Je suis en train de créer un module pour CMSMS, appelé LS2CMSMS.
Mon soucis est que je dois utiliser des variables dans la fonction "doAction()" et que ces variables se perdent en route :
Je les déclare dans le fichier "de config" : monModule.module.php
et lorsque je les appelle dans mon fichier action.MonAction.php : elles n'ont pas été conservées . . .
J'ai beau éplucher la documentation, je ne trouve pas comment faire.
quelqu'un aurait une idée ??

Citation :#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#~ Version du CMS : 1.6.6
#~ Version du MLE si existante :
#~ Informations Système :
#~ ----------------------------------------------
#~ Cms Version: 1.6.6
#~ Installed Modules:
#~ * CMSMailer: 1.73.14
#~ * FileManager: 1.0.1
#~ * MenuManager: 1.6.2
#~ * ModuleManager: 1.3.1
#~ * News: 2.10.3
#~ * nuSOAP: 1.0.1
#~ * Printing: 1.0.4
#~ * Search: 1.6.1
#~ * ThemeManager: 1.1.1
#~ * FrontEndUsers: 1.6.11
#~ * FEmessages: 1.1
#~ * SelfRegistration: 1.2.5
#~ * FormBuilder: 0.6
#~ * CGExtensions: 1.17.6
#~ * CustomContent: 1.5.3
#~ * FormBrowser: 0.3
#~ * TinyMCE: 2.6.1
#~ * CGSimpleSmarty: 1.4.3
#~ * SimplePortal: 1.0
#~ * Captcha: 0.4
#~ * Skeleton: 1.7
#~ * LS2CMSMS: 1.0
#~ Config Information:
#~ * php_memory_limit:
#~ * process_whole_template: false
#~ * max_upload_size: 2000000
#~ * default_upload_permission: 664
#~ * assume_mod_rewrite: false
#~ * page_extension:
#~ * internal_pretty_urls: false
#~ * use_hierarchy: true
#~ Php Information:
#~ * phpversion: 5.2.11
#~ * md5_function: On (Vrai)
#~ * gd_version: 2
#~ * tempnam_function: On (Vrai)
#~ * magic_quotes_runtime: Off (Faux)
#~ * memory_limit: 128M
#~ * max_execution_time: 30
#~ * safe_mode: Off (Faux)
#~ * session_save_path: D:/wamp/tmp (0777)
#~ * session.use_cookies: On (Vrai)
#~ Server Information:
#~ * Server Api: apache2handler
#~ * Server Db Type: MySQL (mysqli)
#~ * Server Db Version: 5.1.36
#~ ----------------------------------------------
#~~~~~ NE PAS SUPPRIMER CE BLOC ~~~~~
#2
un petit bout de code stp ?
#2
un petit bout de code stp ?
#3
Bonjour Bess,

Merci pour ton message.

J'ai finalement résolu mon problème.
Je ne sais pas si c'est la manière la plus propre mais elle a l'avantage de marcher...

En pratique, je dois me connecter à une autre base de donnée de celle de CMSMS et j'avais besoin de stocker les paramètres de connexion à cette autre base.
je dois exécuter dans le doAction() :
Code :
$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
au départ, j'ai placé dans le fichier monModule.module.php le code :
Code :
$databaselocation = 'localhost';
$databasename= 'cms';
$databaseuser =  'root';
$databasepass ='';
mais lorsque j'exécutais le code
Code :
$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
celui-ci retournait mysql_connect(, , );
c'est-à-dire que les valeurs étaient perdus.

Pour résoudre le problème, je les ai stocké dans une fonction "get_autre_Settings()" dans le fichier monModule.module.php:
Code :
function get_autre_Settings(){
        $settings = array(    'ls_db_location' => 'localhost',
                        'autre_db_name' => 'cms',
                        'autre_db_user' => 'root',
                        'autre_db_pass' => '',
                        );
        return($settings);
    }
puis, dans le fichier action.MonAction.php je récupère les valeurs par :
Code :
$autre_settings = get_autre_Settings();    
$databaselocation = $autre_settings['autre_db_location'];
$databasename= $autre_settings['autre_db_name'];
$databaseuser = $autre_settings['autre_db_user'];
$databasepass = $autre_settings['autre_db_pass'];

$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
Ce qui fonctionne ! (retourne mysql_connect('localhost','root' ,'' );

Cependant, j'imagine qu'il aurait fallu que je passe par la programmation objet, avec laquelle je suis moins à l'aise, pour résoudre ce problème de manière plus adaptée . . .

Je place ce post comme "résolu", mais je reste ouvert à d'autres suggestions.
#3
Bonjour Bess,

Merci pour ton message.

J'ai finalement résolu mon problème.
Je ne sais pas si c'est la manière la plus propre mais elle a l'avantage de marcher...

En pratique, je dois me connecter à une autre base de donnée de celle de CMSMS et j'avais besoin de stocker les paramètres de connexion à cette autre base.
je dois exécuter dans le doAction() :
Code :
$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
au départ, j'ai placé dans le fichier monModule.module.php le code :
Code :
$databaselocation = 'localhost';
$databasename= 'cms';
$databaseuser =  'root';
$databasepass ='';
mais lorsque j'exécutais le code
Code :
$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
celui-ci retournait mysql_connect(, , );
c'est-à-dire que les valeurs étaient perdus.

Pour résoudre le problème, je les ai stocké dans une fonction "get_autre_Settings()" dans le fichier monModule.module.php:
Code :
function get_autre_Settings(){
        $settings = array(    'ls_db_location' => 'localhost',
                        'autre_db_name' => 'cms',
                        'autre_db_user' => 'root',
                        'autre_db_pass' => '',
                        );
        return($settings);
    }
puis, dans le fichier action.MonAction.php je récupère les valeurs par :
Code :
$autre_settings = get_autre_Settings();    
$databaselocation = $autre_settings['autre_db_location'];
$databasename= $autre_settings['autre_db_name'];
$databaseuser = $autre_settings['autre_db_user'];
$databasepass = $autre_settings['autre_db_pass'];

$link = mysql_connect($databaselocation, $databaseuser, $databasepass);
Ce qui fonctionne ! (retourne mysql_connect('localhost','root' ,'' );

Cependant, j'imagine qu'il aurait fallu que je passe par la programmation objet, avec laquelle je suis moins à l'aise, pour résoudre ce problème de manière plus adaptée . . .

Je place ce post comme "résolu", mais je reste ouvert à d'autres suggestions.
#4
Je n'ai pas encore toutes les données mais apparemment ton soucis était que tu codais effectivement pas en objet. de ce fait tu perdais la visibilité de tes variables et donc leur contenu.

Citation :mais lorsque j'exécutais le code
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Je ne sais pas ou tu excecute ce code mais si c'est dans une fonction de monModule.module.php il faut sans doute penser à rappeler les variables

Code :
GLOBAL $databaselocation;
GLOBAL $databaseuser;
GLOBAL $databasepass;
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
#4
Je n'ai pas encore toutes les données mais apparemment ton soucis était que tu codais effectivement pas en objet. de ce fait tu perdais la visibilité de tes variables et donc leur contenu.

Citation :mais lorsque j'exécutais le code
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Je ne sais pas ou tu excecute ce code mais si c'est dans une fonction de monModule.module.php il faut sans doute penser à rappeler les variables

Code :
GLOBAL $databaselocation;
GLOBAL $databaseuser;
GLOBAL $databasepass;
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
#5
Citation :Je place ce post comme "résolu", mais je reste ouvert à d'autres suggestions.
pour faire ca il faut modifier le titre de ton premier message et y ajouter [Résolu]
#5
Citation :Je place ce post comme "résolu", mais je reste ouvert à d'autres suggestions.
pour faire ca il faut modifier le titre de ton premier message et y ajouter [Résolu]
#6
bess a écrit :Je n'ai pas encore toutes les données mais apparemment ton soucis était que tu codais effectivement pas en objet. de ce fait tu perdais la visibilité de tes variables et donc leur contenu.

Citation :mais lorsque j'exécutais le code
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Je ne sais pas ou tu excecute ce code mais si c'est dans une fonction de monModule.module.php il faut sans doute penser à rappeler les variables

Code :
GLOBAL $databaselocation;
GLOBAL $databaseuser;
GLOBAL $databasepass;
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Oui, c'est bien dans une fonction de monModule.module.php que j'éxécute ce code.
J'ai essayé avec global mais ça ne marche pas, les variables disparaissent toujours avec cette methode, que je place le global dans monModule.module.php ou action.MonAction.php . . .
#6
bess a écrit :Je n'ai pas encore toutes les données mais apparemment ton soucis était que tu codais effectivement pas en objet. de ce fait tu perdais la visibilité de tes variables et donc leur contenu.

Citation :mais lorsque j'exécutais le code
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Je ne sais pas ou tu excecute ce code mais si c'est dans une fonction de monModule.module.php il faut sans doute penser à rappeler les variables

Code :
GLOBAL $databaselocation;
GLOBAL $databaseuser;
GLOBAL $databasepass;
ink = mysql_connect($databaselocation, $databaseuser, $databasepass);
Oui, c'est bien dans une fonction de monModule.module.php que j'éxécute ce code.
J'ai essayé avec global mais ça ne marche pas, les variables disparaissent toujours avec cette methode, que je place le global dans monModule.module.php ou action.MonAction.php . . .
#7
Le plus sécuritaire et le plus facile était quand même de placer ta bd externe dans celle de cmsms ce qui ne devait pas te poser de problème vu que tu y a accès.
#7
Le plus sécuritaire et le plus facile était quand même de placer ta bd externe dans celle de cmsms ce qui ne devait pas te poser de problème vu que tu y a accès.
#8
Jean le Chauve a écrit :Le plus sécuritaire et le plus facile était quand même de placer ta bd externe dans celle de cmsms ce qui ne devait pas te poser de problème vu que tu y a accès.
Certes,
Cependant mon problème concerne en fait une dizaine de variables, la plupart indépendantes de la base de donnée. J'ai mis uniquement ces 3 là par soucis de simplification.
D'ailleurs, pour l'instant, les 2 bases sont les mêmes, mais je souhaite dès la rédaction du code me garder la possibilité de les séparer ci-besoin.
#8
Jean le Chauve a écrit :Le plus sécuritaire et le plus facile était quand même de placer ta bd externe dans celle de cmsms ce qui ne devait pas te poser de problème vu que tu y a accès.
Certes,
Cependant mon problème concerne en fait une dizaine de variables, la plupart indépendantes de la base de donnée. J'ai mis uniquement ces 3 là par soucis de simplification.
D'ailleurs, pour l'instant, les 2 bases sont les mêmes, mais je souhaite dès la rédaction du code me garder la possibilité de les séparer ci-besoin.


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)