2012-12-15 42 views
0

所以我有一個醫院收費的MySQL表。我的程序目前只能獲得檢查過程的價格。但是現在,我還想在檢查過程中獲取過程名稱。從數組複選框中的兩個值

transaction.php

while($row = mysql_fetch_array($result)) 
{ 
    echo ' <tr> <td>'.$row[0].'</td> <td>'.$row[1].'</td><td>'.$row[2].'</td>'; 
    $procedure=$row['procedure']; 
    echo '<td><input type="checkbox" name="er[]" value="$price."|".$procedure"></td>'; 
    echo "</tr>"; 
} 
echo '</table>'; 

computation.php

<?php 
     if(isset($_POST['er'])) 
     { 
     $ercharge=$_POST['er']; 
     $totalofer = array_sum($ercharge); 
     } 
     if(isset($_POST['ultrasound'])) 
     { 
     $x=$_POST['ultrasound']; 
     $totalofultrasound = array_sum($x); 
     } 
     if(isset($_POST['confinement'])) 
     { 
     $y=$_POST['confinement']; 
     $totalofconfinement = array_sum($y); 
     } 
     $total = $totalofer + $totalofultrasound + $totalofconfinement; 
     $p = explode("|", $ercharge); 
     echo $p; 
     echo $total; 
?> 

只獲取行的價格。值屬性可以有兩個值嗎?我不能只做另一個複選框,因爲這是不合適的。

編輯:爆炸功能不起作用。它說:警告:爆炸()預計參數2爲字符串數組C中給出:\ XAMPP \ htdocs中第18行

+1

這是一個數組,因爲它是如何提交的: - 是否有多個複選框, []「?如果只有一個,請將其更改爲「呃」,否則您將需要單步執行數組並分別處理每個數組。 –

+0

在相同參數下傳遞兩個值是一種不好的做法,如果您想要做這樣的事情,那麼您的設計可能不太好,而且很有可能會導致將來出現維護問題。 – alfasin

+0

價格是否有變化?如果不是,傳遞過程的ID會更簡單,然後檢索calculate.php頁面上的過程和價格信息。另外,爆炸返回一個數組。 –

回答

2

你應該在HTML分割你的參數\ computation.php:

echo '<td><input type="checkbox" name="checked[$row_index][]" value="1">'; 
    echo '<input type="hidden" name="prices[$row_index][]" value="$price">'; 
    echo '<input type="hidden" name="procedures[$row_index][]" value="$procedure"></td>'; 

其中$row_index在每一行上遞增(tr標記)

順便提一下,爆炸將在呃數組的項目上工作,而不是在數組本身上。嘗試:

foreach ($er as $item) { 
    var_dump(explode("|", $item)); 
} 
+0

好的,我將它改爲: 'echo'​​'; \t \t \t echo''; \t \t \t echo「」;' 現在計算總數。所以價格工作正常。問題是過程名稱。它只顯示:「陣列」。 – user1551672

1

我不知道我理解你的問題,但你不能設置你的複選框的名稱attrtibute到過程的名稱?看起來您正在將該名稱設置爲er []數組,但您以後從未參考。

+0

我不能這樣做,因爲它在一個循環,並從MySQL表中檢索。我將er []引用到了comput.php,因此如果表單中有許多檢查,它可以輸出多個值。 – user1551672