- ベストアンサー
大変困っております。PHP DBにお詳しい方宜しく御願致します。
初歩的なことかもしれません。 御助言頂きたいと思いご質問させて頂きます。 ポイントサイトを構築している途中で会員さんのポイント獲得ランキングを昇降順に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・=・<・>・等の記述方法の(~の場合~にする)の様な定義付けが分かりません。 先輩方の御助言頂けますでしょうか。 宜しく御願致します。
- みんなの回答 (12)
- 専門家の回答
質問者が選んだベストアンサー
あ、良かったー 私も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件)とも表示するように 繰り返し構文の中に配置すれば宜しいかと思いますー
その他の回答 (11)
- koke29
- ベストアンサー率58% (114/196)
あ、さっきの男性のサンプルを書き換えてみたんです PHPでやるなら…と私が書いたやつは全部忘れて削除しちゃって下さい! 良く読まないで口挟んじゃってスミマセン、ホント… <? $test = $DB->getAll("SELECT * FROM ".$k_user_table." order by point DESC LIMIT 0,10 "); print_r($test); //コレ間違ってたので、こっちで。 ?>
お礼
多分原因わかった気がします。。。 テーブル「order by point DESC」の中にテーブルがもう一つあると言うか「order by point DESC」に何か加えないと全部抽出してしまっていると言う事は無いですか。。。 order by point DESCで抽出は出来るよとシステム側の人から言われたのでずっとこのまましてたんですけどもしかしたらと思っても見ました。 又はwher等の記述で[point]のみを抽出する様な指定は出来ますか。
補足
とんでも御座いません。 色々と教えてくださり他の勉強にもなりました。 そのまま貼りましたら出ました! でも会員情報情報すべて抽出されてしまいました。。。。 これに条件を付けてするとよいですか。 また、テーブルのように綺麗に整列する場合はまた違う記述が別に加わりますか。
- koke29
- ベストアンサー率58% (114/196)
連投しまくりでスミマセン ちょっと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へ接続する記述は不要になりますか。 お時間御座いましたら宜しくお願致します。
- koke29
- ベストアンサー率58% (114/196)
あー さっきの、たぶんダメですねぇ PHPとコネクトの書き方が違うようでした PEARの板で質問出しなおした方が早いかもですねぇ なんだか 申し訳ない
- koke29
- ベストアンサー率58% (114/196)
PEARでもコネクトはしてるはずですよー で、ちょっと調べてみたのですが $result = mysql_query($sql,$DB); これだとどうですかね?$DBがコネクトの変数っぽい 何か、遅々として進まぬで申し訳ないです…
- koke29
- ベストアンサー率58% (114/196)
$result = mysql_query($sql,データベース); これの指定が間違ってるんじゃないですかねぇ 参考に、とさっき上げたサイトの「MySQL に接続する」の項目見ました? データベースの名前を入れてもダメですよ PHPでやるなら、手順をちゃんと踏まないとデータは取得出来ないです
お礼
有り難う御座います。 サイトは意見致しました。 色々複雑に考えてしまいます。 下の様な形式とは別に一からデータベースを取得する記述がPHPでする場合はしなければいけないのですね。。。 <TR bgcolor="#ccffff"><TD bgcolor=""><font color="" size="1"><font color="#000000" size="1">
補足
名前とポイント出ました! 有り難う御座います。 ちょっと文字化けしちゃっているので文字コードも確認してみたいと思います。 foreach等の記述で配列を綺麗に出来るのですね^^ すごく助かりました。 ここからは自力で頑張りたいともいます! (まずはforeachを検索してみます。。。ここからでも時間かかりそうです泣)