[Résolu]Fonction dans un module - Version imprimable +- Forum CMS Made Simple FR (https://forum.cmsmadesimple.fr) +-- Forum : Général (https://forum.cmsmadesimple.fr/forum-3.html) +--- Forum : Modules, Tags (https://forum.cmsmadesimple.fr/forum-14.html) +--- Sujet : [Résolu]Fonction dans un module (/thread-2835.html) |
[Résolu]Fonction dans un module - fwa49300 - 09/07/2013 Citation :#~~~~~ DEBUT BLOC A NE PAS SUPPRIMER ~~~~~ Bonjour, Je développe actuellement mon module de gestionnaire de base de donnée pour mon client.(il ne veut pas de connexion à phpmyadmin). J'ai réussi à faire un beau tableau, maintenant je dois ajouter mes fonctions : suppression d'une ligne, réinitialisation du mdp. Dans un premier temps, j'ai testé en php pur sans smarty, mes fonctions fonctionnent très bien. Maintenant, je veux ajouter mes fonctions à MS. Construction de mon module : action.default.php : <?php // si l'accès ne provient pas du noyau de CmsMadeSimple, je refuse l'accès. if (!isset($gCms)) exit; $db=$gCms->GetDb(); $personnel = array (); $results = $db->Execute('select id, opts,nom,prenomcontact,nomcontact from matable;'); while ($results && $row=$results->FetchRow()) { $personnel[]=$row; } $smarty->assign('personnel',$personnel); $count = $db->GetOne('select count(*) from matable'); $smarty->assign('usercount',$count); echo $this->ProcessTemplate('tableaubdd.tpl'); ?> tableaubdd.tpl -> contient mon html exemple du lien de suppression : <a href="javascriptuppression('q=Supprimer&id={$entry.id}')"><img src="{$rooturl}/modules/monmodule/images/delete.gif" title="Supprimer" alt="Supprimer"></a> Je vois très bien ce qu'il faut faire en programmation (faire un GET de l'url) mais ou je dois placer ma fonction supprimer? <?php if (!isset($gCms)) exit; $db=$gCms->GetDb(); //Fonction supprimer function Supprimer($id) { $delete = $db->Execute("DELETE FROM matable WHERE".$id); if ($delete == TRUE) { echo "Les données ont été correctement effacées<br />"; } else { echo "Erreur lors de la suppression des données<br />"; } } ?> Dans le tuto de Bess, j'ai vu qu'on faisait tout dans monmodule.module.php, je trouve pas ça très clair...Peut-on créer un fichier fonction.php ou l'on peut mettre toute nos fonctions concernant le module. Merci d'avance pour vos réponses. [Résolu]Fonction dans un module - bess - 09/07/2013 Il existe déjà des modules pour ce que tu veux faire il me semble... enfin pour répondre technique à ta question : non dans mon tuto on ne met pas tout dans monmodule.module.php et encore heureux car comme tu dis c'est pas très clair :lol: on fonctionne par norme. Listons un peu tes actions possible : list (mettons que c'est l'action par défaut) détail modification suppression ajout et éventuellement réinit d'un mdp ce qui revient à une modif avec un formulaire un peu plus sexy. Tu devrais donc avoir action.defaultadmin.php => par défault la liste action.detail.php action.modification.php action.suppression.php action.ajout.php et ... action.save_modification.php action.save_ajout.php (si tu suis ma logique : les premiers modif/ajout seront des forms, les seconds valideront le SQL) Ensuite exemple avec la suppression dans action.suppression.php Code : [== Indéfini ==] et voilà comment on navigue d'action en action en passant les paramètres nécessaire et en conservant son code propre Note : Code : [== Indéfini ==] à la place de ce que tu utilises Toute la doc : http://apidoc.cmsmadesimple.org/CMS/CMSModule.html [Résolu]Fonction dans un module - fwa49300 - 10/07/2013 Merci beaucoup pour cette réponse, j'y voit un peu plus clair mais pas encore assez Je vais y aller par étape, ça sera plus compréhensible: 1- tableaubdd.tpl - Affichage d'une pop up lors du click sur l'image, voulez vous vraiment supprimer? Mon javascript étant comme ceci : <td><p class="imgtableau"><a href="javascriptuppression('q=supprimer&login={$entry.id}')"><img src="{$rooturl}/artelys/modules/Websecure/images/delete.gif" title="Supprimer" alt="Supprimer"></a></p></td> 2- Je récupère le mot "supprimer" et lance ma fonction (Ou mettre ce script ????). Est ce qu'il faut le modifier pour MS ? if (isset ($_GET["q"])) { $q = $_GET["q"]; } elseif (isset ($_POST["q"])) { $q = $_POST["q"]; } else { $q = ""; } switch ($q) { case "supprimer"; echo "<div class=\"titrecorps\">Suppression d'une entrée de la table</div>"; //On lance la fonction supprimer() - comment appeler action.suppression.php ???? un include??? Supprimer("id=\"$_GET[id]\""); ?> // REdirection vers la même page avec un message de réussite <script language="Javascript"> window.location="<? echo "".$_SERVER["PHP_SELF"]."?msg=3"; ?>"; </script> <?php break; } ?> Avec l'exemple que tu m'as donné : action.suppression.php. Est ce que je peux en faire une fonction. fonction supprimer(){ le code de action.suppression.php} Bref, je n'arrive pas à récupérer le "supprimer" dans mon url pour lancer action.suppression.php et je ne sais pas dans quelle fichier faire cette instruction... Dans l'exemple que tu m'a donné : //On récupère le paramètre. /!\ id est un terme réservé donc on choisit autre chose $sid = $params['sid']; Comment je fais pour voir ce que vaut $sid? J'ai esssayé ça dans mon fichier monmodule.module.php--> function DoAction($action, $id, $params, $returnid) { echo '<h1>'.$sid.'</h1>'; debug_display($params); } Résultat: Array ( [error] => identifiant vide [action] => defaultadmin ) Une fois que j'aurai réussi à mettre en place la fonction suppresdion, ça sera bcp plus simple. J'ai du mal à faire la transition php pur avec CMS MS Merci pour ta réponse. [Résolu]Fonction dans un module - jissey - 10/07/2013 Bonjour, j'ai un peu lu en travers mais je pense qu'il faudrait que tu prennes exemple sur des modules existants et faire un parallèle avec les fonctionnalités de l'API. Cela te permettrait de mieux comprendre la logique. Il y a aussi un très bon bouquin que nous conseillons toujours à ceux qui veulent développer leur propre module. Je pense que si tu suis ces conseils, tu avanceras à grands pas et ça vaudra mieux qu'un cours à distance depuis le forum. [Résolu]Fonction dans un module - bess - 10/07/2013 j'ai pas lu tout ton message, tu as faux au départ. En gros, oublie ton javascript. Il ne sert à rien. tableaubdd.tpl devrait uniquement contenir un truc comme cela : Code : [== Indéfini ==] avec linkDelete, une valeur que tu auras préalablement calculée en amont dans le fichier php qui appel tableaubdd.tpl un exemple de construction de linkDelete à faire dans une boucle évidement puisque chaque lien est propre à la ligne /!\ id est comme j'ai dis une variable réservée, ici on va l'utiliser pour créer le lien. Idem pour returnId(*), ils sont dispo dans tous les fichiers php du front lié à cmsms Code : [== Indéfini ==] 999 sera à remplacer par l'identifiant de chaque ligne. le détail des paramètres : http://apidoc.cmsmadesimple.org/CMS/CMSModule.html#CreateLink Si cela ne te parait par clair : prend mes derniers tuto de création de module, installe le et ouvre les fichiers Dernier recours : installe le module Skeleton, c'est un module dédié pour la création des premiers modules. C'est donc clairement fait pour toi. (*) dans notre cas il sera vide car uniquement lié au frontoffice, mais par habitude utilise le dans la création des liens |