- ベストアンサー
抽出結果に番号を振る方法について!
こんにちわ! いつもお世話になっております。 以前にも質問してみたんですけど複雑にしてしまいやり直しになります。 例えばなんですけど商品価格を高い順番に並べてって言うのありますよね。 そう言う場合はカラム名 DESC これは分かるのですけど・・・。 そこに番号を振る事が出来ません。 1番 1000円 2番 980円 3番 850円 の様に 1 2 3 と言う事が出来ません。 抽出 while($row =$result->FetchRow()) { $point[] = mb_convert_encoding($row['point'],'SJIS','EUC-JP'); } 番号を振る for($i=0; $i<10; $i++) { print("第".($i+1)."位:".$point[$i]."G<br />"); } 現在のソースです。 個人的には for($i=0; $i<10; $i++) の記述のミスがどこかにあるのかな とも思います。 そもそもの for の使い方など書いてあるサイトはありませんか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
$point配列には$row['point']すなわちフィールドpointに入っている データが送られてきているはずです。 田中さん、木村さん・・・ となると人名ですよね?たぶんpointではないところに 格納されているのではないですか?
その他の回答 (2)
- choconamacream
- ベストアンサー率44% (152/338)
>for($i=0; $i<10; $i++) の使い方を知りたいのです。 for文そのものは特に問題ないので、後はそのブロック内で .$point[$i]. となっている所を、 .$nicname[$i]. に変えるだけだと思う。
お礼
かしこまりましたっ! ちょっと色々もう一度試してきてみますっ!
補足
出来ません・・・。 例えばみなさんはこう言う場合どういう風に取りますか? 例えば商品価格を高い順に並べて番号を振るような単純な場合です!
- yambejp
- ベストアンサー率51% (3827/7415)
まずはprint_r($point)としてみて、データがきちんと収納されているか確認するところから始めてください forの書き方はとくにまちがっていないと思いますが、 pointのキーの数によってランクは変わるのでスタティックに 1位から10位でいいならいいですが、もし最大値が変わるのなら もうすこし工夫が必要かと。 いずれにしろ、いまのソースでどうなってしまっているかを 提示しないと、どうなおすかなんて回答できないと思いますよ。
お礼
見てきました。 現在 第1位 第2位 . . . 第10位 と言うようになっています。 予定では 第1位 田中さん 第2位 木村さん . 佐藤さん . . 第10位 高橋さん と言うようになる予定です。 順位は取れています。 でも名前が取れ以内状況です! ちなみに抽出部分はこちらですっ! $rs=$DB->execute("SELECT * FROM $k_user_table ORDER BY point DESC"); $total=$result->RecordCount(); while($row =$result->FetchRow()) グループ BY 等を使用するのでしょうか・・・。(¬_¬) もうげんかいです(ToT)
補足
わかりましたっ!スタスタスタ/(=∵=)\
お礼
ニックネームに格納されてます。 while($row =$result->FetchRow()) { $point[] = mb_convert_encoding($row['point'],'SJIS','EUC-JP'); $nicname[] = mb_convert_encoding($row['nicname'],'SJIS','EUC-JP'); } です! そもそもポイントと順位が綺麗に取れてない状態です。 抽出は問題ありません。 問題は順位付けが出来ないんです! for($i=0; $i<10; $i++) の使い方を知りたいのです。