[PHP] Aiuto creazione form php per completamento modello word

  • Creatore Discussione Creatore Discussione sagoch
  • Data di inizio Data di inizio

sagoch

Nuovo Utente
14 Apr 2018
2
0
1
32
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.
 
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==0 || 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!
 

Discussioni simili