对复选框上的多个值计算第一个值


Compute 1st value on multiple values on a checkbox

我正在尝试制作一个电脑化订购系统。我的问题是如何计算我的复选框上的第一个值。复选框上的第二个值将发布在订单摘要中。

选中这三个选项后,它将计算菜单的总金额,并在订单汇总中显示所选菜单。但是我不知道如何显示总金额。

谁能指导我如何计算我的第一个值在复选框上的总数?

<form method="post">
    <input name='ts[]' type='checkbox' value='40 |Tosilog'/> Tosilog
    <br>
    <input name='cs[]' type='checkbox' value='40 |Chiksilog'/>Chiksilog
    <br>
    <input name='ps[]' type='checkbox' value='45 |Porksilog'/>Porksilog
    <br>
    <input type="submit" name="go" value= "Total">
</form>

<?php 
//tosilog
    $ts = $_POST['ts'];
    $value = explode("|",$ts[0]);
    echo $value[0];
    echo $value[1];

//chiksilog
    $cs = $_POST['cs'];
    $value = explode("|",$cs[0]);
    echo $value[0];
    echo $value[1];

//porksilog
    $ps = $_POST['ps'];
    $value = explode("|",$ps[0]);
    echo $value[0];
    echo $value[1];
?>
    <!-- compute for the 1st value on checkbox -->  
 <?php
            $ts=$_POST['ts[0]'];
            $cs=$_POST['cs[0]'];
            $ps=$_POST['ps[0]'];
?>

    <?php $compute = $ts[0] + $cs[0] + $ps[0];?>
    <?php echo "$compute " ; ?>

如果您要获得一个复选框元素数组,并且它们是数字,则可以使用array_sum()。我不确定我是否理解您建议的结构,但我将在这里给您一个基于现有表单结构的代码示例。然后我会再贴一篇文章,试图让你更容易理解。执行摘要:您不需要这个表单结构创建的所有变量。

<?php // RAY_temp_user193.php
error_reporting(E_ALL);
$total  = 0;
$inputs = array();
$errors = array();
if (!empty($_POST))
{
    if (!empty($_POST['ts']))
    {
        foreach ($_POST['ts'] as $ts)
        {
            $inputs[] = current(explode(' |', $ts));
        }
    }
    else
    {
        $errors[] = 'Tosilog';
    }
    if (!empty($_POST['cs']))
    {
        foreach ($_POST['cs'] as $cs)
        {
            $inputs[] = current(explode(' |', $cs));
        }
    }
    else
    {
        $errors[] = 'Chiksilog';
    }
    if (!empty($_POST['ps']))
    {
        foreach ($_POST['ps'] as $ps)
        {
            $inputs[] = current(explode(' |', $ps));
        }
    }
    else
    {
        $errors[] = 'Porksilog';
    }
    // IF ERRORS
    if (!empty($errors))
    {
        echo 'UNABLE TO PRINT COMPLETE TOTAL.  MISSING: ' . implode(',', $errors);
    }
    $total = array_sum($inputs);
    if ($total) echo "<br/>TOTAL: $total <br/>" . PHP_EOL;
// END OF THE ACTION SCRIPT
}
// CREATE THE FORM
$form = <<<ENDFORM
<form method="post">
<input name='ts[]' type='checkbox' value='40 |Tosilog'/> Tosilog
<br>
<input name='cs[]' type='checkbox' value='40 |Chiksilog'/>Chiksilog
<br>
<input name='ps[]' type='checkbox' value='45 |Porksilog'/>Porksilog
<br>
<input type="submit" value= "Total">
</form>
ENDFORM;
echo $form;

参见http://www.laprbass.com/RAY_temp_miggy.php
这可能更符合我的做法。脚本知道HTML中包含什么内容,并且确切地知道POST请求中应该包含什么内容。很容易添加或删除不同的输入。这些类型的输入通常来自数据库表。

<?php // RAY_temp_miggy.php
error_reporting(E_ALL);
$total  = 0;
// EXPECTED INPUTS
$inputs = array
( 'Tosilog'   => 40
, 'Chiksilog' => 40
, 'Porksilog' => 45
)
;
if (!empty($_POST))
{
    // ACTIVATE THIS TO SEE WHAT WAS SUBMITTED
    // var_dump($_POST);
    // SUM OF THE ELEMENTS
    $total = array_sum($_POST);
    echo "TOTAL: $total";
    // SUM OF THE EXPECTED INPUTS
    $expect = array_sum($inputs);
    if ($total != $expect) echo " BUT THERE MAY BE INCOMPLETE INPUTS!";
// END OF THE ACTION SCRIPT
}
// CREATE THE FORM
$checkboxes = NULL;
foreach ($inputs as $name => $value)
{
    $checkboxes
    .= '<input name="'
    . $name
    . '" type="checkbox" value="'
    . $value
    . '" />'
    . $name
    . '<br/>'
    . PHP_EOL
    ;
}
$form = <<<ENDFORM
<form method="post">
$checkboxes
<input type="submit" value= "Total">
</form>
ENDFORM;
echo $form;