前提・実現したいこと
プログラミング初学者です。progateの中のPHP学習過程でで商品を注文し発注するサイトを作成する教材がありその中の、<input>の使用方法、または、クラスのプロパティについて分からないところがありました。
発生している問題・エラーメッセージ
該当のソースコード
menu.php
1<?php 2class Menu { 3 private $name; 4 private $price; 5 private $image; 6 private $orderCount = 0; 7 8 public function __construct($name, $price, $image) { 9 $this->name = $name; 10 $this->price = $price; 11 $this->image = $image; 12 } 13 14 public function hello() { 15 echo '私は'.$this->name.'です'; 16 } 17 18 public function getName() { 19 return $this->name; 20 } 21 22 public function getImage() { 23 return $this->image; 24 } 25 26 public function getOrderCount() { 27 return $this->orderCount; 28 } 29 30 public function setOrderCount($orderCount) { 31 $this->orderCount = $orderCount; 32 } 33 34 public function getTaxIncludedPrice() { 35 return floor($this->price * 1.08); 36 } 37 38} 39?>
date.php
1<?php 2require_once('menu.php'); 3 4$juice = new Menu('JUICE', 600, 'https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/php/juice.png'); 5$coffee = new Menu('COFFEE', 500, 'https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/php/coffee.png'); 6$curry = new Menu('CURRY', 900, 'https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/php/curry.png'); 7$pasta = new Menu('PASTA', 1200, 'https://s3-ap-northeast-1.amazonaws.com/progate/shared/images/lesson/php/pasta.png'); 8 9$menus = array($juice, $coffee, $curry, $pasta); 10 11?> 12
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Café Progate</title> <link rel="stylesheet" type="text/css" href="stylesheet.css"> <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> </head> <body> <div class="menu-wrapper container"> <h1 class="logo">Café Progate</h1> <form method="post" action="confirm.php"> <div class="menu-items"> <?php foreach ($menus as $menu): ?> <div class="menu-item"> <img src="<?php echo $menu->getImage() ?>" class="menu-item-image"> <h3 class="menu-item-name"><?php echo $menu->getName() ?></h3> <p class="price">¥<?php echo $menu->getTaxIncludedPrice() ?>(税込)</p> <input type="text" value="0" name="<?php echo $menu->getName() ?>"> <span>個</span> </div> <?php endforeach ?> </div> <input type="submit" value="注文する"> </form> </div> </body> </html>
confirm.php
1<?php require_once('data.php') ?> 2 3<!DOCTYPE html> 4<html> 5<head> 6 <meta charset="utf-8"> 7 <title>Progate</title> 8 <link rel="stylesheet" type="text/css" href="stylesheet.css"> 9 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 10</head> 11<body> 12 <div class="order-wrapper"> 13 <h2>注文内容確認</h2> 14 <?php foreach ($menus as $menu): ?> 15 <!-- 変数$orderCountに$_POSTで受け取った値を代入してください --> 16 <?php $orderCount = $_POST[$menu->getName()] ?> 17 <p class="order-amount"> 18 <!-- ここに、$menuのゲッターを用いてnameプロパティを表示してください --> 19 <?php echo $menu->getName() ?> 20 x 21 <!-- ここに、$orderCountを表示してください --> 22 <?php echo $orderCount ?> 23 個 24 </p> 25 <?php endforeach ?> 26 </div> 27</body> 28</html>
試したこと
また上のソースコードにはないのですが、試しにMenuクラスで商品の数private $num=0を定義し、
public function getNum(){return $this->num}
を作り、
<input type="text" value="0" name="<?php echo $menu->getName() ?>"> <?php $orderCount=$_POST[$menu->getName()]?>とし、$menu->$getNum()を$menu->$getNameに代入したところ、数値が0のまま変わりませんでした。
$menu->getNumの数値(例:2)が反映されません。おそらくクラス部分のgetNum()メソッドに何か不備ががあるのですが、それを発見する方法が分かりません。何かアドバイスや修正できる点など教えていただけましたら幸いです。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー