Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MkFramework Discussion :

Raffraichir la liste sans faire de submit


Sujet :

MkFramework

  1. #1
    Nouveau membre du Club
    Raffraichir la liste sans faire de submit
    Bonjour,

    J'ai besoin de faire des menus déroulants liés comme dans cette discussion: http://www.developpez.net/forums/d1513506/applications/projets/projets-heberges/mkframework/j-ai-trois-listes-afficher-meme-action/
    Mais mon souci est que dans la fonction ajouter de mon contrôleur, j'ai l'instruction
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    $tMessage=$this->processSave();
    , du coup à chaque fois que je change la valeur de ma liste, il enregistre la valeur.

    Ma question est de savoir comment dissocier le chargement des menus et l'enregistrement des valeurs dans la base de données ?

    Toutes les réponses sont les bienvenues

  2. #2
    Rédacteur

    Pour régler votre soucis, il faudrait sur le onChange du menu déroulant mettre une valeur du formulaire a "desactivé" pour ne pas envoyer le formulaire

    Dans l'exemple du site http://mkframework.com/tutoriaux.html#listelinked

    On passerait de
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    <?php $oForm=new plugin_form();?>
     
    <form action="" method="POST">
     
    <p>Region <?php echo $oForm->getSelect('region_id',$this->tRegion,array('onchange'=>'submit()'))?></p>
    <?php if($this->tDepartement)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
       <p>Departement <?php echo $oForm->getSelect('departement_id',$this->tDepartement,array('onchange'=>'submit()'))?></p>
     
       <?php if($this->tVille)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
           <p>Ville <?php echo $oForm->getSelect('ville_id',$this->tVille)?></p>
       <?php endif;?>
    <?php endif;?>
     
    <p>Restaurant: <?php echo $oForm->getInputText('nom')?></p>
    <input type="submit" value="Ajouter restaurant"/>
    </form>


    à

    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    <?php $oForm=new plugin_form();?>
     
    <script>
    function disableForm(){
    	var a = document.getElementById('envoiId');
    	if(a){
    		a.value='disable';
    	}
    }
    </script>
     
    <form action="" method="POST">
     
    <input type="hidden" id="envoiId" name="envoi" value="go"/>
     
    <p>Region <?php echo $oForm->getSelect('region_id',$this->tRegion,array('onchange'=>'disableForm();submit()'))?></p>
    <?php if($this->tDepartement)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
       <p>Departement <?php echo $oForm->getSelect('departement_id',$this->tDepartement,array('onchange'=>'submit()'))?></p>
     
       <?php if($this->tVille)<img src="images/smilies/icon_confused.gif" border="0" alt="" title=":?" class="inlineimg" />>
           <p>Ville <?php echo $oForm->getSelect('ville_id',$this->tVille)?></p>
       <?php endif;?>
    <?php endif;?>
     
    <p>Restaurant: <?php echo $oForm->getInputText('nom')?></p>
    <input type="submit" value="Ajouter restaurant"/>
    </form>


    L'idée c'est d'avoir un champ caché contenant une valeur, ici: go
    Si on change le menu déroulant, on modifie cette valeur puis on soumet le formulaire

    Ainsi le code php revevra "desactive" si le menu déroulant a été modifié: on affichera la meme page (avec de nouveau le champ caché avec "go")
    Et si on ne touche pas au menu déroulant, on enverra go, et le traitement fera son processus normal


    Et dans le code php:
    on passerai de

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
     
    $tMessage=$this->processSave();


    à

    Code php :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    //on envoi que si on a pas changé le menu déroulant
    if(_root::getParam('envoi')=='go'){
    $tMessage=$this->processSave();
    }
    Framework php sécurisé et simple à prendre en main avec générateur web http://mkframework.com/ (hebergé sur developpez.com)
    Mes cours/tutoriaux

###raw>template_hook.ano_emploi###