2012-12-26 55 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;