- ベストアンサー
抽出結果にランク付けを・・・と思い・・・。
初歩的なことですみません。 前回グループによる結果をランク付けの教えていただき出来ました。 大変感謝いたします! 他にも色々取ってみようと思いしていたんですけどできません。 アクセスポイントの多い方を順番にランク付けをするという単純な事なんですけど限界です。 $rs=$DB->execute("SELECT * FROM $k_user_table ORDER BY ac_point DESC"); $total=$result->RecordCount(); while($row =$result->FetchRow()) { $id[] = mb_convert_encoding($row['id'],'SJIS','EUC-JP'); } for($i=0; $i<10; $i++) { print("第".($i+1)."位:".$point[$i]."G"); } この様にとりました。 しかし何かが違うみたいです。 順番に並んでもポイントが取れてなかったり逆にポイントは順番に取れていてもランク付けできてなかったり・・・。 教えてください。まちがいはどこですか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
前回の質問を読んで無いので、良く分かりませんね…。 $id[] ってなんですか?使用してませんが? $point[$i] はいつ生成されたんですか? それともこの二つは同じ物で、単なる書き間違い?
その他の回答 (2)
- dell_OK
- ベストアンサー率13% (766/5721)
データを溜め込んでいる while ループ内で、 print mb_convert_encoding($row['id'],'SJIS','EUC-JP'); print mb_convert_encoding($row['point'],'SJIS','EUC-JP'); あるいは、 print $row['id']; print $row['point']; としたら、どのように表示されますでしょうか。 10位までなら、カウントをとって10で抜け出すように細工してください。 必ず10位以上あるのかどうかわかりませんが、 データが10件に満たない場合、 id も point もない "第位:G" だけが表示されてしまいます。
お礼
こんにちわ。 ちょっと複雑に質問してしまいました。 point数の多い順に抽出し結果に順位を付けたいだけです。 商品を価格順に並べて番号を振るのと同じ感じです。 FetchRow())と言うより for($i=0; $i<10; $i++) のミスだと思います。 point数の多い順に抽出する事は出来てます。 そこにfor($i=0; $i<10; $i++) を使用し順位を付ける事が出来ません。 現在のソースになります。 while($row =$result->FetchRow()) { print mb_convert_encoding($row['point'],'SJIS','EUC-JP'); } こんな感じに取ります。 for($i=0; $i<10; $i++) { print("第".($i+1)."位:".$point."G"); } ここがループします。 >>データが10件に満たない場合、 件数は問題ないです。 >>としたら、どのように表示されますでしょうか。 以前と同じでした。
- takapiii
- ベストアンサー率55% (944/1707)
PEAR::DBを使っているんでしょうか… その辺りの説明が欲しいのですが、 $rs=$DB->query("SELECT * FROM $k_user_table ORDER BY ac_point DESC"); $total=$result->RecordCount(); while($row =$result->FetchRow(DB_FETCHMODE_ASSOC)) { $id[] = mb_convert_encoding($row['id'],'SJIS','EUC-JP'); $point[] = mb_convert_encoding($row['point'],'SJIS','EUC-JP'); } for($i=0; $i<10; $i++) { print"$id[$i]"; print("第".($i+1)."位:".$point[$i]."G"); } ではないかな…? ポイントはDB_FETCHMODE_ASSOCです(PEAR::DBならですが)
お礼
お世話になります。 こんばんわ! ダメみたいでした。。。 現在は第1位~十位 と言う順位はきちんと付いています。 でもidが出ていない状況です。 for($i=0; $i<10; $i++) の場所もいろいろ変えてみたんですけど今度は逆に順位が取れなくなりidは正常に取れたりと言う状況です。 前の質問言うのは特に関係ないです。 これよりも複雑なグループによる抽出結果に順位を付けたいと言う質問です! ありがとうございましたっ。
補足
分かりません(*^-^*) えっと・・・。 書き間違いです。 $id[] = mb_convert_encoding($row['id'],'SJIS','EUC-JP'); $point[] = mb_convert_encoding($row['point'],'SJIS','EUC-JP'); こう言う風にとってます。 と言うか単に抽出結果に番号を振りたいだけです/(°ё°)\ ややこしくしてしまったみたいですね! そこに for($i=0; $i<10; $i++) { print"$id[$i]"; print("第".($i+1)."位:".$point[$i]."G"); } と言う形にランキングにしたいのです。