Bonjour !
Pour un projet assez urgent, j'aurai besoin de vos lumières.
Je suis actuellement en train de tenter de séparer le traitement d'un formulaire en 2 boutons.

Je vous explique le formulaire :
Il s'agit d'une liste de produits pour lesquels on indique une quantité.
Chaque produit a une valeur en €.

La personne rempli des champs de "quantité" pour ces produits.

Un des boutons sert à calculer la somme en €. Ça, c'est OK.
L'autre bouton servirait à imprimer la liste des produits, ainsi que le total obtenu.

Pour cela, je créer une nouvelle fenêtre en JS afin de pouvoir faire toute la mise en page que je veux.

Et j'aimerai pouvoir récupérer les données POST du formulaire sans l'envoyer.
Ça j'y suis arrivé aussi mais pas vraiment comme je le souhaite et c'est là que j'ai besoin d'aide.


Voici mon code dans ses différentes parties, pour l'instant afin de vous donner un exemple :

formulaire.php
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function imprimer() {
	popup = window.open('preview.php','Preview','width=400,height=400,toolbar=no,location=no,directories=no,menubar=no,scrollbars=no,copyhistory=no,resizable=no');
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
<input type="text" value="Recup" id="idchamp" name="test">
<input type="image" src="image/btprint.jpg" name="action" value="imprimer" onclick="imprimer(); return false;">

preview.php
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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
 
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Impression</title>
<script type="text/javascript">
function init(){
		getData();
}
 
function getData(){
   document.getElementById("test").innerHTML = window.opener.document.getElementById('idchamp').value;
}
 
window.onload=init;
</script>
</head>
<body>
<div id="preview">
	<span id="test" style="color:red"></span>
</div>
</body>
</html>
Ce qui fonctionne. Mais le problème est que pour chaque champ, je dois le faire à la main.

N'est il pas possible de récupérer toutes les données envoyées par le formulaire ?
Est il possible de retraiter ces données en php à la place ?

J'ai ce problème, car la liste des produits est générée en php de façon dynamique, et donc les inputs avec, tel que :

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
48
49
<?php
$result_query = mysql_query("SELECT * FROM tarif WHERE constructeur LIKE '%hp%'");
$col = 0 ; 
$row = 0; 
 
        while($result = mysql_fetch_array($result_query)) { 
 
          $tb[$row][$col] = $result; 
          $row++; 
          $index=1;
 
          if ($row == 13) { $row =0;$col++;} 
 
        } 
 
        foreach ($tb as $v){
                                $value="typcart".$index;
                echo "  <table width=\"98%\" border=\"0\">";
                            echo "  <tr> \n";
                echo "  <td><table width=\"185\" border=\"0\">";
                echo "  <tr> \n";
                                echo "  <table width=\"202\" border=\"0\">";
                echo "  <tr>";
                echo "  <td width=\"185\">";
                                echo "  <table width=\"169\" border=\"0\" align=\"right\">";
                                echo "  <tr> \n";
                                echo "  <td class=\"texte_tableau_gain\">".$v[0]['constructeur']." ".htmlentities($v[0]['reference'])." :</td></tr></table>\n";
                                echo "  </tr></table>\n";
                                echo "  <td class=\"texte_tableau_gain\" width=\"39\" align=\"\">".htmlentities($v[0]['prix'])." €</td> \n";
                                echo "  <td> \n";
                                echo "  <td width=\"150\">";
                                echo "  <input type=\"text\" id=\"produit".$index."\" name=\"typcart".$index."\" value=\"".$tableau[$index]."\" size=\"5\" /> \n";
                                echo "  <input type=\"hidden\" name=\"coef_prix".$index."\" value=\"".htmlentities($v[0]['prix'])."\"/> \n";
                                echo "  </td> \n";
                                echo "  <td> \n";
                                echo "  </td> \n";
                                $index++;
                                echo "  <td class=\"texte_tableau_gain\" width=\"163\">".$v[1]['constructeur']." ".htmlentities($v[1]['reference'])." :</td>\n";
                                echo "  <td class=\"texte_tableau_gain\" width=\"45\">".htmlentities($v[1]['prix'])." €</td> \n";
                                echo "  <td> \n";
                                echo "  <td class=\"texte_tableau_gain\" width=\"82\">";
                                echo "  <input type=\"text\" id=\"produit".$index."\"  name=\"typcart".$index."\" value=\"".$tableau[$index]."\"  size=\"5\" /> \n";
                                echo "  <input type=\"hidden\" name=\"coef_prix".$index."\" value=\"".htmlentities($v[1]['prix'])."\"/> \n";
                                echo "  </td> \n";
                                echo "  </td> \n";                      
                                echo "  </tr></table>\n";
                                $index++;               
        }
?>
Et je n'ai donc pas la moindre idée de comment récupérer les ids de ces produits de façon dynamiques sans passer en php.
Merci d'avance pour votre aide !