[PHP + SQL] Evenement OnChange et le PHP

Fermé
Marco31 - 20 août 2013 à 22:41
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 - 21 août 2013 à 13:55
Bonsoir à tous,

Me voilà confronter ce soir à un léger soucis !
Je vous expose celui-ci.

Dans un formulaire, suite à au choix d'un champ "select" en liste déroulante, je désire afficher une valeur qui changera en fonction de la valeur choisi dans le select.

La valeur à afficher est récupéré en bdd.

Quand je sélectionne j'ai bien une valeur qui s'affiche, cependant, elle n'est pas correcte.
De plus, si je reste sur la même page et que je sélectionne une autre valeur, la valeur à afficher va se rajouter à la suite.

J'ai oublié quelque chose je le sent ! Je ne maitrise absolument pas les évenement de ce type.

Voici mon code :

<select name="type" onchange="checkType(this.value)" >
			<option value=""> - Type - </option>
			<option value=""> -------- </option>
			<?
 
			$retour = mysql_query('SELECT * FROM categories ORDER BY nom')or die(mysql_error());
			while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news
			{
			
				$titre = htmlentities($donnees['nom']);

				$sel_prix = mysql_query("SELECT * FROM objet WHERE cat='".$titre."' ORDER BY prix DESC LIMIT 0,1")or die(mysql_error());
				$res_prix = mysql_fetch_array($sel_prix);
				$prixdeventemini = $res_prix['prix'];
				
				
				$search  = array('Plus');
				$replace = array('+');
				$categorie = str_replace($search, $replace, $titre);
			?>
			<option value="<?echo $titre; ?>"><?echo $categorie; ?></option>
			<?
			}
			?>
			<script type="text/javascript">
			<!--
			var i=0;
			function checkType(){
			if (i==0)
			document.getElementById('ventedecode').innerHTML+="<b>Prix de vente mini : ";
			document.getElementById('ventedecode').innerHTML+=" <?php echo $prixdeventemini; ?>";
			i=1;
			}
			//-->
			</script>
			</select>



Merci de l'aide que vous m'apporterez !

Amicalement, Yann.
A voir également:

3 réponses

Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
21 août 2013 à 00:30
Haha ! Ce qu'il te manque c'est Ajax !

C'est du javascript qui te permettra d'envoyer des requêtes POST ou GET à ton serveur en arrière-plan, et ainsi exécuter des scripts PHP sans recharger la page. Parce que tu as bien compris que tu ne pouvais pas exécuter une nouvelle requête une fois la page chargée.

T'as l'air d'être débrouillard, du coup je vais te laisser avec ça ;)
N'hésite pas si tu as besoin de précisions par la suite.


PS : Pour ta valeur qui reste affichée, efface tout contenu qui serait dans la balise avec l'id "ventedecode" avant d'en afficher une nouvelle :

if (i==0){
       document.getElementById('ventedecode').innerHTML = "";
       document.getElementById('ventedecode').innerHTML+="<b>Prix de vente mini : ";
	document.getElementById('ventedecode').innerHTML+=" <?php echo $prixdeventemini; ?>";
			i=1;
			}
0
Bonjour Anoen,

Merci d'avoir pris le temps de me lire et de répondre.

Débrouillard un peu oui, c'est qu'on m'a appris à chercher avant de crier à l'aide.

Jusque ici, seul le prix se rajouter en suivant. (pas le bon).
En rajoutant la ligne que tu me suggère c'est la ligne entière qui se rajoute mais toujours sans le bon prix.

Je vais regarder dans un premier temps du côté de l'ajax, bien que je soit mauvais de ce côté là !

Cependant, j'ai eu beau placé mon script dans ou or de ma boucle, le prix sélectionné n'est toujours pas le bon. Une idée de la provenance de ce problème ?
Mauvaise sélection ou tout simplement mauvais affichage ?

Je vais finir par y arriver !

En tout cas merci à vous.

Amicalement, Yann.
0
Anoen Messages postés 196 Date d'inscription mardi 10 novembre 2009 Statut Membre Dernière intervention 11 septembre 2013 25
21 août 2013 à 13:55
Cependant, j'ai eu beau placé mon script dans ou or de ma boucle, le prix sélectionné n'est toujours pas le bon. Une idée de la provenance de ce problème ?
Mauvaise sélection ou tout simplement mauvais affichage ?


Oui c'est ce que je tentais de t'expliquer. Le prix n'est pas le bon, car une fois que tu as chargé ta page, tu ne peux plus exécuter d'opérations via PHP, comme ta requête SQL (qui est censée récupérer le prix à chaque onChange si j'ai bien compris).

Sur le principe, une fois ta page chargée, le serveur ne fait plus rien. Tu lui as demandé d'afficher il affiche, c'est tout. Du coup tu ne peux plus récupérer quoique ce soit dans ta base de données (qui est une opération serveur).

C'est là que Ajax intervient. Il te permet d'à nouveau "discuter" avec le serveur après que le chargement soit terminé. De cette façon tu pourras demander au serveur d'aller piocher ce que tu veux dans la base de données.


Un autre moyen de faire ce que tu veux, ça serait de faire un echo de tous tes prix dans un tableau javascript. De cette manière tu n'aurais pas besoin d'utiliser Ajax. Mais le gros point noir de cette technique c'est que si ta base de données et assez conséquente le temps de chargement sera incroyablement long.

Bref, regarde comment fonctionne Ajax, je pense que c'est la meilleure manière de faire.
0