Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202

    Mantenere parametri di filtro form

    Ciao a tutti,

    Tempo fa avevo aperto una discussione in tal proposito ed era emerso che uno dei modi per farlo era salvare tutto in una variabile di sessione...
    Dato che mi sto lanciando nella creazione di classi a caso vorrei sottoporre quanto partorito e sapere se è qualcosa di sensato....
    SIATE BRUTALI...

    Codice PHP:
    <?php
    class form_form {
        private 
    $form_name;
        
        public function 
    getFormName(){        
            return 
    $this->form_name;   
        } 
        
        public function 
    setFormName($str){
            
    $this->form_name=$str;   
        }
        

        
    //Crea una variabile di sessione nominata come il campo "form_name" contenuto nel post
        
    public function createSessionFilter(){
            
    $arr = array();
            foreach(
    $_POST as $key => $value) {
                if(
    $key == "form_name"){
                    
    $name $value;
                    continue;
                }
                
    $arr[$key] = $value ;
            }
            
    $_SESSION[$name] = $arr;
        }
        
        public function 
    getFilter($param){
            foreach(
    $_SESSION[$this->form_name] as $key => $value) {
                if(
    $key == $param)
                    return 
    $value;
            }
            return 
    "";
        }
    }

    //CODICE DI QUANDO OTTENGO IL POST

    $frm_mod_int = new form_form($_POST);
    $frm_mod_int->setFormName($_POST['form_name']);
    $frm_mod_int->createSessionFilter();
    unset(
    $frm_mod_int);

    //se l'utente rientra nella pagina posto un esempio di rivalorizzazione input
    $frm_mod_int = new form_form(); 
    $frm_mod_int->setFormName('FrmFilterModInt');
    ?>
    <input name="pdr" type="text" size="14" value="<?php if(isset($_SESSION['FrmFilterModInt'])){echo $frm_mod_int->getFilter('pdr');}?>"><br />
    Che mestiere difficile.....essere da soli ancora di più

  2. #2
    Mmm, non capisco tanto il giro tra setFormName, il post e la sessione...

    Se il nome della form vuoi che venga preso dal POST, prendilo dal post, ma allora a che ti serve poterlo settare con setFormName?

    In più, fai new form_form($_POST), ma non definendo da nessuna parte la construct di quella classe dubito che il parametro $_POST che passi vada da qualche parte...

    Poi non capisco perchè chiamare Filter qualcosa che in buona sostanza è ciò che l'utente ti aveva scritto nei campi...

    Non so, io non procederei proprio così, ma invece creerei una classe form che contenga sia il nome della form stessa (assegnato da me e fisso) che l'elenco dei campi presenti che i valori dei campi stessi, e su ricezione del post salverei i valori nell'oggetto, che poi salverei in sessione. Per recuperare i valori, caricherei dalla sessione l'intero oggetto (oppure lo genererei nuovo se manca), e a quel punto lo userei per creare la maschera.
    "Le uniche cose che sbagli sono quelle che non provi a fare."
    Atipica

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2014
    residenza
    Voltati
    Messaggi
    913
    Codice PHP:
       private $form_name;

        public function 
    getFormName(){
                    return 
    $this->form_name;
           }

         public function 
    setFormName($str){
                   
    $this->form_name=$str;
           } 
    Se lo puoi sia leggere che modificarlo, tanto vale dare a $form_name visibilità public
    No

  4. #4
    Utente di HTML.it L'avatar di Fractals87
    Registrato dal
    Apr 2008
    Messaggi
    1,202
    Mmm, non capisco tanto il giro tra setFormName, il post e la sessione...

    Se il nome della form vuoi che venga preso dal POST, prendilo dal post, ma allora a che ti serve poterlo settare con setFormName?
    Hai ragione.
    In primis il codice è sbagliato perchè al massimo dovrebbe essere

    Codice PHP:
    $frm_mod_int = new form_form();
    $frm_mod_int->setFormName($_POST['form_name']);
    $frm_mod_int->createSessionFilter($_POST);
    unset(
    $frm_mod_int); 
    Il setFormName lo avevo inserito per poter eliminare questo if... non mi sembrava elegante

    Codice PHP:
                if($key == "form_name"){
                    
    $name $value;
                    continue;
                } 
    Il fatto che l'ho chiamato Filter non ha ragioni specifiche... magari parametro era più corretto...

    Non so, io non procederei proprio così, ma invece creerei una classe form che contenga sia il nome della form stessa (assegnato da me e fisso) che l'elenco dei campi presenti che i valori dei campi stessi, e su ricezione del post salverei i valori nell'oggetto, che poi salverei in sessione. Per recuperare i valori, caricherei dalla sessione l'intero oggetto (oppure lo genererei nuovo se manca), e a quel punto lo userei per creare la maschera.
    Anche io avevo pensato di creare una classe form specifica per ogni filtro...
    Però ho molti filtri nella mia applicazione e volevo creare qualcosa di riutilizzabile, dici che è proprio sbagliato procedere in questo modo?

    e a quel punto lo userei per creare la maschera
    Questa non l'ho capita.

    Se lo puoi sia leggere che modificarlo, tanto vale dare a $form_name visibilità public
    Guarda ti do ragione, ma sul foro php ci sono molti javisti (sperando si dica cosi) che suggeriscono di fare sempre classi con getter e setter per non contraddire la regola di incapsulamento... e l'ho presa come abitudine... non so se ho fatto bene o male.

    GRAZIE MILLE PER LE RISPOSTE
    Che mestiere difficile.....essere da soli ancora di più

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.