PHP后期计算

时间:2014-03-20 06:30:06

标签: php mysql forms

这是Multiple array insert into database的继续。

我已经完成了所有设置,但计算结束了我的工具。我是PHP的初学者,所以请耐心等待。

我现在正在试图弄清楚如何将每个项目的价格乘以有人放入字段的数字。请记住,并非所有字段都会被填写,因此只需忽略那些留空的字段。它不一定是像javascript可以实现的实时计算。只要有人点击计算,它就会在底部回显。这就是我目前设置表单的方式。

<form name="ore_form" action="?page=ore" method='POST' class='oref'> 

    <input type=text name=veld><br>
    <input type=text name=scord><br> 
    <input type=text name=pyrox><br> 
    <input type=text name=plag><br> 
    <input type=text name=omber><br> 
    <input type=text name=kern><br> 
    <input type=text name=jasp><br> 
    <input type=text name=hemo><br>
    <input type=text name=hedb><br> 
    <input type=text name=Gneiss><br> 
    <input type=text name=dark><br> 
    <input type=text name=crok><br> 
    <input type=text name=spodu><br> 
    <input type=text name=bist><br> 
    <input type=text name=arko><br> 
    <input type=text name=merc><br> 
    <input type=submit value="Calculate">  

我尝试将每个输入名称重命名为&ve;&#39; veld&#39;

$cut = mysqli_query($conn,"SELECT * FROM data");
while($row = mysqli_fetch_array($cut))
 {

    echo $row['Price'] * .7 * $_POST['veld'];


 } 

部分工作,但它只是乘以每个方框,并没有读取我的数字或没有乘以空白。

2 个答案:

答案 0 :(得分:0)

这是一个例子:

if(isset($_POST['calculate'])){

$cut = mysqli_query($conn,"SELECT * FROM data");
while($row = mysqli_fetch_array($cut))
 {

   if(empty($_POST['veld'])){

   $veldstorageprice=0;

   }
   else {

   $veldprice=$row['Price'];
   $veldstorageprice=$veldprice*.7;
   $veldstorageprice=$veldstorageprice*$_POST['veld']; /* Store the total price of Veldspar into this variable */
   echo "Price for Veldspar is ".$veldstorageprice."<br>";

   }

   if(empty($_POST['scord'])){

   $scordstorageprice=0;

   }
   else {

   $scordprice=$row['Price'];
   $scordstorageprice=$scordprice*.7;
   $scordstorageprice=$veldstorageprice*$_POST['scord']; /* Store the total price of Scordite into this variable */
   echo "Price for Scordite is ".$scordstorageprice."<br>";

   }    

   /* ALL YOU NEED TO DO IS COPY AND PASTE THIS CONDITION AND CHANGE THE POST VARIABLE TO THE CORRESPONDING ONE */

 } /* END OF WHILE LOOP */

/* After that loop, add all the stored variable prices */

$total=$veldstorageprice+$scordstorageprice;

echo "Total Price is ".$total;

}

<form name="ore_form" action="" method='POST' class='oref'> 

    <input type=number name=veld placeholder="Veldspar"><br>
    <input type=text name=scord placeholder="Scordite"><br>
    <input type=submit value="Calculate" name='calculate'>
    </form>

我所做的是,输出将位于文本框上方,而不是底部。我将输入类型 text 更改为 number

以下是一个示例屏幕截图: enter image description here

答案 1 :(得分:0)

您需要能够将select中的当前行与相应的输入变量进行匹配。看看你的另一个问题,我看到你使用typeID作为我认为是你的主键。

考虑到这一点而不是命名输入“veld”我会使用typeID作为数组索引

<input type=text name="product[p1230]" />
<input type=text name="product[p1228]" />

这样,所有输入都将作为一个名为'product'的数组在php中提交。然后,您可以使用行typeID列在产品数组中查找适当的值。我添加了alpha字符前缀'p'以确保创建关联数组而不是数字索引数组,但是,单独使用数字索引typeID可能不会有任何损害。

$cut = mysqli_query($conn,"SELECT * FROM data");
$prods = $_POST['product'];
$gtotal = 0;
while($row = mysqli_fetch_array($cut)) {
  $price = $row['Price'] * .7 * $prods['p'.$row['typeID']]);
  $gtotal += $price;
  echo $price;
} 
echo $gtotal;