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

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

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

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

HTML

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

Q&A

1回答

2905閲覧

PHPでMVCを使用してDBを取得し表示したい

退会済みユーザー

退会済みユーザー

総合スコア0

PHP

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

HTML

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

0グッド

1クリップ

投稿2018/09/04 16:05

現在PHPでMVCの勉強をしています。
MVCを使用してdrinkテーブルから値を取得した配列を表示したいです。

現段階では

$pdo = new PDO(dsn, DB_USER, DB_PASSWD); $stmt = $pdo->prepare('SELECT * FROM drink'); $stmt->execute(); $sql = $stmt -> fetchAll(PDO::FETCH_ASSOC); var_dump($sql);

を実行すると以下のような配列が取得できます。

sql

1array(4) { [0]=> array(4) { ["id"]=> string(1) "1" ["drink_name"]=> string(3) "tea" ["price"]=> string(3) "100" ["status"]=> string(1) "1" } [1]=> array(4) { ["id"]=> string(1) "2" ["drink_name"]=> string(5) "water" ["price"]=> string(2) "50" ["status"]=> string(1) "1" } [2]=> array(4) { ["id"]=> string(1) "3" ["drink_name"]=> string(4) "cola" ["price"]=> string(3) "150" ["status"]=> string(1) "1" } [3]=> array(4) { ["id"]=> string(1) "4" ["drink_name"]=> string(5) "juice" ["price"]=> string(3) "130" ["status"]=> string(1) "1" } }

しかし、ControllerでModelで作成したsql()関数を呼び出して取得することができません。

初歩的な質問ですがご教授よろしくお願いいたします。

以下、Model, View, Controllerのファイルです。

↓Model

php

1<?php 2require_once('const.php'); 3 4function h($str){ 5 print htmlspecialchars($str, ENT_QUOTES, 'UTF-8'); 6} 7 8function sql(){ 9 $pdo = new PDO(dsn, DB_USER, DB_PASSWD); 10 $stmt = $pdo->prepare('SELECT * FROM drink'); 11 $stmt->execute(); 12 $sql = $stmt -> fetchAll(PDO::FETCH_ASSOC); 13 return $sql; 14}

↓View

html

1<!DOCTYPE html> 2<html> 3<head> 4 <meta charset="utf-8" /> 5 <title>テスト</title> 6</head> 7<body> 8 <?php print sql(); ?> 9</body> 10</html>

↓Controller

php

1<?php 2require_once('model.php'); 3require_once('const.php'); 4 5sql(); 6 7include_once('top_view.php');

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

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

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

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

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

guest

回答1

0

MVC 構造の意味を誤解しています。ちゃんと学習したほうが良いです

ControllerでModelで作成したsql()関数を呼び出して取得することができません。

関数が呼び出せないのでしょうか?
それとも値が取得できないのでしょうか?

全体のコードもなく、エラーの記述も無いのでエスパー回答になりますが、sql() の返り値は、array なので、それが原因で Notice でも出ているのではないかと。

投稿2018/09/04 16:16

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

退会済みユーザー

退会済みユーザー

2018/09/04 16:17

<?php print sql(); ?> 配列を print で表示しようとしているだけでは?
退会済みユーザー

退会済みユーザー

2018/09/04 16:27

多分、今引っかかっているのはそこでしょうね。 ただ、こういった質問の場合、値が取れたときの定数と違う定数を使用してるとかあるんで、エラー見ないと何を問題にしているのか分からん^^;
退会済みユーザー

退会済みユーザー

2018/09/05 01:19

完成形じゃなくて、ひとまずModelやControllerを動かすための仮のViewって気もするね。 とはいえ、なんだろう、ミニマルなよそのPHPフレームワークを使ったほうが楽に思える。 車輪の再発明は仕組みの理解には役立つけど、それを上回るメリットを見出すのがツラいし。
退会済みユーザー

退会済みユーザー

2018/09/05 07:35

m6u さんからもツッコミが入ったんで、MVC に関しても、コメントしときますね。 ・Model の役割を使用する関数群の置き場と誤認識していて、ロジック/データ処理場っていう認識がない ・MVC の役割を理解していないので、View で sql() とか書いてしまう ・MVC の挙動根拠を理解していないので、複数の箇所で「const.php」を呼び出している 理解が進むと、上記が実装としておかしなことに気がつけると思います。 フレームワークを使った学習は、効率よいかわかりません。 私は、CodeIgniter を学習に利用しましたが、MVC 理解に役立ったかって言うと、微妙w
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問