2012-12-26 53 views
0

我试图制作COMPUTERIZED ORDERING SYSTEM。我的问题是我如何计算我的复选框的第一个值。复选框上的第二个值将发布在订单摘要中。在复选框上计算多个值的第一个值

一旦我检查了所有这三个,它将计算菜单总量并在订单摘要中显示所选菜单。但我无法弄清楚如何显示总金额。

任何人都可以指导我如何计算复选框上的第一个值的总数?

<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 " ; ?> 
+0

将'echo“$ compute”;'改为'echo $ compute;'。 – Vucko

+0

它仍然不起作用。仍然总数为0. :( – Miggy

回答

0

如果你得到一个复选框元素数组,并且它们是数字的,你可以使用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; 
+0

我会等你的代码先生!:) – Miggy

+0

谢谢先生。我会先研究这个代码。但所有选中的复选框也会显示菜单(chiksilog,tosilog,porksilog)。 但它不会显示缺少的东西。一旦我检查过“porksilog”和“Tosilog”,它将显示在订单列表中,但不会显示“chiksilog”丢失。但它解决了我的问题显示总金额。 – Miggy

+0

你可以选择离开那部分。 –

0

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;