Forum CMS Made Simple FR

Version complète : [Résolu] Problème mise à jour lors installation d'un module perso
Vous consultez actuellement la version basse qualité d’un document. Voir la version complète avec le bon formatage.
Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~
#~ Version du CMS: 1.11.2.1
#~ Url du site :
#~ Hébergeur / Soft :
#~ Informations Système :
#~~~~~ FIN BLOC A NE PAS SUPPRIMER ~~~~~


Hello,

J'ai une question un peu particulière. J'ai développé un module que j'ai exporté et amélioré sur un second site.

J'en suis au 3° et j'ai encore exporté la dernière version que j'ai installée sur ce 3° site et j'ai constaté que seul le fichier "install.php" s'est exécuté, mais pas l'upgrade.php.

Donc j'ai bien les fichiers de la dernière version, j'ai bien le dernier numéro de version, mais ce qui se trouve dans mon fichier d'upgrade n'a jamais été exécuté, donc ma DB n'est pas "correcte".

Y a-t-il quelque chose de spécial à faire pour appeler l'upgrade lors de l'installation d'un module ?

J'imagine que oui étant donné que d'autres le font...

Bonne soirée !
ben non, si ton fichier upgrade.php existe et que tu as fait évoluer le num de version dans ton fichier module.php, il doit s'executer.
As-tu bien fait évoluer ton numéro de version?
je me répond : oui, tu as bien fait évolué le numéro de version pusique :
Hériquet a écrit :Donc j'ai bien les fichiers de la dernière version, j'ai bien le dernier numéro de version
Donc, tu as une erreur dans le code de upgrade.php et tu ne la vois pas puisque tu est redirigé automatiquement.
Salut Jissey,

Exact.

J'ai comparé les méthodes de Calguy et de Wishy... L'un fait des switchs en incrémentant lui-même le numéro de version courant :

Code :
[== PHP ==]
switch($current_version)
{
    case "1.0":
        $dict = NewDataDictionary($db);
        $sqlarray = $dict->AddColumnSQL(cms_db_prefix()."module_news", "start_time " . CMS_ADODB_DT . ", end_time " . CMS_ADODB_DT . ", icon C(255)");
        $dict->ExecuteSQLArray($sqlarray);
        $current_version = "1.1";
    case "1.1":

tandis que l'autre fait des "if" :

Code :
[== PHP ==]
$db = cmsms()->GetDb();
$taboptarray = array( 'mysql' => 'TYPE=MyISAM' );
$dict = NewDataDictionary($db);

if( version_compare($oldversion,'1.8') < 0 )
  {
    // tables
    $flds = "id   I KEY AUTO,
             code C(2) KEY,
             name C(50),
             sorting I DEFAULT 0";

J'ai tranché pour la version de Calguy. Et cela semble fonctionner.
[RESOLU] Big Grin
Résolu mais j'ai pas droit à plus de caractères ;-).

Pour mon problème, je pense que ca vient du module Skeleton car je suis parti de là...

(et me demande sérieusement si je ne vais pas le reprendre et le mettre à jour car il est vieillot... et la gestion des templates dans la DB et modifiables depuis l'admin du module serait un bon exemple aussi)
vazy vazy, ne te gêne surtout pas!
>Résolu mais j'ai pas droit à plus de caractères ;-).

le Nb de carractères est limité faut donc en enlever pour mettre Résolu en entier (je l'ai fait)
heriquet a écrit :...
(et me demande sérieusement si je ne vais pas le reprendre et le mettre à jour car il est vieillot... et la gestion des templates dans la DB et modifiables depuis l'admin du module serait un bon exemple aussi)

Oui ho oui oui ..... très bonne idée ça ...
Et si tu es ok, je traduits au fur et à mesure, y compris les textes d'aide inclus dans les fichiers php !