11550 sujets

JavaScript, DOM et API Web HTML5

Bonjour, après avoir cherché sur le forum, je ne trouve pas de réponse à mon problème.

J'ai trois tables:
medecin: num_medecin, nom_medecin, ville_medecin
livreur: num_livreur, ville_medecin, num_grossiste
grossiste: num_grossiste, nom_grossiste

Je souhaiterai que lorsqu'on choisit un médecin, on obtient les livreurs ayant la même ville que le médecin sélectionné.
J'ai réussi à le faire.
Mais je voudrais ensuite, après avoir obtenus le livreur, il m'affiche le nom du grossiste associé (relié par le num_grossiste).

Voici mes codes:

demande2.php

<html>
<?php
	include ("./inclusion/fonction_connect.inc");
?>

<script type='text/javascript'>
	 
			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;
			}
			
			/**
			* Méthode qui sera appelée sur le click du bouton
			*/
			function go_med()
			{
				var xhr = getXhr();

				// On défini ce qu'on va faire quand on aura la réponse
				xhr.onreadystatechange = function()
				{
					// 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;
						// leselect = 3;
						// On se sert de innerHTML pour rajouter les options a la liste
						document.getElementById('livreur').innerHTML = leselect;
					}
				}
				
				// Ici on va voir comment faire du post
				xhr.open("POST","ajaxLivreur.php",true);
				// ne pas oublier ça pour le post
				
				xhr.setRequestHeader('Content-Type','application/x-www-form-urlencoded');

				// ne pas oublier de poster les arguments
				// ici, l'id du medecin
				
				sel = document.getElementById('medecin');
				idauteur = sel.options[sel.selectedIndex].value;
				
				xhr.send("idAuteur="+idauteur);
	
			}
			
			function go_livre()
			{
				var xhr2 = getXhr();

				// On défini ce qu'on va faire quand on aura la réponse
				xhr2.onreadystatechange = function()
				{
					// On ne fait quelque chose que si on a tout reçu et que le serveur est ok
					if(xhr2.readyState == 4 && xhr2.status == 200)
					{
						leselect = xhr2.responseText;
						// leselect = 3;
						// On se sert de innerHTML pour rajouter les options a la liste
						document.getElementById('grossiste').innerHTML = leselect;
					}
				}
				
				// Ici on va voir comment faire du post
				xhr2.open("POST","ajaxGrossiste.php",true);
				// ne pas oublier ça pour le post
				

				xhr2.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
				// ne pas oublier de poster les arguments
				// ici, l'id du medecin
				
				sel = document.getElementById('livreur');
				idlivre = sel.options[sel.selectedIndex].value;
				
				xhr2.send("idLivreur="+idlivre);
			}
			
		</script>
	</head>
	<body>
		<form name="frm" action="./enr_demande2.php" method="POST">
		
				<label>Médecin</label>
				<select name='medecin' id='medecin' onchange='go_med()'>
					<option value='-1'>Aucun</option>
					<?
						$connect=connect();
						$sql1="SELECT * FROM medecin ORDER BY nom_med ";
						$rs1=mysql_query($sql1 , $connect);
						while($row = mysql_fetch_assoc($rs1))
						{
							echo "<option value='".$row["num_med"]."'>".$row["nom_med"]. "</option>";
						}
					?>
				</select><br>
				
				<label>Test livrés par/où :</label>
				<div id='livreur' style='display:inline'>
				<select name='livreur' id='livreur' onchange='go_livre()' >
					<option value='-1'>Choisir un médecin d'abord</option>
					<?
						$connect=connect();
						$sql1="SELECT * FROM livreur ORDER BY nom_livreur ";
						$rs1=mysql_query($sql1 , $connect);
						while($row = mysql_fetch_assoc($rs1))
						{
							echo "<option value='".$row["num_livreur"]."'>".$row["nom_livreur"]. "</option>";
						}
					?>
				
				</select>
				</div><br>
				
				<label>Grossiste :</label>
				<div id='grossiste' style='display:inline'>
				<select name='grossiste'>
					<option value='-1'>Choisir un médecin d'abord</option>
				</select>
				</div><br>
				

<input type="submit" value="Valider" style="width: 100px"></body>
</form>
		
</html>


ajaxLivreur.php

<?php
	echo "<select name='livreur'>";
	$idmed=$_POST["idAuteur"];
	if(isset($idmed)){
		mysql_connect("localhost","root","root");
		mysql_select_db("stage");
		$ville = mysql_query("SELECT ville_med FROM medecin WHERE num_med=".$idmed." ORDER BY nom_med");
		$ville = mysql_fetch_object($ville);
		$ville = $ville->ville_med;
		$res = mysql_query('SELECT * FROM livreur WHERE ville_livreur="'.$ville.'" ORDER BY nom_livreur');
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["num_livreur"]."'>".$row["nom_livreur"]."</option>";
		}
	}
	echo "</select>";
?>


ajaxGrossiste.php

<?php
	echo "<select name='grossiste'>";
	$idlivreur=$_POST["idLivreur"];
	if(isset($idlivreur)){
		mysql_connect("localhost","root","root");
		mysql_select_db("stage");
		$ville = mysql_query("SELECT num_livreur FROM livreur WHERE num_livreur=".$idlivreur." ORDER BY nom_livreur");
		$ville = mysql_fetch_object($ville);
		$ville = $ville->num_livreur;
		$res = mysql_query('SELECT * FROM grossiste WHERE num_grossiste="'.$ville.'" ORDER BY nom_grossiste');
		while($row = mysql_fetch_assoc($res)){
			echo "<option value='".$row["num_grossiste"]."'>".$row["nom_grossiste"]."</option>";
		}
	}
	echo "</select>";
?>


Merci de votre aide!
Modifié par maxoup (29 Apr 2011 - 14:30)
Juste personne à ma connaissance n'est medium....
Donc ou est ton problème ? si tu fais alert(xhr2.responseText) qu'est ce qu'il y a d'écrit ?
PS : deux petits conseils :
1. si tu développes en utilisant ajax utilise httpFox qui est à mes yeux indispensable pour l'ajax.
2. utilises le or die sur tes requêtes mysql.
Modifié par Su4p (29 Apr 2011 - 14:25)