みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

クラスについて

今作っているプログラムのソースが以下のようです

<html>
<head>
<meta http-equiv="Content-type" content="text/html; charset=UTF-8">
<input type="hidden" name="ie" value="UTF-8">
<title>7-4 MySQLクラスでのデータの表示</title>
</head>
<body>
<b>入力された条件&nbsp;&nbsp;&nbsp;&nbsp;</b>
<?php
// 検索条件の表示
print "直接入力:";
print $_POST['chokusetsu'];
print "&nbsp;&nbsp;&nbsp;&nbsp;読み:";
print $_POST['yomi'];
print "&nbsp;&nbsp;&nbsp;&nbsp;画数:";
print $_POST['kakusuu'];
print "&nbsp;&nbsp;&nbsp;&nbsp;部首:";
print $_POST['busyu'];
print "&nbsp;&nbsp;&nbsp;&nbsp;の検索結果";

$search_key1= addslashes($_POST['chokusetsu']);
$search_key2= addslashes($_POST['yomi']);
$search_key3= addslashes($_POST['kakusuu']);
$search_key4= addslashes($_POST['busyu']);
//print $search_key1;
//$search1にはきちんと値が入っている
require_once("mysql.php");// MySQLへのID・パスワードの取得をするファイルへのアクセス
//require_once("kanjiteigi.php");//ユーザ定義関数ファイルへのアクセス
function kensaku($str1,$str2,$str3,$str4){
$GLOBALS["mysql"] = new MySQL;
$GLOBALS["sql"] = "SELECT * FROM tankanji
WHERE
kanji like '%$str1%'
AND
(onyomi like '%$str2%'
OR
kunyomi like '%$str2%')
AND
kakusuu like '%$str3%'
AND
busyu like '%$str4%'";
$GLOBALS["mysql"]->query($GLOBALS["sql"]);
}
// 検索条件を変数に代入してDB内を検索
kensaku($search_key1,$search_key2,$search_key3,$search_key4);
//print $sql;
//$mysql->query($sql);
?>




//require_once("kanjiteigi.php");このような形でコメントアウトしてますが、本当はkanjiteigi.phpの中に
function kensaku($str1,$str2,$str3,$str4){
$GLOBALS["mysql"] = new MySQL;
$GLOBALS["sql"] = "SELECT * FROM tankanji
WHERE
kanji like '%$str1%'
AND
(onyomi like '%$str2%'
OR
kunyomi like '%$str2%')
AND
kakusuu like '%$str3%'
AND
busyu like '%$str4%'";
$GLOBALS["mysql"]->query($GLOBALS["sql"]);
}

と記述している関数をいれて参照してきたいのですが、kanjiteigi.phpにどのような記述をしていいかで悩んでいます。グローバル変数とかもややこしくて…


どなたかクラスに詳しい方おられますでしょうか??






ちなみにkanjiteigi.phpの中に
<?php
class kanjiteigi{
// ●:ユーザ定義関数
// ○ demo1.htmlで入力する検索条件を入力し、その条件で検索するSQL文の発行し、DB内を検索
// ($str0=検索するDBのテーブル名、$str1=漢字、$str2=読み、$str3=画数、$str4=部首)
// DB内を検索
var $mysql;
var $sql;
function kensaku($str1,$str2,$str3,$str4){
$GLOBALS["mysql"] = new MySQL;
$GLOBALS["sql"] = "SELECT * FROM tankanji
WHERE
kanji like '%$str1%'
AND
(onyomi like '%$str2%'
OR
kunyomi like '%$str2%')
AND
kakusuu like '%$str3%'
AND
busyu like '%$str4%'";
$GLOBALS["mysql"]->query($GLOBALS["sql"]);
}
}
?>



としてもダメでした

投稿日時 - 2009-02-04 20:00:03

QNo.4689435

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(2)

ANo.2

前の質問には関数使って回答したのですが理解してもらえたでしょうか・・?
普通のユーザー定義関数から使えないとクラスはまだ無理と思いますよ。

投稿日時 - 2009-02-05 11:24:10

ANo.1

まず、classの質問をするならPHPのバージョンくらい提示したほうが
よいですよ。

で、classでグローバル変数を参照するなんて本末転倒ですね・・・
最低でも$GLOBALS["mysql"]は$this->mysqlにすべきでは?
おそらくクラスの概念を正確に理解していないので、参考書などで
基本を学習するのが解決への近道だと思いますよ

投稿日時 - 2009-02-05 09:59:06

あなたにオススメの質問