AJAX/php/HTML et Formulaire ! Récupération de valeur !

Eléphanteau du PHP | 10 Messages

10 févr. 2011, 17:09

Bonjour !

Je suis nouveau sur le forum ! Je suis bien-heureux de l'avoir trouvé !

Je vous explique mon problème :

Je suis sur une page ou un utilisateur doit sélectionner une liste de client ainsi que des contacts correspondants !

Pour le moment j'ai crée une Select (en HTML) pour afficher ma liste de client !

Image

Lorsque je choisi un client, je génère un autre Select contenant les contacts correspondants au client avec AJAX !

Image

Ensuite lorsque je sélectionne un client, je souhaiterai qu'en cliquant sur un bouton, ce dernier s'ajoute à une liste...

Mais je ne sais pas vraiment comment faire !

Voici mon code :
<h2> Destinataire </h2>
<table>
<form action="./session_devis.php?action=destinataire" method="post">
	<tr>
	<td><select id="client" size="30" onchange='go();'>
		<?php
				$reponse = $bdd->query("SELECT * FROM client ORDER BY NUM_CLIENT" );
				$nbr_client = $reponse->rowCount();
	
				//affichage de la liste des clients !
				while($donnees = $reponse->fetch())
				{?>
						<option value="<?php echo $donnees['NUM_CLIENT']; ?>"><?php echo $donnees['NOM'] ?></option>
				<?php
				}?>
	</select></td>
	
	<td><div id='div_contact'><select size="30"></select></div></td>
	<td><input type="button" onclick="add_dest()" value="Ajouter" /></td>
	<td><select name="dest" size="30"></select>
	</tr>
<input type="submit" name="dest" value="Suivant" />
</form>
</table>
Je sais, coder en tableau c'est moche, mais la flème de faire du CSS

et voici le code JAVA :
<script>
function getXhr()
{
	var xhr = null; 
	if(window.XMLHttpRequest) // Firefox et autres
	   xhr = new XMLHttpRequest(); 
	else if(window.ActiveXObject){ // Internet Explorer 
	   try {
				xhr = new ActiveXObject("Msxml2.XMLHTTP");
			} catch (e) {
				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;
}
		
function go()
{
	var xhr = getXhr();
	// On défini ce qu'on va faire quand on aura la réponse
	xhr.onreadystatechange = 
		function test()
		{
			// 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)
			{
				var leselect = xhr.responseText;
				//On se sert de innerHTML pour rajouter les options a la liste
				document.getElementById('div_contact').innerHTML = leselect;
			}
		}
	xhr.open("GET","../ajax/ajax_maj_contact.php?val=" + document.getElementById('client').value ,true);
	xhr.send(null);
}
</script>
Et enfin, le code php appelé par AJAX :
<?php
	echo "<select id='client' size='30'>";	
		include("../connexion/bdd.php");	
		$reponse = $bdd->query("SELECT * FROM contact WHERE NUM_CLIENT = '" . $_GET['val'] . "'");
		while($donnees = $reponse->fetch())
		{
			echo "<option value='" . $donnees['NUM_CLIENT'] . "'>" . $donnees['NOM'] . "</option>";
		}
	echo "</select>";
?>
Merci pour vos futures réponses !

ViPHP
AB
ViPHP | 5818 Messages

10 févr. 2011, 19:03

Lorsque je choisi un client, je génère un autre Select contenant les contacts correspondants au client avec AJAX !

Ensuite lorsque je sélectionne un client, je souhaiterai qu'en cliquant sur un bouton, ce dernier s'ajoute à une liste...

Mais je ne sais pas vraiment comment faire !

Merci pour vos futures réponses !
A quelle liste ? pourquoi faire ? il faut nous en dire un peu plus sur ce que tu veux faire.

Sinon dans ton code "<select id='client' size='30'>" il manque l'attribut "name" qui indique le nom du champ que tu pourras récupérer (par exemple : name="client")

Eléphanteau du PHP | 10 Messages

11 févr. 2011, 09:16

Merci pour ta réponse !

Je vais corrigé les attributs, c'est vrai que j'oublie de mettre les "name"...

En fait je voudrais récupérer une liste (dans un tableau ?) du type :
array{
[1] => "client" = "NUM_CLIENT" ; "contact" = "NUM_CONTACT";
[2] => "client" = "Num_CLIENT"; "contact" = "NUM_CONTACT"; ...
}

Et ce pour chaque contact sélectionner ! Afin ensuite de pouvoir insérer ce tableau dans une variable de session !

ViPHP
AB
ViPHP | 5818 Messages

11 févr. 2011, 20:42

Et bien maintenant regarde le contenu du post quand tu envoies le formulaire
<?php 
echo '<pre>';
print_r($_POST);
echo '</pre>';
?>
Tu devrais avoir les éléments pour constituer ton tableau.

Eléphanteau du PHP | 10 Messages

14 févr. 2011, 11:09

Ok !
Merci !

Simon G
Invité n'ayant pas de compte PHPfrance

07 juin 2012, 15:08

Ce que tu as fait m'intéresse beaucoup, c'est plus ergonomique que ce que j'ai fait, J'aimerais savoir si tu peux enlever un client de ta liste de droite sans recommencer ta sélection au début?