プロが教える店舗&オフィスのセキュリティ対策術

初歩的なことかもしれません。

御助言頂きたいと思いご質問させて頂きます。

ポイントサイトを構築している途中で会員さんのポイント獲得ランキングを昇降順にDBより抽出しようと試みましたが無理でした。

こちらのソースからの後の記述が分かりません。
SELECT * FROM $k_user_table order by point DESC

結局分からぬまま最終的に以下の様にすることが精一杯でした。
----------------------
<?php
$point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC");
print $point_count;
?>
----------------------

この形でもやはり1件の獲得ポイントのみが出たり或いは一桁のちょっと訳が分からない数字が出たりします。

ポイントの高い順に10位まで表示したいと思っております。

テーブル名はこちらSELECT * FROM $k_user_table order by point DESCで間違いないはずなんですけどDBへの接続等その後のWHERE・=・<・>・等の記述方法の(~の場合~にする)の様な定義付けが分かりません。

先輩方の御助言頂けますでしょうか。

宜しく御願致します。

A 回答 (12件中1~10件)

あ、良かったー 私もPEARの勉強になりましたー


ポイントだけ表示なら

<?
$test = $DB->getAll("SELECT point FROM ".$k_user_table." order by point DESC LIMIT 0,10 ");
print_r($test);
?>

SELECT のすぐ後が欲しいカラムで、「*」は全カラムってことなんです
idとnameとpointっていうカラムが欲しいなら
SELECT id,name,point
とすればOK。

配列はforとかforeachを使って全件(10件)とも表示するように
繰り返し構文の中に配置すれば宜しいかと思いますー

この回答への補足

名前とポイント出ました!

有り難う御座います。

ちょっと文字化けしちゃっているので文字コードも確認してみたいと思います。

foreach等の記述で配列を綺麗に出来るのですね^^

すごく助かりました。

ここからは自力で頑張りたいともいます!
(まずはforeachを検索してみます。。。ここからでも時間かかりそうです泣)

補足日時:2009/01/17 18:37
    • good
    • 0

あ、さっきの男性のサンプルを書き換えてみたんです



PHPでやるなら…と私が書いたやつは全部忘れて削除しちゃって下さい!
良く読まないで口挟んじゃってスミマセン、ホント…

<?
$test = $DB->getAll("SELECT * FROM ".$k_user_table." order by point DESC LIMIT 0,10 ");
print_r($test); //コレ間違ってたので、こっちで。
?>

この回答への補足

とんでも御座いません。

色々と教えてくださり他の勉強にもなりました。

そのまま貼りましたら出ました!

でも会員情報情報すべて抽出されてしまいました。。。。

これに条件を付けてするとよいですか。

また、テーブルのように綺麗に整列する場合はまた違う記述が別に加わりますか。

補足日時:2009/01/17 17:31
    • good
    • 0
この回答へのお礼

多分原因わかった気がします。。。

テーブル「order by point DESC」の中にテーブルがもう一つあると言うか「order by point DESC」に何か加えないと全部抽出してしまっていると言う事は無いですか。。。

order by point DESCで抽出は出来るよとシステム側の人から言われたのでずっとこのまましてたんですけどもしかしたらと思っても見ました。

又はwher等の記述で[point]のみを抽出する様な指定は出来ますか。

お礼日時:2009/01/17 17:59

連投しまくりでスミマセン


ちょっとPEAR勉強してきました

$test = $DB->getAll("SELECT * FROM ".$k_user_table." order by point DESC LIMIT 0,10 ");
print $test

これだとどうなんでしょう?

この回答への補足

色々有り難う御座います!

どこに記述したら良いですか。。。
<php
$sql = "SELECT * FROM テーブル名 order by point DESC LIMIT 0,10";
$result = mysql_query($sql,データベース);
while ($row = mysql_fetch_array ($result)) {
print $row[point];
}

?>
この中の同じ部分を入れ替えるのですか。。。

又は先程の男性の抽出ソースの部分の書き換えになりますか。。。

ちなみに先程のPHPからのSQLへ接続する記述は不要になりますか。

お時間御座いましたら宜しくお願致します。

補足日時:2009/01/17 17:00
    • good
    • 0

あー


さっきの、たぶんダメですねぇ
PHPとコネクトの書き方が違うようでした

PEARの板で質問出しなおした方が早いかもですねぇ
なんだか 申し訳ない
    • good
    • 0

PEARでもコネクトはしてるはずですよー



で、ちょっと調べてみたのですが
$result = mysql_query($sql,$DB);

これだとどうですかね?$DBがコネクトの変数っぽい
何か、遅々として進まぬで申し訳ないです…
    • good
    • 0

$result = mysql_query($sql,データベース);


これの指定が間違ってるんじゃないですかねぇ

参考に、とさっき上げたサイトの「MySQL に接続する」の項目見ました?
データベースの名前を入れてもダメですよ

PHPでやるなら、手順をちゃんと踏まないとデータは取得出来ないです
    • good
    • 0
この回答へのお礼

有り難う御座います。

サイトは意見致しました。

色々複雑に考えてしまいます。

下の様な形式とは別に一からデータベースを取得する記述がPHPでする場合はしなければいけないのですね。。。

<TR bgcolor="#ccffff"><TD bgcolor=""><font color="" size="1"><font color="#000000" size="1">ちゃん</font><?php
$man = "男性";
$man = mb_convert_encoding($man,"EUC-JP","SJIS");
$man_count = $DB->getone("SELECT count(*) FROM $k_profile where sex='$man' ");
print $man_count;
?>名

サイトを見ても自分には何をどこにどの様に記載していいのかさえ分かりません。

データベースの部分にはローカルホスト・sqlへの接続パス等が入るのですか。

また、

<?php

$hostname = "localhost";
$uname = "USERNAME";
$upass = "PASSWORD";
$dbname = "DBNAME";
$tblname = "TABLENAME";

//MySQL に接続する。
if( !$res_dbcon = mysql_connect( $hostname, $uname, $upass) ){
print "MYSQL への接続に失敗しました。";
exit;
}

これを一つ一つ自分のサイトに合うようにしなければ接続はされないのですよね。。。

ここまで複雑だとは思いませんでした。

上記の男性を抽出しているような感じではやはり無理なのでしょうか。。。

同じ様な感じでテーブル名と条件を変えたらと思うのですけど実際頭では分かっていてもエラーの連続で20時間以上格闘しております。。。

お礼日時:2009/01/17 15:36

getoneてPEARなんですね 使ったことないので何だかわからなかった


どうしてもPEAR使いたいなら私にはアドバイスはもう出来ないです
PHPでDBからデータ抽出とかしかやったことないので

だから私が今回みたいなことをするなら
$sql = "SELECT * FROM テーブル名 order by point DESC LIMIT 0,10";
$result = mysql_query($sql,データベース);
while ($row = mysql_fetch_array ($result)) {
print $row[point];
}
というような処理をするだろうと思います

名前も入れたいなら print $row[名前のカラム名];
とりあえずPHPで処理するなら一つ前のサイト、見てみて下さい

この回答への補足

度々申し訳御座いません。

PCからアクセス制限がある様なので無料スペースに出たエラーの写メを載せました。

http://04.mbsp.jp/drprmews-34243-l.php?guid=on

補足日時:2009/01/17 14:44
    • good
    • 0
この回答へのお礼

お世話になります。

自分はPEAR等も分かっていないです。。。

まもでPHPでもPEARでも出てくれたらそれで満足です。

作者の方がPEAR専門の様でこの$point_count = $DB->getone("SELECT * FROM $k_user_table order by point DESC");から取得できます。

と言われました。

これ以上は有料なので教えてくれませんでした。。。

教えてくださり有り難う御座います。

<php
$sql = "SELECT * FROM テーブル名 order by point DESC LIMIT 0,10";
$result = mysql_query($sql,データベース);
while ($row = mysql_fetch_array ($result)) {
print $row[point];
}
?>

上記テーブル名とデータベース名を入れ換えてしてみました。

そしたらエラーが出ました(泣)。

ちなみ言い忘れてたんですけど携帯専用のサイトです。

出たエラーはこちらになります。

お礼日時:2009/01/17 14:40

>だからArrlyと言う文字がが出たんでしょうか。

。。
どの段階での話かわかんないですけど、配列のデータが取れてる
ってことでしょうねぇ(配列をそのままprintしてもArrayしか出ません)

たまたま見つけたこのサイトは基本的な操作の勉強に良さそうなので
良かったら一回こちらで色々見てから試してみてはいかがでしょう
必要な関数名とかも出てるので、調べやすいと思います

参考URL:http://bg.pi-ppi.com/page/n01/index.html

この回答への補足

こちらのエラーが出てしまいました。

http://04.mbsp.jp/drprmews-34244-l.php?guid=on

補足日時:2009/01/17 14:51
    • good
    • 0
この回答へのお礼

度々失礼致しました。

そして有り難う御座います。

サイトの方拝見しながら試みたいと思います。

すごく助かりました!

お礼日時:2009/01/17 14:13

SELECT * FROM $k_user_table order by point DESC


↑これにプラス「LIMIT」を使ったSQL文を作るのですよ

具体的な使い方は参考URLを参照下さい
MYsql 件数 制限 とかで調べたら、色んなサイト出てきますよ

参考URL:http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd …

この回答への補足

すみません。


<?php
$point_count = $DB->getone("SELECT * FROM ".$k_user_table." order by point DESC ");
print $point_count;
?>

「limit 0, 1」を付けてみました。

("SELECT * FROM ".$k_user_table." order by point DESC limit 0, 1");

でも出ませんでした。。。

limit 0, 1を囲む「"」等は必要ないですか。

また、これに名前も一緒に抽出したい場合はどこに名前の記述が必要になりますか。

色々申し訳御座いません。

補足日時:2009/01/17 13:50
    • good
    • 0
この回答へのお礼

こんにちは。

お世話になります。

SELECT * FROM $k_user_table order by point DESC);の下の列に書いておりました。。。

だからArrlyと言う文字がが出たんでしょうか。。。

出来そうな予感がしてきました。

すぐに試してみます。

サイトの方も教えてくださり有り難う御座います。

お礼日時:2009/01/17 13:41

失礼な言い方ですが、もう少し基本を勉強しないと、プログラミングは無理でしょう。

質問以前の問題だと思います。

Classは、オブジェクト指向での概念で、ファイルではありません。

getoneは、SELECTの結果の最初の行の最初のカラムを取得します。

具体的には、queryで実行して、繰り返しで1行ずつ持ってきて処理です。

たぶん、今の力ではこの説明もお分かりにならないと思いますが。
    • good
    • 0
この回答へのお礼

お世話になります。

>>具体的には、queryで実行して、繰り返しで1行ずつ持ってきて処理です。

これ自体も分かりません。。。

今回がSQLからの抽出は初めてです。

少しでも何かヒントから元に自分なりに試してみようと思っておりました。

仕組みが分かりなんとなく分かって来た気がします。

有り難う御座いました。

お礼日時:2009/01/17 13:38

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!