







|
[ Forums >> Webmasters >> Les autres langages >> Calcul d'un champs a partir d'autre ]
| > Calcul d'un champs a partir d'autre |
[ Posté par tim08 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-03-2010 à 13:13 | 2 messages ]
  |
 au fai j'ai une page qui a plusieurs formulaires qui se créent a partir d'une boucle for et dans chaque formulaire y'a un champs text qu'on appelle setup,monthly ,periode(champs select) et totalamount ce dernier se calcul en faisant cette (setup+monthly)*periode voici le code
<table width="30%" border="0" cellspacing="0" cellpadding="0" class="main" align="center">
<tr>
<td colspan="13" align="center" class="theader" nowrap> </td>
</tr>
<tr>
<td class="datatdt" align="center">City prefix</td>
<td class="datatdt" align="center">Cities</td>
<td class="datatdt" align="center">Setup</td>
<td class="datatdt" align="center">Monthly</td>
<td class="datatdt" align="center">Periode</td>
<td class="datatdt" align="center">Total Price</td>
<td class="datatdt"> </td>
</tr>
<?php for($i=0; $i<count($result2); $i++){
?>
<form name="order" action="order.php" method="post" >
<tr>
<td class="datatd" align="center" nowrap> <?php echo $result2[$i]['city_prefix']; ?> </td>
<td class="datatd" align="center" nowrap> <?php echo $result2[$i]['city_name']; ?> </td>
<td class="datatd" align="center" nowrap><input type="text" name="setup" value=" <?php echo sprintf("%01.2f",5.00*1*1.43); ?> " size="5" readonly></td>
<td class="datatd" align="center" nowrap><input type="text" name="monthly" value=" <?php echo sprintf("%01.2f",$result2[$i]['monthly']*1*1.43); ?> " size="5" readonly></td>
<td class="datatd" align="center" nowrap><select name="period" onChange="cal()"><option value="1">1</option>
<option value="3">3</option>
<option value="6">6</option>
<option value="12">12</option>
<option value="24">24</option>
</select>
</td>
<td class="datatd" align="center" nowrap><input type="text" name="totalamount" value=" <?php echo sprintf("%01.2f", ($result2[$i]['monthly']+5)*$currency*1.43); echo ' usd'; ?> " size="5" readonly></td>
<td class="datatdt" align="center">
<input type="submit" style="width: 70px" name="order_did" value="Order DID">
</td>
</tr>
<input type="hidden" name="uniq" value=" <?php echo $result2[$i]['uniq'];?> ">
</form>
<?php
$_SESSION['uniq'] = $result2[$i]['uniq'];
} ?>
</table>
//voici le code javascript
<script type="text/javascript">
function cal() {
var pl=document.order.period.value;
var mon=document.order.monthly.value;
var set=document.order.setup.value;
var resultat=Math.round(mon*pl*100)/100
document.order.totalamount.value=resultat;
}
</script>
|
|
  |

|
[ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-03-2010 à 15:36 | 4024 messages ]
  C'est quoi la question ?
logiquement ce serait setup + (monthly * periode)
<?php for($i=0; $i<count($result2); $i++){
?>
<form name="order" action="order.php" method="post" >
|
|
comme cela tu vas te retrouver avec n formulaires qui portent le même nom. Pas terrible
[Message édité par v1nce le 05-03-2010 à 15:37]
________________ V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites
Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html
| [ Posté par tim08 ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-03-2010 à 15:56 | 2 messages ]
  je sais j'ai du changé en méttant:
<?php for($i=0; $i<count($result2); $i++){
echo'<form name=order'.$i.' action=order.php method="post" >';
?>
|
|
mais comment on accéde au champs qui doivent intervenir dans le calcul!
quant on fait un select du nombre de période ca doit calculer automatiquement le cout total pour une lign de la liste.
Je l'ai déja fait pour un seul formulaire mais pas encore pour une liste de formulaire.
(montly+setup)*period
| [ Posté par v1nce ] [ Détails ] [ Contact ] [ Citer ]
[ Posté le 05-03-2010 à 18:20 | 4024 messages ]
  |
 Pour moi ce que tu veux n'est toujours pas clair.
Si tu veux que le calcul soit refait du côté client à l'aide de javascript à chaque modification du select alors le code suivant devrait t'aider.
Si c'est le php qui coince, merci d'expliquer précisément le problème.
<html>
<head>
<script>
function cal(select_reference)
{
select_reference.parentNode["totalamount"].value =
parseFloat(select_reference.parentNode["setup"].value) +
parseFloat(select_reference.parentNode["monthly"].value) *
parseFloat(select_reference.parentNode["period"].options[select_reference.parentNode["period"].selectedIndex].value);
var total = 0;
for (var i =0 ;i <document.forms.length;i++)
{
total = total + parseFloat(document.forms[i]["totalamount"].value);
}
document.getElementById("total").value=total;
}
</script>
</head>
<body>
<form name="foo1">
setup:<input type="text" name="setup" value="3" readonly><br/>
monthly:<input type="text" name="monthly" value="4" readonly><br/>
<select name="period" onChange="cal(this)">
<option value="1">1</option>
<option value="6" selected>6</option>
<option value="9" >9</option>
<option value="12" >12</option>
</select>
total:<input type="text" name="totalamount" value="7">
</form>
<form name="foo2">
setup:<input type="text" name="setup" value="8" readonly><br/>
monthly:<input type="text" name="monthly" value="4" readonly><br/>
<select name="period" onChange="cal(this)">
<option value="1">1</option>
<option value="6" selected>6</option>
<option value="9" >9</option>
<option value="12" >12</option>
</select>
total:<input type="text" name="totalamount" value="12">
</form>
total:<input id="total" type="text" value="19">
</body>
</html>
|
|
________________ V1nce
Si je les ai oubliés les bonjour, merci et au revoir sont implicites
Brevets logiciels : dites NON !
http://petition.eurolinux.org/index.html
http://swpat.ffii.org/index.fr.html
|
|
Services email :
  Vous devez vous identifier pour profiter des services par email du forum.
|

|