[PHP] Récupérer item liste déroulante

Résolu/Fermé
tximiti Messages postés 27 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 18 août 2007 - 29 juin 2007 à 17:03
tximiti Messages postés 27 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 18 août 2007 - 11 juil. 2007 à 11:08
Alors tout d'abord rebonjour, ça faisait longtemps....Je crois depuis hier !
J'ai réussi à faire mes listes déroulantes en AJAX et elles sont bien envoyées par mail grâce à mon formulaire. Mon souci ?
Lors de la réception de mon formulaire je reçois l'identifiant de mes listes déroulantes alors que je voudrais voir apparaître l'item.
Je ne peux pas enlever l'identifiant, il me sert pour passer les variables en AJAX.
Je sais il y a la solution de mettre mon item dans ma balise option à la suite de l'identifiant, ça ça fonctionne.

Alors j'ai plusieurs solutions :
- soit modifier l'identifiant par le nom, mais dans ce cas il faut que je change la clef étrangère dans ma table date car c'est l'identifiant qui fait le lien entre les deux tables, et je ne préfère aps
- soit cacher l'identifiant à la réception, mais j'ai un doute sur la faisabilité

J'ai essayé d'autres solutions en me disant que comme je réceptionne l'identifiant, il me reste plus qu'à le remplacer par le nom:
- mettre un onclick sur le select+ focntions qui va avec
- tableau array (mais je n'y arrive pas)
- foreach ($trans as $k=>$v)
$trans[$k]= "&#".ord($k).";";

Mais ça ne focntionne pas... Pouvez-vous m'indiquer quelle solution à privilégier et m'indiquer comment procéder.

Je vous joins mes fichiers :

formulaire.php :
<form method="POST" name="formulaire" action="inscription.php" onsubmit="return validateForm(this)">
<div id="titreForm">Inscription à une formation</div>
<div id="corpForm">
	<fieldset id="formation">
		<legend>Formation</legend>
			<br />
			<p>
				<label for="forma" title="Veuillez sélectionner la formation souhaitée" class="oblig">*Formation souhaitée :</label>
				 <? include 'liste-formations.php'; ?>
			</p>
			<p>
				<label for="date_forma" title="Veuillez sléectionner la date souhaitée" class="oblig">*Date:</label>
				 <span id="date_form" style='display:inline'>
				 <? include 'liste-dates.php'; ?>
			
				 </span>
			</p>
			<p>	
				  <label for="ref_forma" title="Veuillez saisir le lieu souhaité" class="oblig">Lieu :</label>
				  <span id="lieu_form" style='display:inline'>
    			<? include 'liste-lieux.php'; ?>
				 </span>
			</p>

	</fieldset>


La page pour la liste déroulante liste-formations.php :
<select name='intitule_formation' id='formations' onchange='getDatte()'>
<option value='-1'>Formations</option>
<?php
$sql = "SELECT id_formations, nom_formations
		FROM formation
		ORDER BY nom_formations";
$res = mysql_query ($sql) or die ("Exécution de la requête impossible");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row['id_formations']." ".$row['nom_formations']." '>". htmlentities($row["nom_formations"]) ."</option>";
}//
?>
</select>


la page listeDeroulanteAJAX.php :
function getXhr(){
                var xhr = null; 
				if(window.XMLHttpRequest) // On essaye de créer un objet XmlHTTPRequest pour Firefox et autres
				   xhr = new XMLHttpRequest(); 
				else if(window.ActiveXObject){ // Internet Explorer 
				   try {  // Microsoft utilise une autre technique, on tente de créer un objet ActiveX
			                xhr = new ActiveXObject("Msxml2.XMLHTTP");
			            } catch (e) { // On teste une autre méthode si la première n'a pas marché
			                xhr = new ActiveXObject("Microsoft.XMLHTTP");
			            }
				}
				else { // XMLHttpRequest non supporté par le navigateur 
				   alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest..."); 
				   xhr = false; 
				} 
                                return xhr;
			}

			
			///// relation formation-date //////
			// Méthode qui sera appelée sur le click du bouton
			function getDatte(){
				var xhr = getXhr();
				// On défini ce qu'on va faire quand on aura la réponse
				// On guette les changements d'état de l'objet
				xhr.onreadystatechange = function(){ //instructions de traitement de la réponse
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr.readyState == 4 && xhr.status == 200){
						leselect = xhr.responseText;  // ResponseText = Réponse de la requête
						// On se sert de innerHTML pour rajouter les options a la liste en utilisant l'id du span 
						document.getElementById('date_form').innerHTML = leselect; // Traitement de la réponse, on met à jour le span 
					}
				}

				// Envoi de la requête avec la méthode post
				xhr.open("POST","liste-dates.php",true); // Préparation d'une requête asynchrone avec la méthode POST
				// Ne pas oublier ça pour le post, la méthode $_POST passe par l'entête HTML de la requête,(Header), envoi du header et des paramètres
				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=iso-8859-1'); 
				// Ecriture de la réponse
				// Ici, l'id du select de la formation
				sel = document.getElementById('formations'); 
				idForma = sel.options[sel.selectedIndex].value;// On récupère la valeur sélectionnée dans la liste déroulante
				// le travail est terminé
				xhr.send("id_formations="+idForma); // On définie l'url à appeler en passant cette valeur
			}



enfin une partie de la page inscription.php qui valide le formulaire :
<?php
$formulaireFormation = $_POST['intitule_formation'];
$formulaireRefFormation = $_POST['reference_formation'];
$formulaireDateFormation = $_POST['date_formation'];
$formulaireLieuFormation = $_POST['lieu_formation'];

// Dans l'exemple on va juste vérifier que la formation, sa date, le titre et le nom du responsable, la société, le téléphone et le mail ne soient pas vides.
$message = "";

if (isset($_POST['intitule_formation']) && ($_POST['intitule_formation'] != ""))
{ $formulaireFormation = $_POST['intitule_formation'];
}
else
{ $message = "<p>Veuillez saisir la formation souhaitée.</p>";  }

if (isset($_POST['date_formation']) && ($_POST['date_formation'] != ""))
{ $formulaireDateFormation = $_POST['date_formation']; }
else
{ $message = "<p>Veuillez saisir la date de la formation sélectionnée.</p>";  }

if (isset($_POST['lieu_formation']) && ($_POST['lieu_formation'] != ""))
{ $formulaireLieuFormation = $_POST['lieu_formation']; }
else
{ $formulaireLieuFormation = "";}


// Si la variable message est vide,alors
if ($message == "") {

	//on converti les caractères HTML du commentaire
	$formulaireCommentaire = htmlentities($formulaireCommentaire);
	
	//mise en forme du mail
	$destinataire = "aurel.beaujault@gmail.com";
	$sujet = "Je souhaite m'inscrire à une formation";
	$from  = "From:$formulaireSociete \n";
	$from .= "MIME-version: 1.0 \n";
	$from .= "Content-type: text/html; charset= iso-8859-1 \n";
	$message =   
	"<table>
		<tr>
			<td>
				Formation :
			</td>
			<td>
				$formulaireFormation
			</td>
		</tr>
A voir également:

2 réponses

zefoots Messages postés 146 Date d'inscription samedi 9 juin 2007 Statut Membre Dernière intervention 11 septembre 2007 62
29 juin 2007 à 23:26
Au lieu de copier-coller tes scripts tels quels, tu pourais pas essayer de les simplifier afin de ne nous montrer que ce qui te pose problème ?

Il faut que tu comprennes que pour toi cela semble simple car tu as passé du temps dessus. Mais ce n'est pas notre cas ...

Je crois que si tu souhaites que les gens t'aident, il faut les aider à t'aider ;-)
0
tximiti Messages postés 27 Date d'inscription vendredi 3 novembre 2006 Statut Membre Dernière intervention 18 août 2007
11 juil. 2007 à 11:08
Désolée c'est vrai je n'avais pas fait attention, je suis tellement dedans. Depuis je suis passée sur autre chose. Pour ce cas, je me suis simplifiée la vie, dans value de mon select pour la liste déroulante des formations, j'ai passé la variable pour le nom et la référence de ma formation.
<select name='intitule_formation' id='formations' onfocus="this.className='focus';" onblur="this.className='normal';" onchange='getDatte()'>
<option value='-1'>Formations</option>
<?php
$sql = "SELECT id_formations, nom_formations, ref_formations
		FROM formation
		ORDER BY nom_formations";
$res = mysql_query ($sql) or die ("Exécution de la requête impossible");
while($row = mysql_fetch_assoc($res)){
echo "<option value='".$row['id_formations']." ".$row['nom_formations']." ".$row['ref_formations']." '>". htmlentities($row["nom_formations"]) ."</option>";
}//
?>
</select>

Et encore une fois désolée ;-)
0