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

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

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

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

Q&A

解決済

1回答

529閲覧

フォームから取得した値をもとに、関連するインタンスの中身だけを指定して取り出したい。

Tsuyoponpon

総合スコア33

HTML5

HTML5 (Hyper Text Markup Language、バージョン 5)は、マークアップ言語であるHTMLの第5版です。

PHP

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

XAMPP

XAMPP(ザンプ)は、ウェブアプリケーションの実行に必要なフリーソフトウェアをパッケージングしたApacheディストリビューションです。 XAMPPひとつインストールするだけで、Apache、MySQL、PHP、Perlなどのソフトウェアと、 phpMyAdminなどの管理ツール、SQLiteなどのソフトウェアやライブラリモジュールなどを利用することが可能です。

HTML

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

0グッド

1クリップ

投稿2019/04/26 13:18

編集2019/04/27 05:38

質問を閲覧いただきまして、有難う御座います。
現在ローカル環境で、商品注文サイトを制作しているのですが、
「フォームで受け取った値をもとに、インスタンスを指定して中身を取り出す方法」
を導き出せず、苦戦しております。

かなりの未熟者ですので、諸先輩方よりご教授いただければ幸いです。

実現したい結果(アルフォートで注文数「1」入力して送信した場合)
「アルフォート(20枚入)1 307

現状の結果
「アルフォート(20枚入)1 307 徳用カルパス377 ルマンド(3袋入)315 カントリーマーム(チョコ&バニラ)370 OREO 1箱(2袋入)191 ハッピーターン(3袋入)691」
foreachの影響からか、上記のようにほしくない商品名まで出てきてしまいます。

php

1 <!--show.php(値を送信するファイルで、商品ごとにページを用意しています。)--> 2  <?php 3 4require_once('prodata.php'); 5require_once('promenu.php'); 6 7$menuName = $_GET['name']; 8---------------------------------------------------------------------------------------- 9$menu = Product::findByName($products,$menuName); 10<!--ここで名前を判断していると考えております。--> 11---------------------------------------------------------------------------------------- 12?> 13 14<!DOCTYPE html> 15<html> 16 <head> 17 <meta charset="utf-8"> 18 <title>Product page</title> 19 <link rel="stylesheet" type="text/css" href="show.css"> 20 <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.4.0/css/font-awesome.min.css"> 21 <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script> 22 <link href='https://fonts.googleapis.com/css?family=Pacifico|Lato' rel='stylesheet' type='text/css'> 23 <link href="https://use.fontawesome.com/releases/v5.6.1/css/all.css" rel="stylesheet"> 24 </head> 25 26 <body> 27 <header> 28 <img class="basket" src="http://illustrain.com/img/work/2016/illustrain02-shopping07.png"> 29 <p class="title">Shopping basket</p> 30 <p class="sabtitle">商品注文ページ</p> 31 </header> 32 33 <form action="lastconfirm.php" method="post"> 34 <div class="product-wrapper"> 35 <div class="container"> 36 <img class="product-image" src="<?php echo $menu->getImage() ?>"> 37 <div class="top-right"> 38 <p class="product-name"><?php echo $menu->getName() ?></p> 39 <p class="product-price"><?php echo $menu->getPrice() ?> (税込)</p> 40 <div class="top-amount"> 41 <span class="font">数量</span> 42 <input class="product-amount" type="text" name="<?php echo $menu->getName() ?>" value="0"> 43 <span class="font"></span> 44 </div> 45 <input class="product-decision" type="submit" value="注文を確定する"> 46 </div> 47 </div> 48 <div class="clear"></div> 49 </div> 50 </form> 51 52 53 54 </body> 55</html> 56

php

1<?php 2 3class Product { 4 private $date; 5 private $image; 6 private $name; 7 private $price; 8 public $orderCount = 0; 9 10 11public function __construct($date,$image,$name,$price) { 12 $this->date = $date; 13 $this->image = $image; 14 $this->name = $name; 15 $this->price = $price; 16} 17 18public function getDate() { 19 return $this->date; 20} 21 22public function getImage() { 23 return $this->image; 24} 25 26public function getName() { 27 return $this->name; 28} 29 30public function getPrice() { 31 return $this->price; 32} 33---------------------------------------------------------------------------------------------- 34public static function findByName($menus,$name) { 35 foreach($menus as $menu) { 36 if($menu->getName() == $name) { 37 return $menu; 38 } 39 } 40} 41----------------------------------------------------------------------------------------------- 42public function getOrderCount() { 43 return $this->orderCount; 44} 45 46public function setOrderCount($orderCount) { 47 $this->orderCount = $orderCount; 48 49} 50?>

php

1 2 <!--lastconfirm.php(値を受けて表示するファイル)--> 3 4 <body> 5 <div class="confirm-wrapper"> 6 <?php foreach($products as $product) :?> 7 <?php 8 $orderCount = filter_input(INPUT_POST,$product->getName()); 9     10     echo $product->getName(); 11 echo $orderCount; 12 echo $product->getPrice(); 13 14 ?> 15 <?php endforeach ?> 16 17 </body>

php

1 <!--prodata.php(インスタンスのファイル)--> 2   3  <?php 4 require_once('promenu.php'); 5 6 7$alfort = new Product('New','画像URL ','アルフォート(20枚入)',307); 8$calpas = new Product('New','画像URL ','徳用カルパス',377); 9$lumand = new Product('Sold out','画像URL ','ルマンド(3袋入)',315); 10$country = new Product('New','画像URL ','カントリーマーム(チョコ&バニラ)',370); 11$oreo = new Product('A few','画像URL ','OREO 1箱(2袋入)',191); 12$happy = new Product('New','画像URL ','ハッピーターン(3袋入)',691); 13 14$products = array($alfort,$calpas,$lumand,$country,$oreo,$happy); 15 16 17?> 18

●試したこと
①foreachの中にゲッターを書くのではなく、外に書いてみました。
→エラーになりました。
②お菓子や、インスタンスを指定するため、「if」での条件分岐を試してみました。
→正確なソースがわかりませんでした。

ユーザーが入力した値(注文数)を情報源に、どのお菓子なのかを見分け、インスタンスの中身を指定してゲッターなどで取り出したいです。(金額や画像)

もし、ご教授いただける方がおられましたら、何卒回答の程宜しくお願い致します。

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

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

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

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

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

m.ts10806

2019/04/27 00:58

「インストラクタ」がなんの意味合いで使われているのか分からないので追記願います。
Tsuyoponpon

2019/04/27 01:38

mts10806 様 ご回答有難う御座います!! 勉強不足で、適切な表現が出来ておらず申し訳ございません。 「インストラクタ」ではなく、「インスタンス」に訂正させていただきます。 「$alfort = new Product('New','画像URL ','アルフォート(20枚入)',307);」の一つのまとまりを意味しております。 ユーザーが入力した注文数を受けとり、その商品のインスタンスを特定した上で、注文確認画面として金額や商品名を取得したいと考えております。 たびたびのご指導恐れ入りますが、宜しくお願いいたします。
m.ts10806

2019/04/27 02:00

(回答ではなく質問への追記修正依頼です) では、質問をそのように修正願います
Tsuyoponpon

2019/04/27 02:16

mts10806 様 質問の修正をさせていただきました。 御手数ですが、ご確認を宜しくお願い致します。
javahack

2019/04/27 04:49

show.phpからlastconfirm.phpへ遷移する際に注文数しか渡されていないようですが、どの商品が選択されたかはどのように判断しているのでしょうか?
Tsuyoponpon

2019/04/27 05:43

javahack 様 ご回答有難う御座います。 自分自身では、「findByname()」で商品の名前を取得できていると考えております。 ですが、なにぶん知識が浅いため、的確な答えにはなっていないかもしれません。 そのため、見ていただきたいところを「-----------」で囲み、ソースも追加させていただきました。 大変お手数であるかと思いますが、再度ご指導いただけますと幸いです。
javahack

2019/04/27 10:24 編集

すみません、勘違いしていました。商品名はnameに設置されていましたね。 それならlastconfirm.phpで取り出すことは可能です。 ただ、nameが可変だと注文数を取り出すのには一工夫必要となります。 注文数のnameは固定にして(countなど)、inputタグを追加して商品名を渡すようにした方が簡単だと思います。
Tsuyoponpon

2019/04/28 13:15

javahack 様 ご指導いただいた通りプログラムを書いてみましたが、なかなか上手くいかず学習がストップしております。 注文個数を可変にする必要がないことは理解できましたが、具体的な書き方がわからず困っております。 周りに詳しい人間もいない為、もう少し詳しくご指導いただけますよう、何卒宜しくお願い致します。
javahack

2019/04/28 23:46

show.phpが商品名を指定して呼び出せているのであれば、同じ操作を show.phpからlastconfirm.phpに対して行えば良いのでは。
Tsuyoponpon

2019/05/06 01:02

返信が遅くなりまして申し訳ございません。 無事解決いたしました。 誠に、ありがとうございました。
guest

回答1

0

自己解決

そもそも今回の問題はlocalhostでの開発のため、URLにファイル詳細の記載があります。
URLを見ながらファイル遷移を意識し、記載をし直しました。
その結果、「https://」に続く「htdocs」の記載がなかったために起こったエラーであることが判明しました。

投稿2019/05/07 00:50

Tsuyoponpon

総合スコア33

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問