

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

エラーコード

[code]

    [27-Jul-2018 08:51:30 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
    [27-Jul-2018 08:52:03 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
    
[/code]

saledata.php

[code]

    <php
        //販売データ
        $couponList = [ "nf23qw"=>0.75, "ha45as"=>0.8, "hf56zx"=>8.5];
        $priceList = [ "ax101"=>2300, "ax102"=>2900];
    
    
         function getCouponRate($code) {
            global $couponList;
    
            $isCouponCode = 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;
        }    
     }   
    
      ?>  
    
[/code]

discount2.php

[code]

    <!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>
    
[/code]

discountForm2.php

[code]

    <!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="discount2.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>
    
[/code]

[![画像の説明をここに入力](https://i.stack.imgur.com/U1XYL.png)](https://i.stack.imgur.com/U1XYL.png)

[![画像の説明をここに入力](https://i.stack.imgur.com/pCqXt.png)](https://i.stack.imgur.com/pCqXt.png)


CC BY-SA 4.0
2018-07-27T09:02:24.983
47031
2018-07-30T03:11:34.393
29244
question
php
クーポンコードを使って割引率を決める


?をつけて解決しました！  
宜しくお願いします。


CC BY-SA 4.0
2018-07-30T03:11:34.393
47089
2018-07-30T03:11:34.393
29244
47031
answer