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

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

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

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

Q&A

解決済

4回答

2102閲覧

PHP エラーはparameterじゃなくて!?

a-_.

総合スコア133

PHP

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

0グッド

0クリップ

投稿2016/09/28 06:33

編集2016/09/28 07:29

PHPのclassに関してお聞きします
Fatal error: Uncaught Error: Call to undefined method List_table::select_db() in XXX.php Stack trace: #0 XXX4.php(8): Db->connect() #1 メインのクラス(25): List_table->List_table() #2 {main} thrown in XXX.php
調べてみてもsyntaxの説明しか見当たらず、上記は何についてのエラーなのかが把握できません

PHP

1//メインのクラス 2<?php 3 require_once("XXX.php"); 4 5 if (isset($_POST['name'], $_POST['comment'], $_POST['bbs']) && $_POST['bbs'] == "post") { 6 require("XXX1.php"); 7 $p_obj = new Post(); 8 $p_obj->name = $_POST['name']; 9 $p_obj->comment = $_POST['comment']; 10 $p_obj->post(); 11 } elseif (isset($_POST['bbs']) && $_POST['bbs'] == "update") { 12 require("XXX2.php"); 13 $u_obj = new Update(); 14 $u_obj->name = $_POST['name']; 15 $u_obj->comment = $_POST['comment']; 16 $u_obj->chk = $_POST['chk']; 17 $u_obj->update(); 18 } elseif (isset($_POST['bbs']) && $_POST['bbs'] == "delete") { 19 require("XXX3.php"); 20 $d_obj = new Delete(); 21 $d_obj->chk = $_POST['chk']; 22 $d_obj->delete(); 23 } 24 25 require("XXX4.php"); 26 $l_obj = new List_table(); 27 $data = $l_obj->List_table(); 28 echo strlen($data); 29?>

PHP

1//XXX.php データベース接続クラス 2<?php 3 class Db { 4 public $class; 5 public function connect() { 6 $this->class = new mysqli("XXX", "XXX", "XXX", "XXX"); 7 $class->select_db("XXX");//←ここにUncaught Error 8 $res = $class->query($this); 9 } 10 11 public function close() { 12 $class->close(); 13 } 14 } 15?>

PHP

1//XXX4.php 2<?php 3 require_once("XXX.php"); 4 5 class List_table extends Db { 6 public $result; 7 public $row; 8 public function List_table() { 9 $this->connect(); 10 $sql = "SELECT * FROM XXX ORDER BY time DESC"; 11 $result = $sql->query(); 12 $a = 0; 13 $this->result = null; 14 while($row = $result->fetch_assoc($sql)) { 15 $this->result[$a] = array('name' => $this->row['name'], 'comment' => $this->row['comment']); 16 $a++; 17 } 18 $this->close(); 19 } 20 } 21?>

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

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

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

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

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

kei344

2016/09/28 07:31

回答が付いた質問の編集は慎重に行ってください。質問文のコードについて指摘があった場合は「追記」し、元のコードを編集する場合も「直したこと」がわかるようにしてください。
guest

回答4

0

答えかわかりませんが、このページでCtrl+Fを押してlistと検索したらなんかわかった気がします。

投稿2016/09/28 06:59

toutou

総合スコア2050

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

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

a-_.

2016/09/28 07:03

ご回答ありがとうございます 私も試しに検索してみて気付いたのですが、もしかして「list」被りってことでしょうか
jm1156

2016/09/28 07:17

被りじゃなくて、list()とか無いじゃないですか…。
toutou

2016/09/28 07:36

エラー文っていうのはたいていそのままの意味で、たいていはなんか足りない、なんかない、定義されてないなどです。そういわれたならば、本当にあるか確認すること。きちんと確認しましたか?順番を逆算して行ってちゃんとそれが読み込まれる所にありましたか?読み込まれる邪魔は入ってませんか?エラー文は嘘をつきません。嘘をつく理由がないし嘘をつけないから。また、エラー文の全体図でわからなくても単語一つ一つで検索していって組み合わせれば、なんとなく意味は伝わるはずです。まずきちんと言葉を読みとってからがスタートです。 要するに引数が~for足りないという事にも関わらず、何故parameterじゃないんでしょうか、といわれてるときにまず気にしないといけないのは、何故parameterじゃないのかではなく、引数が本当に足りてないのかなと言うところだと思います。
guest

0

①List_tableクラスでは、bbslistというメソッド名で作成しているのに、呼び出し側はlistという名前で呼んでいる。
また引数を指定していない。

何故parameterじゃないんでしょうか

これの意味がわからないのですが、エラーメッセージにparameterって出てないってことでしょうか?

②こうでは。
$this->class->select_db("XXX");

③良く見てないけど②と同じ理由でしょうか。

投稿2016/09/28 06:52

ttyp03

総合スコア16998

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

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

a-_.

2016/09/28 07:31 編集

ご回答ありがとうございます ご回答いただいた後で大変申し訳ないですが⓶は先に自分で解決してしまっており、「このクラスはXXXをselectする」という意味の処理を行いたかったので「$this->select_db("XXX");」で処理が成立しました
guest

0

ベストアンサー

$this->class = new mysqli("XXX", "XXX", "XXX", "XXX");
$class->select_db("XXX");//←ここにUncaught Error

もしここで言っている
mysqliの4番目の引数とselect_dbのDB名が同じならselect_dbは不要です

投稿2016/09/28 07:00

date

総合スコア1820

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

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

a-_.

2016/09/28 07:08

ご回答ありがとうございます ご回答いただいた箇所を試しに削除してみると、$resが未定義となってしまったため、やはり必要な様です
jm1156

2016/09/28 07:15

$resはなにもしてないと思うのだが? なにかしてるの? connectしたいだけなんじゃないの?
date

2016/09/28 07:59

質問者さんのコードはまだまだ直すところがたくさんあり、いったい何を参考にしたらこうなるのか少し疑問です 1.$this->row これはありませんエラーになります。 2.なにもreturnしていません。さらに配列にstrlenは使用できません。よってエラーです 3. $res = $class->query($this); queryに入るのがsql文なのでエラーです。 4.$result = $sql->query();同じくquery()の括弧内にSQL文が入るのでエラーです。 質問者さんに対応するなら $result= $this->class->query($sql); 5.fetch_assoc($sql) fetch_assoc()の括弧内にSQL分は不要です。エラーです 6.$this->result[$a]こんなの不可能です。別の配列を作って入れてください。
guest

0

List_tableクラスにはlist()という関数は見当たりませんがTYPOでしょうか?
Dbクラスにもないので拡張の問題でもなさそうです

投稿2016/09/28 06:53

yambejp

総合スコア114829

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

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

jm1156

2016/09/28 07:30

bbslist()関数にreturnも無いですしね…。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問