Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在复选框的多个值上计算第一个值_Php - Fatal编程技术网

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

Php 在复选框的多个值上计算第一个值,php,Php,我在试着做一个计算机化的订购系统。我的问题是如何计算复选框上的第一个值。复选框上的第二个值将发布在订单摘要上 一旦我检查了所有这三个,它将计算菜单的总量,并在订单摘要上显示所选菜单。但我不知道如何显示总金额 有人能告诉我如何计算复选框上第一个值的总数吗 <form method="post"> <input name='ts[]' type='checkbox' value='40 |Tosilog'/> Tosilog <br> &l

我在试着做一个计算机化的订购系统。我的问题是如何计算复选框上的第一个值。复选框上的第二个值将发布在订单摘要上

一旦我检查了所有这三个,它将计算菜单的总量,并在订单摘要上显示所选菜单。但我不知道如何显示总金额

有人能告诉我如何计算复选框上第一个值的总数吗

<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;

这可能更符合我的做法。脚本知道进入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;

Change
echo“$compute”进入
echo$compute。它仍然不起作用。但总数仍然是0:(谢谢您,先生。我会先研究这段代码。但是所有选中的复选框也会显示菜单(chiksilog、tosilog、porksilog)。但它不会显示缺少的内容。一旦我选中了“porksilog”和“tosilog”,它将显示在订单列表上,但不会显示“chiksilog”缺少。但它解决了我显示总金额的问题。您可以选择忽略该部分。