Récupération de données json

Petit nouveau ! | 8 Messages

29 mars 2015, 17:36

Bonjour,
J'ai un formulaire avec 3 listes déroulantes, afin d éviter de les recharger en php, je passe par json.
la 1ère choisie la marque de l imprimante, la 2ème le modèle et la 3eme la cartouche
(tout ça fonctionne bien) le problème est que le dernier résultat (le 3ème), je ne le veux pas dans une liste déroulante mais en ligne avec choix du type et nombre de cartouches pour l'utilisateur.
cela fait un moment que je suis dessus, mais pas moyen.
merci de votre aide, voici mon code

le formulaire php
<form method="post" action="#" id="fondsombre">				
		<table>
			<tr>
				<td ><h2><FONT color="orange">Veuillez sélectionner le consommable souhaité...</FONT></h2></td>
				<td>&nbsp;</td>
			</tr>
			<tr>
				<td class="note">
						<label>Marque : </label>					
					        <select id="marque">
								<option value=""> Marque...
							</select>
						<label>Modèle : </label>
							<select id="imprimante">
								<option value=""> Imprimante...
							</select>
						<label>Cartouches :</label>
							<select id="cartouche">
								<option value=""> Cartouche...	 	
							</select>
						<label>Nombre : </label>	
							<input type="hidden" name="id[]" value="<?php //echo $id ?>">
							<select name="nombre[]">
								<option value="0">0</option>
								<option value="1">1</option>
								<option value="2">2</option>
								<option value="3">3</option>	
							</select>
				</td>			
					
					<!--  Fin essai  -->		
				</td>
			</tr>	
		</table>
		<?php
			if(isset($_GET[$boutonAjout])){
				echo "<p><input type=\"submit\" name=\"ajout\" value=\"Ajouter au Panier\" /></p>"; 
			}	
		?>
	</form>
puis le fichier qui me crée le json
if(isset($_GET['go']) || isset($_GET['marque']) || isset($_GET['imprimante'])) {
	
		$json = array();
		
		if(isset($_GET['go'])) {
			// requête qui récupère les Marques
				$requete = "SELECT * FROM marque ORDER BY idmarque ASC";
			
			// exécution de la requête
				$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
			
			// Création de la liste
				while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
					// je remplis un tableau et mettant l'id en index
					$json[$donnees["idmarque"]][] = utf8_encode($donnees["marque"]);
				}
		}
		elseif(isset($_GET['marque'])) {
			// requête qui récupère les Imprimantes
				$requete = "SELECT * FROM imprimante WHERE idmarque = '".$_GET['marque']."' ORDER BY imprimante ASC";
			
			// exécution de la requête
				$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
			
			// Création de la liste
				while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
					// je remplis un tableau et mettant l'id en index
					$json[$donnees["idimprimante"]][] = utf8_encode($donnees["imprimante"]);
				}
		}
		elseif(isset($_GET['imprimante'])) {
			// requête qui récupère les cartouches
				$requete = "SELECT * FROM cartouche WHERE idimprimante = '".$_GET['imprimante']."' ORDER BY cartouche ASC";
			
			// exécution de la requête
				$resultat = $bdd->query($requete) or die(print_r($bdd->errorInfo()));
			
			// Création de la liste
				while($donnees = $resultat->fetch(PDO::FETCH_ASSOC)) {
			
			// je remplis un tableau et mettant l'id en index
					$json[$donnees["idcartouche"]][] = utf8_encode($donnees["couleur"]);
				}
		}
		$boutonAjout=true;
		 // envoi du résultat au success
			echo json_encode($json);
	}
j'espère avoir été assez clair dans mes explications.

Mammouth du PHP | 674 Messages

29 mars 2015, 18:05

il nous manque le code qui va appeler le fichier php sur le serveur, script php qui va retourner le json à du javascript qui va faire quelque chose.

Petit nouveau ! | 8 Messages

29 mars 2015, 18:49

oui, désolé j en avais oublié le script JS que voici :
// JavaScript Document
$(document).ready(function() {
	var $marque = $('#marque');
	var $imprimante = $('#imprimante');
	var $cartouche = $('#cartouche');

	// chargement de la liste de localité un
	$.ajax({
		url: 'pages/cartouches.php',
		data: 'go', // on envoie $_GET['go']
		dataType: 'json', // on veut un retour JSON
		success: function(json) {
			$.each(json, function(index, value) {
				// pour chaque noeud JSON
				// on ajoute l option dans la liste
				$('#marque').append('<option value="'+ index +'">'+ value +'</option>');
			});
		}
	});

	// à la sélection de la Marque dans la liste
	$marque.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de la Marque
		if(val != '') {
			$imprimante.empty(); // on vide la liste Imprimante
			$imprimante.append('<option value="">Imprimante</option>');
			$cartouche.empty(); // on vide la liste Imprimante
			$cartouche.append('<option value="">Couleur</option>');
			
			$.ajax({
				url: 'pages/cartouches.php',
				data: 'marque='+ val, // on envoie $_GET['marque']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$imprimante.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
			$imprimante.empty();
			$imprimante.append('<option value="">Imprimante</option>');
			$cartouche.empty(); // on vide la liste Imprimante
			$cartouche.append('<option value="">Couleur</option>');
		}
	});

	// à la sélection de l'imprimante dans la liste
	$imprimante.on('change', function() {
		var val = $(this).val(); // on récupère la valeur de l'Imprimante
		if(val != '') {
			$cartouche.empty(); // on vide la liste cartouche
			$cartouche.append('<option value="">couleur</option>');
			
			$.ajax({
				url: 'pages/cartouches.php',
				data: 'imprimante='+ val, // on envoie $_GET['imprimante']
				dataType: 'json',
				success: function(json) {
					$.each(json, function(index, value) {
						$cartouche.append('<option value="'+ index +'">'+ value +'</option>');
					});
				}
			});
		}
		else {
		$imprimante.empty();
		$imprimante.append('<option value="">Imprimante</option>');
		}
	});
});