質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

Q&A

解決済

2回答

189閲覧

phpでうまく結果が処理できないので解決方法を教えてください

syoma

総合スコア15

MacOS(OSX)

MacOSとは、Appleの開発していたGUI(グラフィカルユーザーインターフェース)を採用したオペレーションシステム(OS)です。Macintoshと共に、市場に出てGUIの普及に大きく貢献しました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

MAMP

Mac 上で WordPress などの動的ページのサイトが作れるように環境を構築するフリーソフト

0グッド

0クリップ

投稿2018/02/10 07:31

編集2018/02/10 07:55

こちらは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>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

この内容では、全体に手を入れないと動きません。

ざっとしか見ていませんが、いくつか指摘しておきます。
・エラーが出ていないのであれば、エラーを表示するところから始めてください。
・意図した POST になっているか、ブラウザの開発ツール等で確認しながら進めると良いです。
・関数は、単体で意図した動作をするか確かめて使用してください。
・関数の処理後の値を echo させたい場合は、関数内で echo しないで、retun で値を返した後、echo します。
・== を使った比較は、意図しない動作を引き起こします。初心者のうちは特に === を使って比較すると良いです。
・入力値と出力値がある場合は、最低限入力値の確認と出力時のエスケープをしてください。

投稿2018/02/10 08:08

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

echoのタイミングを考えてコードを修正することで
問題を解決することができました。

ありがとうございます。

投稿2018/02/11 11:43

syoma

総合スコア15

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問