Bonjour,
trois pages :
  1. main.php avec l'appel d'un fichier php (ci-dessous) pour y inclure du code
  2. getMetiers.php pour obtenier une liste de métiers
  3. traitement.php est le formulaire appelé par main.php pour traitement


main.php
Code php : 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
<?php
echo "<table width=100% class='SansBordures'>\n";
echo "<form name='traitement' method='post' action='./traitement.php' enctype='multipart/form-data'>\n";
 
echo "<tr><td></td>\n";
echo "<td align='Right'>Liste des métiers</td>\n";
echo "<td>\n";
echo "<div id='_metiers' style='display:inline'></div>\n";
echo "</td>\n";
echo "<td></td></tr>\n";
 
echo "<tr><td></td><td></td>\n";
echo "<td>".'<input tabindex=13 type="submit" style="WIDTH:100%;" value="Valider..." />'."</td>\n";
echo "<td></td></tr>\n";
 
echo "</form>\n"
echo "</table>\n"
?>
... bla bla bla

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
function getXhr ()
{
	var xhr = null;
	// Firefox et autres
	if( window.XMLHttpRequest )
		xhr = new XMLHttpRequest();
	// Internet Explorer
	else if( window.ActiveXObject )
	{
		try
		{
			xhr = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (e)
		{
			xhr = new ActiveXObject("Microsoft.XMLHTTP");
		}
	}
	else
	{
		alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
		xhr = false;
	}
	return xhr;
}
 
function updateMetiers ()
{
	var xhr = getXhr();
	xhr.onreadystatechange = function ()
	{
		if( xhr.readyState == 4 && xhr.status == 200 )
		{
			leselect = xhr.responseText;
			document.getElementById('_metiers').innerHTML = leselect;
		}
	}
	xhr.open("POST","getMetiers.php",true);
	xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
	sel = document.getElementById('sousProjet');
	sousProjet = sel.options[sel.selectedIndex].value;
	xhr.send("sousProjet="+sousProjet);
}
... bla bla bla
getMetiers.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
if( isset($_POST["sousProjet"]) )
{
	$mesMetiers = $_SESSION["p_moi"]->ListeMetiersSociete(0);
	if( count($mesMetiers) )
	{
		echo "<select id='metier_' name='metier_' style='WIDTH:100%;'>\n";
		foreach( $mesMetiers as $mesMetier )
			echo "<option value='$mesMetier[NIU]'>".$_SESSION["p_moi"]->EntiteesHtml($mesMetier["libelle"])."</option>\n";
		echo "</select>\n";
	}
}
?>

traitement.php
Code php : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<?php
if( isset($_POST) )
{
	... bla bla bla
	MailTo("monmail@gmail.com", "-A-", "_POSTmetier_='".$_POST["metier_"]."' intval(metier_)='".intval($_POST["metier_"])."'", "");
	... bla bla bla
}
?>

Tout se passe normalement, dans la page main.php je voit bien les métiers s'afficher, j'ai émis un courriel dans le corps du fichier getMetiers.php pour tracer et j'y passe bien.

Lorsque je valide le formulaire main.php, je ne retrouve, dans le fichier traitement.php, pas la variable $_POST['metier_'] ($_POST['metier']='' elle est donc vide !!!)

C'est le cas pour deux variables mises à jours via un appel AJAX alors que toutes les autres variables $_POST (non AJAX) sont bien visibles dans le fichier traitement.php.

Une idée ?

Par avance merci.