人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

会員制サイトphp+mysqlに関する質問です。
登録したユーザーの情報はテーブル(User)に記録されています。
テーブル(User)のフィールドは以下の4つです。
()内がフィールド名です。

会員コード(UserCD) text
パスワード(Pass) text
ニックネーム(Name) text
友達紹介人数(Friend) int 11

ユーザーが友達を紹介するたびに(Friend)の数値が1増えます。

friend.phpにアクセスすると"紹介人数の最も多いユーザーのニックネームと紹介人数"が
表示されるようにしたいです。
(上位5人を表示)

この場合の友達紹介ランキングBEST5の作成方法を教えてください。
よろしくお願い致します。

MySQL - 5.0.45


●質問者: xptree
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:FRIEND MySQL name PHP USER
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kent0608
●5ポイント

ORDER BYとLIMITを組み合わせたSQLを投げてください

http://www.rfs.jp/sb/sql/03/03.html#LIMIT

返された結果をfriend.phpの内部処理で整形して表示すればOKです

◎質問者からの返答

ありがとうございました


2 ● pahoo
●65ポイント ベストアンサー

下記ではどうでしょう。MySQL 関数 を利用しています。

スクリプトは UTF-8 で保存してください。

また、mysql_connect, mysql_select_db の部分は、ご利用のDB名、MySQLホスト名、ユーザー名、パスワードを設定してください。

<?php
echo <<< EOF
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
 "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>友達紹介ランキングBEST5</title>
</head>
<body>
<table border="1">
<tr>
<th>ニックネーム</th>
<th>友達紹介人数</th>
</tr>

EOF;
$con = @mysql_connect('MySQLホスト', 'ログインユーザー', 'パスワード') or die('データベース接続エラー');
mysql_select_db('データベース名', $con);

//countを調べる
$sql = 'select * from User order by Friend desc limit 5;';
$res = mysql_query($sql, $con);

while ($row = mysql_fetch_array($res)) {
echo <<< EOF
<tr>
<td>{$row['Name']}</td>
<td>{$row['Friend']}</td>
</tr>

EOF;
}
mysql_close($con);

echo <<< EOF
</table>
</body>
</html>

EOF;
?>
◎質問者からの返答

回答ありがとうございます。

ソースを書いていただいてとても助かりました。

紹介人数が見事表示されるようになりました。

ただ、ニックネームが英数字の場合は表示されるのですが

日本語の場合は空白になってしまい何も表示されません。

もともとphpMyAdminから閲覧すると日本語が文字化けしていました。

??????

????

??????????????

↑このような感じです…

あとはニックネームが表示されれば完璧なのですが

どうすればよいでしょうか…

ご教授頂けたら幸いです。


3 ● pahoo
●10ポイント

日本語の場合は空白になってしまい何も表示されません。

MySQL側の日本語文字コード設定が間違っていると思われます。登録時に文字化けを起こしている可能性が高いと思います。

対応策は、下記の記事を参考にしてください。


参考サイト

◎質問者からの返答

参考になりました。

また、特定の順位のみ表示

10位の人は○人紹介している

100位の人は○人紹介している

このように特定の順位のFriend数を表示させたい場合はどうすればよいでしょうか?

また、紹介人数の総数

全レコードのFriendの数値合計を表すにはどうしたらよいでしょうか?

質問ばかりになってしまい申しわけありません。

ご存知でしたらご教授いただけると幸いです。

よろしくお願い致します。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ