人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

phpについて質問です。
phpの見積りフォームを作成しています。
(mySqlと連動した見積りフォームは未だ挑戦中ですが取り急ぎ下記の見積りが作りたいです。)
ちゃんと理解が出来ていないようで流れがうまくつくれません。

フォーム内に入れた情報で金額を自動計算する様に作成したいです。

フォームの内容
縦: cm × 横: cm
加工1:プルダウンメニューで あり・なしを選択
加工2:プルダウンメニューで あり・なしを選択
加工3:プルダウンメニューで あり・なしを選択

phpで計算

縦×横×(1平行cmあたりの)金額=□□円
加工1+加工2+加工3=●●円

□□円+●●円=
合計)△△円

面積×(1平行cmあたりの)金額+加工1+加工2+加工3の簡単な計算なので
phpのフォーム内にすべて記述するつもりです。

よろしくお願いいたします。

●質問者: kasai-de_eb
●カテゴリ:インターネット ウェブ制作
✍キーワード:Cm MySQL PHP 作成 自動
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● ホーエンハイム
●35ポイント ベストアンサー

どのようなフォームを作っているのか分からないのですが、流れとしては以下のような感じでいかがでしょう。

なお、エラーチェックは一切していません。

<?php
$unit = 100; //1平方センチ当たりの価格
$proc1 = 200; //加工1の価格
$proc2 = 300; //加工2の価格
$proc3 = 400; //加工3の価格

$res1 = '';
$res2 = '';
$res3 = '';

//入力フォーム
if (! isset($_POST['calc'])) {
 form1(basename($_SERVER['SCRIPT_NAME']);
//見積計算+見積書表示
} else {
 $res1 = $_POST['length'] * $_POST['width'] * $unit;
 $res2 = 0;
 if ($_POST['proc1'] == 'TRUE') $res2 += $proc1;
 if ($_POST['proc2'] == 'TRUE') $res2 += $proc2;
 if ($_POST['proc3'] == 'TRUE') $res2 += $proc3;
 $res3 = $res1 + $res2;
 form2($res1, $res2, $res3);
}

//入力フォーム
function form1($url) {
echo <<< EOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
</head>
<body>
<form action="{$url}" method="post">
縦:<input type="text" name="length" />cm × 横:<input type="text" name="width" />cm<br />
加工1<select name="proc1">
<option value="TRUE">あり</option>
<option value="FALSE">なし</option>
</select>
加工2<select name="proc2">
<option value="TRUE">あり</option>
<option value="FALSE">なし</option>
</select>
加工3<select name="proc3">
<option value="TRUE">あり</option>
<option value="FALSE">なし</option>
</select>
<br />
<input type="submit" name="calc" value="見積計算" />
</form>
</body>

EOT;
}

//見積書フォーム
function form2($res1, $res2, $res3) {
echo <<< EOT
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
</head>
<body>
<table border="1" cellpadding="10">
<caption>御見積書</caption>
<tr><td>縦×横(1cm<sup>2</sup>あたりの)金額</td><td>{$res1}</td></tr>
<tr><td>加工1+加工2+加工3</td><td>{$res2}</td></tr>
<tr><td>{$res1} 円+{$res2}</td><td>合計){$res3}</td></tr>
</table>
</form>
</body>

EOT;
}
?>
◎質問者からの返答

有難うございます。とっても参考になりました。


2 ● koriki-kozou
●35ポイント

今後のデータベースへの対応を考慮して作ってみた

phpの部分を削れば、基本的にはHTMLのフォームをそのまま使っていることが理解できると思う

<?php
 // 拡張子をphpとしてあるため誤作動する場合があり、下記のように出力している
 echo '<?xml version="1.0" encoding="Shift_JIS"?>';
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja">
<head>
 <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />
 <title>お見積もりフォーム</title>
</head>
<body>
<?php
 //
 // 変数を準備
 $msg = '';
 $tate = '';
 $yoko = '';
 $kakou1 = 1; // 加工1 1:有、0;無 デフォルトはHTMLにあわせて1
 $kakou2 = 1; // 加工2 〃
 $kakou3 = 1; // 加工3 〃
 //
 // 計算ボタンがクリックされた場合は計算を行う
 if (isset($_POST['keisan'])) {
 //
 // POST情報のチェック 今回は簡単なチェックしかしてません
 if (!isset($_POST['tate'])) {
 $msg .= '縦寸法が入力されていません<br />';
 } else if ($_POST['tate'] * 1 >= 1) {
 $tate = $_POST['tate'];
 } else {
 $msg .= '縦寸法が空か、数値以外の文字が入力されています<br />';
 }
 if (!isset($_POST['yoko'])) {
 $msg .= '横寸法が入力されていません<br />';
 } else if ($_POST['yoko'] * 1 >= 1) {
 $yoko = $_POST['yoko'];
 } else {
 $msg .= '横寸法に空か、数値以外の文字が入力されています<br />';
 }
 if (isset($_POST['kakou1'])) $kakou1 = $_POST['kakou1'] * 1; // 掛け算することで、数値として捕らえることにする
 if (isset($_POST['kakou2'])) $kakou2 = $_POST['kakou2'] * 1; // 〃
 if (isset($_POST['kakou3'])) $kakou3 = $_POST['kakou3'] * 1; // 〃
 //
 // POST情報のチェック結果によって処理分岐
 if ($msg != '') {
 //エラー出力
 echo $msg;
 } else {
 //
 //データベースから情報を取ってくるなら、ここに処理を書く
 //
 //計算結果出力
 echo '縦×横×(1平行cmあたりの)金額=' . $tate * $yoko . '円<br />';
 //動作確認しやすいように加工1は千円、加工2は百円、加工3は十円としてある
 echo '加工1+加工2+加工3=' . ($kakou1 * 1000 + $kakou2 * 100 + $kakou3 * 10) . '円<br />';
 }
 }
?>
 <form action="<?= $_SERVER['SCRIPT_NAME'] ?>" method="POST">
 縦:<input type="text" name="tate" value="<?= $tate ?>" />cm
 ×
 横:<input type="text" name="yoko" value="<?= $yoko ?>" />cm
 <br />
 加工1:
 <select name="kakou1">
 <option value="1" <?= ($kakou1 == '1' ? 'selected="selected"' : '') ?>>あり</option>
 <option value="0" <?= ($kakou1 == '0' ? 'selected="selected"' : '') ?>>なし</option>
 </select>
 加工2:
 <select name="kakou2">
 <option value="1" <?= ($kakou2 == '1' ? 'selected="selected"' : '') ?>>あり</option>
 <option value="0" <?= ($kakou2 == '0' ? 'selected="selected"' : '') ?>>なし</option>
 </select>
 加工3:
 <select name="kakou3">
 <option value="1" <?= ($kakou3 == '1' ? 'selected="selected"' : '') ?>>あり</option>
 <option value="0" <?= ($kakou3 == '0' ? 'selected="selected"' : '') ?>>なし</option>
 </select>
 <br />
 <input type="submit" name="keisan" value="計算" />
 </form>
</body>
</html>
◎質問者からの返答

有難うございました。流れはつかめたきがします。


3 ● 小力小象
●22ポイント

My Soul, Your Beats!/Brave Song 【初回生産限定盤】

My Soul, Your Beats!/Brave Song 【初回生産限定盤】

  • アーティスト: Lia 多田葵
  • 出版社/メーカー: アニプレックス
  • 発売日: 2010-05-26
  • メディア: CD

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ