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

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

新規登録して質問してみよう
ただいま回答率
85.50%
PHP

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

Q&A

解決済

3回答

1071閲覧

クーポンコードを使って割引率を決める

bitcoiner2045

総合スコア47

PHP

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

0グッド

0クリップ

投稿2018/07/27 08:03

編集2018/07/27 08:09

クーポンコードを使って割引率を決めたいのですが、discount2.phpの46行目とdescountForm2.phpの40行目のエラー該当箇所を見ても解決方法がわかりません。
どなたかご教示頂けると幸いです。宜しくお願いします。

エラーコード

[27-Jul-2018 07:58:34 UTC] PHP Fatal error: Uncaught Error: Call to undefined function getCouponRate() in /Applications/MAMP/htdocs/discount2.php:46 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/discount2.php on line 46 [27-Jul-2018 07:59:02 UTC] PHP Fatal error: Uncaught Error: Call to undefined function getCouponRate() in /Applications/MAMP/htdocs/discountForm2.php:40 Stack trace: #0 {main} thrown in /Applications/MAMP/htdocs/discountForm2.php on line 40

saledata.php【割引率と価格の値が書いてある共有ファイル】

<php $couponList = [ "nf23qw"=>0.75, "ha45as"=>0.8, "hf56zx"=>8.5]; $priceList = [ "ax101"=>2300, "ax102"=>2900]; function getCouponRate($code) { global $couponList; $isCoupon = array_key_exists($code, $couponList); if ($isCouponCode) { return $couponList[$code]; } else { return NULL; } } function getPrice($id) { global $priceList; $isGoodsID = array_key_exists ($id, $priceList); if ($isGoodsID) { return $priceList[$id]; } else { return NULL; } } ?>

discount2.php【POSTされたリクエストを処理】

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>金額の計算</title> <link href=" ../../css/style.css" rel="stylesheet"> </head> <body> <div> <?php require_once("util.php"); if (!cken($_POST)) { $encoding = mb_internal_encoding(); $err = "Encoding Error! The expected encoding is " . $encoding ; exit($err); } $_POST = es($_POST); ?> <?php $errors = []; if (isset($_POST[ 'couponCode' ])) { $couponCode = $_POST[ 'couponCode' ]; } else { $couponCode = ""; } if (isset($_POST[ 'goodsID' ])) { $goodsID = $_POST[ 'goodsID' ]; } else { $goodsID = ""; } ?> <?php require_once("saleData.php"); $discount = getCouponRate($couponCode); $tanka = getPrice($goodsID); if (is_null($discount) || is_null($tanka)) { $err = '<div class="error">不正な操作がありました。</div>'; exit($err); } ?> <?php if(isset($_POST[ 'kosu' ])) { $kosu = $_POST[ 'kosu' ]; if (!ctype_digit($kosu)) { $errors[] = "個数は整数で入力して下さい。"; } } else { $errors[] = "個数が未設定"; } ?> <?php if (count($errors)>0) { echo '<ol class="error">'; foreach ($errors as $value) { echo "<li>" , $value , "</li>"; } echo "</ol>"; } else { $price = $tanka * $kosu; $discount_price = floor($price * $discount); $off_price = $price - $discount_price; $off_per = (1- $discount)*100; $tanka_fmt = number_format($tanka); $discount_price_fmt = number_format($discount_price); $off_price_fmt = number_format($off_price); echo "単価:{$tanka_fmt}円、", "個数:{$kosu}個", "<br>"; echo "金額:{$discount_price_fmt}円", "<br>"; echo "(割引:-{$off_price_fmt}円、{$off_per}% OFF)", "<br>"; } ?> <form method="POST" action="discountForm2.php"> <input type="hidden" name="kosu" value="<?php echo $kosu; ?>"> <ul> <li><input type="submit" value="戻る" ></li> </ul> </form> </div> </body> </html>

discountForm2.php【割引購入ページを作る】

<!DOCTYPE html> <html lang="ja"> <head> <meta charset="utf-8"> <title>割引購入ページ</title> <link href=" ../../css/style.css" rel="stylesheet"> </head> <body> <div> <?php require_once("util.php"); if (!cken($_POST)){ $encoding = mb_internal_encoding(); $err = "Encoding Error! The expected encoding is " . $encoding; exit($err); } $_POST = es($_POST); ?> <?php if (isset($_POST[ 'kosu' ])) { $kosu = $_POST[ 'kosu' ]; } else { $kosu = ""; } ?> <?php require_once("saleData.php"); $couponCode = "ha45as"; $goodsID = "ax102"; $discount = getCouponRate($couponCode); $tanka = getPrice($goodsID); if (is_null($discount) || is_null($tanka)) { $err = '<div class="error">不正な操作がありました。</div>'; exit($err); } ?> <?php $off = (1 - $discount) * 100; if ($discount>0) { echo "<h2>このページでのご購入は{$off}% OFFになります!</h2>"; } $tanka_fmt = number_format($tanka); ?> <form method="POST" action="discount.php"> <input type="hidden" name="couponCode" value="<?php echo $couponCode; ?>"> <input type="hidden" name="goodsID" value="<?php echo $goodsID; ?>"> <ul> <li><label>単価:<?php echo $tanka_fmt; ?>円</label></li> <li><label>個数: <input type="number" name="kosu"> </label></li> <li><input type="submit" value="計算する" ></li> </ul> </form> </div> </body> </html>

イメージ説明

イメージ説明

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

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

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

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

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

guest

回答3

0

ファイル名の大文字小文字は統一しましょうね。
saledata.phpなのかsaleData.phpなのか。

投稿2018/07/27 08:09

編集2018/07/27 08:10
退会済みユーザー

退会済みユーザー

総合スコア0

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

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

bitcoiner2045

2018/07/27 08:17

saledata.phpに直しました。しかし、まだ同じエラーが出ている状況です。
guest

0

ベストアンサー

  • htdocsの中にsaledata.phpとdiscountForm2.phpとdiscount2.phpとutil.phpが並列して入っているかご確認ください
  • saledata.phpの内容をDiscountForm2.phpなどにコピーしてどうかご確認ください。

ちょっと外れますが、<form method="POST" action="discount.php">となっているところはdiscount2.phpではないですか?

投稿2018/07/27 08:23

papinianus

総合スコア12705

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

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

0

まず、インデントを適切にたもつことを心がけるべきと思います。

投稿2018/07/27 08:19

kazto

総合スコア7196

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問