[PHP] Aiuto creazione form php per completamento modello word

Discussione in 'PHP' iniziata da sagoch, 14 Aprile 2018.

  1. sagoch

    sagoch Nuovo Utente

    Registrato:
    14 Aprile 2018
    Messaggi:
    2
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buonasera a tutti, dovrei creare un form php che mi inserisca dei dati all'interno di un file word (modello già esistente da compilare) e che salvi diversi modelli già compilati in ordine numerico e che contenga nel nome del file word un parametro del form php. Vi faccio un esempio se sto riempiendo il form php del cliente "pinko" vorrei che il form mi generi un file word di nome 001-pinko, il cliente successivo "pallo" il file si dovrà chiamare 002-pallo . Chi mi puo aiutare??Il tutto verrà hostato su aruba quindi se necessita un db non ho problemi.
     
  2. macus_adi

    macus_adi Utente Attivo

    Registrato:
    5 Dicembre 2017
    Messaggi:
    309
    Mi Piace Ricevuti:
    11
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    Developer
    Località:
    L'Aquila
    Per quanto riguarda il download del file basta aggiungere nell'header
    PHP:
    header("Content-type: application/vnd.ms-word");
    Per quello che richiedi sarebbe opportuno definire meglio le directory, il numero progressivo etc...
    Piccola Classe che gestisce il tutto senza DB, non performante in quanto potresti salvare il numero progressivo in un file separato o in un DB, ma funziona, è facile da capire ed è estensibile:
    PHP:
    <?php
    /**
     * Created by PhPS.
     * User: Marco Arena Di R.
     * Date: 16/04/2018
     * Time: 12:02
     */


    /**
     * Class Gen_number
     */
    class Gen_number {

        
    /**
         * @var string
         */
        
    private $path='generate';

        
    /**
         * @var array
         */
        
    private $lists_file=[];

        
    /**
         * @var int
         */
        
    private $n_zero=3;

        
    /**
         * @var int
         */
        
    private $current_item=0;

        
    /**
         * @var string
         */
        
    public $file_name='';

        
    /**
         * @var string
         */
        
    public $ext='.doc';


        
    /**
         * Gen_number constructor.
         *
         * @param string $file_name
         * @param array $options
         */
        
    public function __construct($file_name='_file',$options=[]) {
            
    $this->file_name=$file_name;
            if(!empty(
    $options)){
                foreach (
    $options as $k=>$option)if(property_exists($this,$k))$this->$k=$option;
            }
            
    $this->init();
        }

        
    /**
         * Inizializza la definizione del nome del file
         */
        
    public function init(){
            
    $file=scandir($this->path);
            foreach (
    $file as $items){
                if(
    $items!='' && $items!='..')$this->lists_file[]=$items;
            }
            
    $this->create_name_file();
        }

        private function 
    create_name_file(){
            
    $this->current_item=count($this->lists_file);
            if(
    $this->current_item==|| empty($this->current_item))$this->current_item=1;
            
    $this->generate_zeros();
        }
        private function 
    generate_zeros(){
            
    $temp_file_name='';
            
    $zeros=$this->n_zero-(strlen($this->current_item));
            if(
    $zeros<0)$zeros=1;
            for(
    $i=0;$i<$zeros;$i++)$temp_file_name.='0';
            
    $this->file_name=$temp_file_name.$this->current_item.$this->file_name.$this->ext;
        }

        
    /**
         * Salva il file
         * @param string $string_output Stringa contenente il contenuto da salvare
         */
        
    public function create_docs($string_output){
            
    file_put_contents($this->path.'/'.$this->file_name,$string_output);
        }

        
    /**
         * Torna la stringa salvata nel file nel percorso di this-path
         * @return bool|string
         */
        
    public function create_download_file(){
            return 
    file_get_contents($this->path.'/'.$this->file_name);
        }
    }
    Mentre il file che richiama i metodi della classe è questa:
    PHP:
    /**
     * Created by PhPS.
     * User: Marco Arena Di R.
     * Date: 16/04/2018
     * Time: 12:01
     */


    include_once('Gen_number.php');

    $gen_file=new Gen_number('_nome_uno');
    $gen_file->create_docs('marcolino lino lero');
    header("Content-type: application/vnd.ms-word");

    header("Content-Disposition: attachment;Filename=".$gen_file->file_name);

    header("Pragma: no-cache");

    header("Expires: 0");


    echo 
    $gen_file->create_download_file();
    Manca di documentazione, ma è talmente semplice che non necessita di spiegazioni!
     
Sto caricando...

Condividi questa Pagina