rss
Rechercher : dans
Par : Pertinence Date Nom d'utilisateur
Statut : Résolu

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

Posté par tximiti, le vendredi 29 juin 2007 à 17:03:47
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",tr­ue); // 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-f­orm-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>
Configuration: Windows XP
Firefox 2.0.0.4
Répondre à tximiti  Signaler ce message aux modérateurs Aller au dernier message

1


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
zefoots, le vendredi 29 juin 2007 à 23:26:30
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 ;-)
Répondre à zefoots

2


  • Ce message vous semble utile, votez !
  • Signaler ce message aux modérateurs
 tximiti, le mercredi 11 juillet 2007 à 11:08:05
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 ;-)
Répondre à tximiti
Logiciels pertinents trouvés dans les téléchargements
Télécharger Ma Liste d'Achats  2.01Ma Liste d'Achats - Faire les courses est une tâche bien compliquée pour les non initiés. Ma liste d'achats est comme son nom l'indique, un...Catégorie: Environnement de travail
Licence: Freeware/gratuit
Télécharger SpaceTime   1.0SpaceTime - Pour plus de fluidité et d'ergonomie dans vos recherches sur le web, en mode interactif, c'est encore mieux. Space Time est...Catégorie: Internet
Licence: Freeware/gratuit
Télécharger PHP Edit 0.6PHP Edit - PHPEdit est un environnement de développement intégré (IDE) sous Windows pour le langage PHP. Il offre un grand nombre de...Catégorie: PHP
Licence: Freeware/gratuit
Télécharger PSPad 4.5.2PSPad - PSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS,...Catégorie: Développement
Licence: Freeware/gratuit
Plus de logiciels gratuits sur « [PHP] Récupérer item liste déroulante »