MySQL5.1とPHP5を使っています。
phpからmysqlのtestテーブルにアクセスして点数順に生徒名一覧を作成したいと思っています。
イメージとしてはこのような感じです。○○○は名前になります。
90点以上
○○○
○○○
80点以上
○○○
○○○
○○○
70点以上
○○○
○○○
○○○
○○○
このような一覧を表示するため、下記のように作成したところ上記のような表示をしてくれました。
しかしながら、同じmysql_queryを何度も使っていますし、DBに負担が掛かりそうな気がします(本当に負荷があるのかは分かりませんが・・・)
もっとスマートな書き方はないものでしょうか。
よろしくお願い致します。
echo "90点以上";
$rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn);
while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){
if ($res['tensu'] >= 90){
echo $res['name'];
echo "<br>" ;
}
}
echo "80点以上~90点未満";
$rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn);
while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){
if($res['tensu'] >= 80 and $res['tensu'] < 90 ){
echo $res['name'];
echo "<br>" ;
}
}
echo "70点以上~80点未満";
$rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn);
while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){
if($res['tensu'] >= 70 and $res['tensu'] < 80 ){
echo $res['name'];
echo "<br>" ;
}
}
No.1ベストアンサー
- 回答日時:
やりたいことを「条件を満たす点数と点数の間に見出しをつけたい」と考えて
以下のようなプログラムではどうでしょうか?
$mae_no_tensu = 999;
$rs = mysql_query("select * from test where kamoku = '1' order by tensu desc LIMIT 0, 100;",$conn);
while($res = mysql_fetch_array($rs, MYSQL_ASSOC)){
if($mae_no_tensu == 999 && $res['tensu'] >=90){
echo "90点以上";
echo "<br>" ;
}
elseif($mae_no_tensu >= 90 && $res['tensu'] >=80){
echo "80点以上~90点未満";
echo "<br>" ;
}
elseif($mae_no_tensu >= 80 && $res['tensu'] >= 70){
echo "70点以上~80点未満";
echo "<br>" ;
}
if($res['tensu'] >= 70){
echo $res['name'];
echo "<br>" ;
}
$mae_no_tensu = $res['tensu'];
}
No.2
- 回答日時:
考え方は2つ
1つは#1さんのようにPHPで処理する
order byしているので前の点数を使っているのはよいですね
そのたフラグで処理をする手もあると思います。
2つめはMySQLで処理する。
たとえば別テーブルでカテゴリの最低値、最高値をもたせて
INNERJOINしてカテゴリを付加した状態で得られれば
そのカテゴリをキーに処理ができます。
もちろんJOINしなくてもIFでカテゴリを付加することも
可能だとは思います
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- PHP PHP MySql ページング 2 2022/09/20 06:38
- MySQL SQL任意に並び替えをしたい 2 2023/08/28 10:47
- PHP PHP一覧表示した項目にリンクをはりたい 1 2023/07/12 17:08
- PHP 重複を防ぐ記述について教えて下さい。 3 2023/04/03 14:35
- Perl RSSにdiv,ul classを付けたいのですがどのようにつけるのかわからないです 2 2022/03/28 01:53
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- PHP PHPで画像の渡しが上手く行きません。 1 2023/02/02 09:39
- MySQL php テーブルを作れない 2 2022/11/17 18:22
- PHP PHP echo バックスラッシュの使い方 img要素 2 2023/01/08 22:46
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP+MySQL on さくらサーバー
-
phpで複数のDBを使用した場合の...
-
接続ができません
-
SQLのVARCHARとVARCHAR2の違い
-
like句を使って日本語を検索す...
-
副問合せにLIKE文を使う方法は...
-
VBAで変数内に保持された二次配...
-
RPMのmysqlとmysql-serverの違い
-
ODP.NETのバージョン確認
-
「・」中点が入った文字列を条...
-
.sqlのファイルをそのままコマ...
-
検索機能
-
Float型の時の計算結果がおかしい
-
ERROR 1045 (28000) (using pas...
-
postgreSQLのデータ型
-
ACCESSとXサーバーをODBCで接続...
-
プライマリーキーの昇順でソー...
-
PDFをDBに格納する/取り出すには?
-
MySQLにリモートホストから接続...
-
実行時エラー80004005
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
phpで複数のDBを使用した場合の...
-
MySQLのテーブルのデータ数のカ...
-
show databasesコマンドが効かない
-
UPDATEできない
-
MySQLが動かない(テーブルレコ...
-
C言語で変数の内容をINSERTする...
-
phpでデーターベース編集
-
MySQLで合計と小計の計算方法を...
-
初心者ですがupdateがうまくい...
-
複数行のクエリを、まとめて実...
-
(phpeditor)→(phpMyadmin)
-
緊急です。insert文が実行されない
-
検索結果IDの使いまわしについて
-
MySQLのINSERT文で変数展開がで...
-
トランザクションが効かない
-
mysqlのスマートな書き方
-
mysqlのデータベースの内容をph...
-
テーブルのデータをarray (arra...
-
[MySQL]全くクエリーキャッシュ...
-
カウントして抽出するsqlをまと...
おすすめ情報