Calcul PHP instantané

Eléphant du PHP | 372 Messages

25 août 2017, 19:18

Salut tout le monde,
Bon je suis sur un nouveau exercice.
Le but est de calculer de façon instantané une somme sans cliqué sur le moindre bouton ( je pense que du coup ce n'ai pas faisable en PHP mais bon je demande desfois que )

J'ai dans mon formulaire:

// Permet d'ajouter et d'enlever via le + et le moins pour régler la quantité
  <tr>
								<td>
									<span class="pe-7s-gift size-plus">
									<span class="item_cart"> Colis < 10Kg</span>
								</td>
								<td>
									<div class="numbers-row">
										<input type="text" value="0" id="colis10" name="colis10" class="qty2 form-control" value="<?php echo !empty($_POST['colis10']) ? $_POST['colis10'] : NULL;?>"  />
									<div class="inc button_inc">+</div><div class="dec button_inc">-</div>
                                    </div>
								</td>								<td>
									0%
								</td>
								<td>
									<strong>07,00 €</strong>
								</td>
							</tr>

// Par exemple colis10 vaut 07,00 €
J'aimerais que du coup si on met 2 via le plus du formulaire cela affiche automatiquement 14 et ainsi de suite

Merci à vous pour le coup de main

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 9782 Messages

25 août 2017, 21:26

Bonjour,

Effectivement ce n'est pas du PHP mais du javascript.
Si tu as toutes les données nécessaires à ton calcul dans ta page alors ça peut être du JS uniquement.

Si tu as des données stockées uniquement sur le serveur pour faire ton calcul alors il faut en javascript (ajax) que tu envoies une requête vers un script PHP qui fera le calcul.
Quand tout le reste a échoué, lisez le mode d'emploi...

Eléphant du PHP | 372 Messages

26 août 2017, 16:45

Alors j'ai trouvé ce que je voulais et l'ai mis en place en partie sauf un champ qui me pose problème.
sI Je met un input classique pour l'id x c'est à dire :
<input id="x" data-in="" type="text" />
ça marche mais si je met comme moi je souhaite ca ne calcul pas:
<div class="numbers-row">
										<input value="0" id="x" data-in="" name="courier" class="qty2 form-control" type="text" value="<?php echo !empty($_POST['courier']) ? $_POST['courier'] : NULL;?>"  />
									<div class="inc button_inc">+</div><div class="dec button_inc">-</div></div>
Mon script permettant d'éxécuter la multiplication
<script>
var x = document.getElementById("x");
var y = document.getElementById("y");
var d = document.getElementById("d");
var xstored = x.getAttribute("data-in");
var ystored = y.getAttribute("data-in");
setInterval(function(){
    if( x == document.activeElement ){
     var temp = x.value;
     if( xstored != temp ){
       xstored = temp;
       x.setAttribute("data-in",temp)
       calculate();
     }
    }
    if( y == document.activeElement ){
     var temp = y.value;
     if( ystored != temp ){
       ystored = temp;
       y.setAttribute("data-in",temp);
       calculate();
     }
    }
},50);

function calculate(){
 d.innerHTML = x.value * y.value;
}
x.onblur = calculate;
calculate();
</script>

Formulaire:
<form>
<td>
									<div class="numbers-row">
										<input value="0" id="x" data-in="" name="courier" class="qty2 form-control" type="text" value="<?php echo !empty($_POST['courier']) ? $_POST['courier'] : NULL;?>"  />
									<div class="inc button_inc">+</div><div class="dec button_inc">-</div></div>
								</td>
								<td>
                                
									<input id="y" data-in="" value="2" type="text" />
								</td>
								<td>
									<strong><div id="d"></div></strong>
								</td>
</form>