Listes liées [PhP-Ajax]

Résolu/Fermé
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 25 mars 2010 à 13:20
azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 - 25 mars 2010 à 13:22
Le code initial :

		echo '			<SELECT name="select_date_creation" id="select_date_creation" style="display:none" onChange="go();"> ';
		echo '				<OPTION selected="selected" onclick="redirection('.$defaut.",".$defaut.')">Selectionnez une date</OPTION>';
						while( ($ligne_creation_dates = mysql_fetch_assoc($req_creation_dates)) !== false)
						{
							echo "
							<OPTION value='".$ligne_creation_dates['id_date']."' onclick='redirection(".$ligne_creation_dates['id_date'].",".$defaut.")'>".$ligne_creation_dates['jour']." ".$ligne_creation_dates['formate']."</OPTION>";
						}
		echo '			</SELECT>';

		echo "			<div id='div_heure_creation'>";
		echo "			<SELECT name='select_heure_creation' id='select_heure_creation'  style='display:none'>";
		echo '				<OPTION  selected="selected" value="-1">Selectionnez un créneau</OPTION>';
		echo "			</SELECT>";
		echo "			</div>";



Le code AJAX :

	function go()
	{
		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;
				// On se sert de innerHTML pour rajouter les options a la liste
					document.getElementById('div_heure_creation').innerHTML = leselect;
			}
		}
		// Ici on va voir comment faire du post
		xhr.open("POST","ajax_heure_creation.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 de la date

		// Si Date selectionné mais pas Heure
			sel = document.getElementById('select_date_creation');
			select_date_creation = sel.options[sel.selectedIndex].value;
			// On envoit que la date en POST
			var data = "select_date_creation="+select_date_creation;
			xhr.send(data);
	}
	
	function redirection(date_id, heure_id)
	{
		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;
				// On se sert de innerHTML pour rajouter les options a la liste
					document.getElementById('').innerHTML = leselect;
			}
		}
		// Ici on va voir comment faire du post
		xhr.open("POST","ajax_heure_creation.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 produit

		var data = "select_date_creation="+date_id+"&select_heure_creation="+heure_id;
		xhr.send(data);
	}


Et enfin, le code de remplacement.

<?php

	// S'il existe une heure non vide envoyé en POST
	if(isset($_POST["select_date_creation"]) && !empty($_POST["select_date_creation"]))
	{
		
		$date_selectionnee = $_POST["select_date_creation"];
	
		require_once 'singleton.php';
		
		// Ecriture du Select
		echo "<select id='select_heure_creation' name='select_heure_creation'>";
		// Option par defaut : Non du Nom de la date choisie !
		$sans_heure = -2;
		echo "<option value='' onclick='redirection(".$_POST['select_date_creation'].",".$sans_heure.")'>Choisissez un créneau</option>";

		// Selection des crénaux ou l'on peut créer un enregistrement.
		$sql = Connexion::requete("SELECT *
								   FROM entree
								   WHERE ent_id_date = '".$date_selectionnee."'
								   
								   AND ent_id NOT IN ( SELECT enr_ent_id
													   FROM enreg
													   WHERE util_id = 18
													   AND enr_date = '".$date_selectionnee."')");
		
		// Boucle écrivant les options !
		while( ($ligne_heure_creation = mysql_fetch_assoc($sql)) !== false )
		{
			$heure_deb = $ligne_heure_creation['ent_heure_deb'];
			$heure_fin = $ligne_heure_creation['ent_heure_fin'];
			
			echo "<OPTION value='".$ligne['ent_id']."' onclick='redirection(".$date_selectionnee.",".$sans_heure.")'>De".$heure_deb." à ".$heure_fin."</OPTION>";
		}
		
		echo "</select>";
	}
	
	else
	{
		$defaut = -1;
		// Selection de la Categorie
		echo "			<SELECT name='select_heure_creation' id='select_heure_creation' style='display:none'>";
		echo '				<OPTION  selected="selected" value="-1" onclick="redirection('.$defaut.','.$defaut.')">Selectionnez un créneau</OPTION>';
		echo "			</SELECT>";

	}

?>


Je ne comprends vraiment pas pourquoi ca marche pas... Quelqu'un aurait-il une idée ?
A voir également:

1 réponse

azerty0 Messages postés 1274 Date d'inscription samedi 27 octobre 2007 Statut Membre Dernière intervention 5 septembre 2013 75
25 mars 2010 à 13:22
Pfouah, c'est trop laid comme ça, si qqn est opé, demandez moi, jvous enverrai les codes...
0