Bonjour a tous,
Dans le logiciel de type webapp que j'ai créée, j'ai un formulaire me permettant d'enregistrer des pannes ou des demandes de mise en service. L'enregistrement ne me pose pas de problème et tout fonctionne parfaitement bien, par contre j'ai besoin d’insérer un bouton dans mon formulaire me permettant de générer un FDF "feuille d'intervention" à partir des données contenus dans les divers champs de mon formulaire, cette partie fonctionne très bien elle aussi et cela grâce à un système de double submit avec identification de l'id du bouton submit dans la page de traitement. Pour info, le FDF est un fichier contenant le nom des champs d'un formulaire PDF (créer avec adobe pro par exemple) ainsi que les infos contenu dans ces champs, dès que l'on ouvre un FDF, ce dernier va ouvre son PDF "modèle" et le remplir automatiquement.
Le souci c'est que je voudrais rentrer mes données dans mon formulaire, cliquer sur le bouton de création du pdf qui m'ouvre un nouvel onglet avec le pdf ainsi généré, mais que ma page "formulaire" reste ouverte pour que je puisse cliquer ensuite sur le bouton d'enregistrement.
Je ne vois vraiment pas comment faire ceci, dois-je passer par javascript avec détection de l'id du submit pour générer l'ouverture dans un nouvel onglet, ou il y a un autre moyen plus simple?
Voila un aperçu de ce que donne mon formulaire:
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 <form name="form_demande" method="post" action="../formulaires_traitement/traitement_demande.php"> <!-- formulaire --> <fieldset> <input></input> ....... <input></input> </fieldset> <!-- Creation du BI --> <fieldset> <!-- Champs complémentaires nécéssaire pour la création du Bon d'Intervention (BI) --> <input></input> ............ <input></input> <!-- Bouton de création du bon d'interevntion --> <input type="submit" name="submitbi" value="Créer BI" id="creerbi"/> </fieldset> <!-- Envoie / Annulation du formulaire --> <div id="inputs"> <input type="submit" name="submit" value="Enregistrer" id="enregistrer" class="submit"/> <input type="reset" value="Effacer" id="effacer" class="reset"/> </div> </form>
Idem, pour la création du FDF, j'ai ceci:
Le fichier de traitement servant à enregistrer les données ou créer le FDF suivant l'id du submit
et le fichier submit_form.php servant à créer le fichier FDF
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 <?php // Connexion à la base de donnée require_once('../connexionbdd.php'); require_once('regex.php'); // On fait un test pour vérifier si c'est le bouton d'enregistrement de la demande ou celui de création du BI if(isset($_POST['submit'])) { // Enregistrement du formulaire }else if(isset($_POST['submitbi'])){ if (isset($_POST['id_appel'])){$id_appel = $_POST['id_appel'];} else{$id_appel ="";} if (isset($_POST['type_inter'])){$type_inter = $_POST['type_inter'];} else{$type_inter ="";} if (isset($_POST['batiment'])){$batiment = htmlspecialchars($_POST['batiment']);} else{$batiment ="";} if (isset($_POST['local'])){$local = htmlspecialchars($_POST['local']);} else{$local ="";} if (isset($_POST['bi_equipement'])){$bi_equipement = htmlspecialchars($_POST['bi_equipement']);} else{$bi_equipement ="";} if (isset($_POST['bi_duree'])){$bi_duree = htmlspecialchars($_POST['bi_duree']);} else{$bi_duree ="";} if (isset($_POST['bi_categorie'])){$bi_categorie = htmlspecialchars($_POST['bi_categorie']);} else{$bi_categorie ="";} if (isset($_POST['intervenant1'])){$intervenant1 = htmlspecialchars($_POST['intervenant1']);} else{$intervenant1 ="";} if (isset($_POST['intervenant2'])){$intervenant2 = htmlspecialchars($_POST['intervenant2']);} else{$intervenant2 ="";} if (isset($_POST['intervenant_autre'])){$intervenant_autre= htmlspecialchars($_POST['intervenant_autre']);} else{$intervenant_autre ="";} if (isset($_POST['responsable'])){$responsable= htmlspecialchars($_POST['responsable'], ENT_QUOTES,'UTF-8');} else{$responsable ="";} header("Location: ../../pdf/BI/submit_form.php?id=$id_appel&type_inter=$type_inter&batiment=$batiment&local=$local&bi_equipement=$bi_equipement&bi_duree=$bi_duree&bi_categorie=$bi_categorie&intervenant1=$intervenant1&intervenant2=$intervenant2&intervenant3=$intervenant_autre"); } ?>
Logiquement cela devrait ouvrir le fichier FDF et donc le pdf + les données mais non la page web reste vide et figée au lieu d'avoir une ouverture du pdf dans le navigateur.
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 <?php require_once('../../php/connexionbdd.php'); // On vérifie que les champs on bien été transmis if(isset($_GET) && is_array($_GET) && count($_GET)){ // Nous allons utiliser un tableau pour passer les données à la fonction createFDF $data=array(); // On vérifie l'existance du champ debut_inter if(isset($_GET['batiment'])){ $data['numero']=date("Y").'-'.$_GET['id']; $data['debut']=date("d/m/Y"); $data['batiment']=$_GET['batiment']; $data['local']=$_GET['local']; $data['equipement']=$_GET['bi_equipement']; $data['duree']=$_GET['bi_duree']; $data['intervenant1']=$_GET['intervenant1']; $data['intervenant2']=$_GET['intervenant2']; $data['intervenant3']=$_GET['intervenant3']; $data['datedujour']=date("d/m/Y"); // Zone Nature de l'intervention if(isset($_GET['type_inter'])== 'Exploitation'){ $data['travaux']='X'; }elseif(isset($_GET['type_inter'])== 'Correctif'){ $data['depannage']='X'; }else{$data['autres']='X';} // Date de création du BI pour le N° du BI $data['datebi']=date('Y'); // Appel du fichier de création du pdf require_once 'createFDF.php'; // Le Fichier est nommé avec le <timestamp du jour>.fdf $fdf_file='BI - '.date("Y-m-d").'-'.$_GET['batiment'].'.fdf'; // On écrit le BI dans le répertoire $fdf_dir=dirname(__FILE__).'/results'; // Fichier PDF "modèle" dans lequel les données vont être affichées $pdf_doc='../bi.pdf'; // On génère le contenu dans le pdf $fdf_data=createFDF($pdf_doc,$data); // Ecriture du fichier de sortie if($fp=fopen($fdf_dir.'/'.$fdf_file,'w')){ fwrite($fp,$fdf_data,strlen($fdf_data)); $result = fopen("results/$fdf_file", "r+"); //echo $fdf_file,' à bien été crée.'; }else{die('Impossible de créer le pdf: '.$fdf_dir.'/'.$fdf_file);} fclose($fp); } }else{echo 'Vous n\'avez pas envoyé le formulaire correctement.';} ?>
Je bug un peu et j'aurais bien besoin d'aide et de conseil.
Merci d'avance pour votre aide.
maxredphenix
Partager