こちらはinput.phpファイルで入力したデータを
confirm.phpファイルで処理し、結果を確認するというものですが
現在交通費の小計の合計を処理するテストをしており
そこでうまく計算されない事態に原因を突き止められずにいます。
そこで、どうすればうまく結果を出すことができるのか教えていただきたいと思います。
処理結果は何も入力されていない状態の時も入力されている状態の時も
数値が文字列の連結のような結果になってしまいます。
●入力フォームからPOSTで送信され
●値を受け取り
●メソッドで処理させます。
●その結果を表示させます。
●すると、totalの結果が文字列の連結状態のような結果になります。
例えば、何も入力していない状態の時は000000(本来は0+0+0+0+0+0で0)や
123123123000(本来は123+123+123+0+0+0で369)の結果となります。
php
1input.php 2 3<?php 4 5$department = array ("未設定", "営業部", "総務部", "開発部"); 6$transport = array ("未設定", "地下鉄", "JR在来線", "JR新幹線", "阪急", "京阪"); 7$way = array ("未設定","片道", "往復"); 8 9?> 10 11 12<!doctype html> 13<html> 14 <head> 15 <meta http-equiv="content-type" content="text/html charset=UTF-8"> 16 <link rel="stylesheet" type="text/css" href="input.css"> 17 </head> 18 <body> 19 <div class="bgc"> 20 <p class="title">出張旅費精算支援ツール</p> 21 <form name="system" action="confirm.php" method="post"> 22 <!-- 交通費についての精算テーブル --> 23 <table class="kotsu"> 24 <caption>交通費</caption> 25 <tr class="line1"> 26 <th>交通機関</th> 27 <th>単価</th> 28 <th>利用区分</th> 29 </tr> 30 <tr class="line2"> 31 <td> 32 <select name="transport1"> 33 <?php 34 foreach ( $transport as $value ) { 35 echo "<option value='", $value, "'>", $value, "</option>"; 36 } 37 ?> 38 </select> 39 </td> 40 <td><input type="text" name="k-price1"></td> 41 <td> 42 <select name="way1"> 43 <?php 44 foreach ( $way as $value ) { 45 echo "<option value='", $value, "'>", $value, "</option>"; 46 } 47 ?> 48 </select> 49 </td> 50 </tr> 51 </table> 52 <div class="saigo"> 53 <p class="kakunin"><input type="submit" value="確認"></p> 54 </div> 55 </form> 56 </div> 57 </body> 58</html>
php
1confirm.php 2 3<?php 4 5$transport = array($_POST["transport1"], $_POST["transport2"], $_POST["transport3"], $_POST["transport4"], $_POST["transport5"]); 6$kprice = array($_POST["k-price1"], $_POST["k-price2"], $_POST["k-price3"], $_POST["k-price4"], $_POST["k-price5"]); 7$way = array($_POST["way1"], $_POST["way2"], $_POST["way3"], $_POST["way4"], $_POST["way5"]); 8 9function multi($p, $n){ 10 $num=0; 11 if($p == ""){ 12 $num = 0; 13 }elseif($n == "未設定"){ 14 $num = $p * 0; 15 }elseif($n == "片道"){ 16 $num = $p * 1; 17 }elseif($n == "往復"){ 18 $num = $p * 2; 19 }else{ 20 $num = $p * $n; 21 } 22 echo $num; 23} 24 25function total($p, $n){ 26 $sum = 0; 27 $a = array(0, 1, 2, 3, 4); 28 foreach($a as $i){ 29 $sum += multi($p[$i], $n[$i]); 30 } 31 echo $sum; 32} 33 34?> 35 36 37<!doctype html> 38<html> 39 <head> 40 <meta http-equiv="content-type" content="text/html charset=UTF-8"> 41 <link rel="stylesheet" type="text/css" href="confirm.css"> 42 </head> 43 <body> 44 <div class="bgc"> 45 <p class="title">出張旅費精算支援ツール</p> 46 <form action="confirm.php" method="post"> 47 48 <!-- 交通費についての精算テーブル --> 49 <table class="kotsu"> 50 <caption>交通費</caption> 51 <tr class="line1"> 52 <th>交通機関</th> 53 <th>単価</th> 54 <th>利用区分</th> 55 <th>合計</th> 56 </tr> 57 <tr class="line2"> 58 <td><input type="text" name="transport1" value="<?php echo $transport[0]; ?>" readonly="readonly"></td> 59 <td><input type="text" name="k-price1" value="<?php echo $kprice[0]; ?>" readonly="readonly"></td> 60 <td><input type="text" name="way1" value="<?php echo $way[0]; ?>" readonly="readonly"></td> 61 <td><input type="text" name="k-subtotal1" value="<?php echo multi($kprice[0], $way[0]); ?>" readonly="readonly"></td> 62 </tr> 63 <tr class="line1"> 64 <td></td> 65 <td></td> 66 <td class="goke">合計</td> 67 <td><input type="text" name="total" value="<?php echo total($kprice, $way);?>" readonly="readonly"></td> 68 </tr> 69 </table> 70 </form> 71 </div> 72 </body> 73</html>
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。