
以下の通り、歴年運動会の徒競走順位が記録されたテーブル(mytable)があります。
ID 氏名 順位 運動会開催年
1 阿藤 1 2009
2 伊藤 2 2009
3 宇藤 3 2009
4 江藤 4 2009
5 尾藤 5 2009
6 加藤 1 2010
7 木藤 2 2010
8 工藤 3 2010
9 毛藤 4 2010
ここで、次のように書けば・・・
$sql = "select * from mytable order by ID";
$con = mysql_connect(DBSERVER, DBUSER, DBPASSWORD);
$rst = mysql_query($sql, $con);
$recmax = mysql_num_rows($rst);
if ($recmax > 0) {
$body = "<ol>\n";
for ($recnum = 0; $recnum < $recmax; $recnum++) {
$col = mysql_fetch_array($rst);
$body .= "<li>$col["氏名"]\n";
}
$body .= "</ol>\n";
}
こういう箇条書きリストが得られます。
<ol>
<li>阿藤
<li>伊藤
<li>宇藤
<li>江藤
<li>尾藤
<li>加藤
<li>木藤
<li>工藤
<li>毛藤
</ol>
ここで、以下のような箇条書きスタイルにするには、どう書いたらいいでしょうか?
ifの分岐内に一工夫しなければならないことは推察できますが、
2回ループをさせる??すみません、よくロジックが整理できません。
<div>2009年運動会</div>
<ol>
<li>阿藤
<li>伊藤
<li>宇藤
<li>江藤
<li>尾藤
</ol>
<div>2010年運動会</div>
<ol>
<li>加藤
<li>木藤
<li>工藤
<li>毛藤
</ol>
No.2ベストアンサー
- 回答日時:
実際に試してませんがフロー的にはこんな感じでいけるのでは?
$sql = "select ID,氏名,運動会開催年 from mytable order by ID,運動会開催年";
$res = mysql_query($sql, $con);
$pre_nendo="";
$list ="";
while($row = mysql_fetch_array($res,MYSQL_ASSOC)){
$nendo=$row["運動会開催年"];
if($pre_nendo!==$nendo){
if($list!=="") $list.="</ol>\n";
$list.="<div>{$nendo}年運動会</div>\n";
$list.= "<ol>\n";
}
$list .= "<li>{$row["氏名"]}</li>\n";
$pre_nendo=$nendo;
}
if($list!=="") $list .= "</ol>\n";
$body.=$list;
yamabejpさん、完璧なコードをご提示くださりありがとうございました。
早速本番環境に組み込みまして、120%期待通りに動作しました。
最初にforで覚えたので、whileの使い方にあまりなれていないのですが、
こうやってやるんですね・・
正直、いくら時間をかけて考えても、わたしでは解がでなかったと思われます。
このたびは(このたび'も')、本当に助かりました。ありがとうございました。
No.1
- 回答日時:
まず年度でORDER BYが必要ですね
で、年度がかわったら別のOLを書くようにすればよいでしょう
この回答への補足
yamabejpさん、いつもお世話になります。
ご回答ありがとうございます。
>で、年度がかわったら別のOLを書くようにすればよいでしょう
ええっと、おっしゃるとおりなのでしょうが、
元質問のプログラムですと、OLがfor構文の外に出ていますよね?
そうすると、年度が変わったという判定と</OL><OL>の記述というロジックを
どう組み込んだらよいかさっぱり検討つかないのが元質問の主旨です。
ものすごい複雑な(冗長な?(^_^;)プログラムになってしまいそうな
気がするのですが・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHP+MYSQL IF文の初歩
-
sqlから多次元配列に要素を格納...
-
テーブルに入っているデータと...
-
PHPのSQLインジェクションはspr...
-
MySQLでデータベースにデータin...
-
アラートでyes noを作りたいです。
-
insert1つの処理でもトランザ...
-
csvをDBへ読み込んだら、NULLが...
-
VBAをつかってクエリの情報を抽...
-
文字化け お名前comサーバー
-
実行時エラー3131 FROM 句の構...
-
mysql php 複数のクエリ
-
Pro*Cの構文エラー
-
円マークが付加されて保存され...
-
sortable ギブアップです…助け...
-
php sqlite count 列数取得
-
SQL文が実行できません
-
PEAR でprepareメソッドがエラーに
-
PHPでMySQLデータを呼び出し、w...
-
JAVA SQLServerException 列名 ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
下記エラーメッセージ解決について
-
文字化けするのはなぜですか
-
ループ内に任意行を差し込む処...
-
PHPでMySQLのデータを検索したい
-
Resource id #3 をフィールドの...
-
sqlから多次元配列に要素を格納...
-
テーブルにINSERTができません...
-
MySQLにデータが書き込まれない
-
リストから詳細画面に遷移する...
-
会員登録したらメールが送られ...
-
phpMyadminとPHP上からの違い?
-
データベースから,そのレコー...
-
PHP と Mysql の連携時に発生す...
-
XAMMPが起動しません。
-
DBから同じ文字があるレコード...
-
phpのデータベースを使用したsq...
-
PHP+MYSQL IF文の初歩
-
for文で表示する画像を10件づつ...
-
MySQLのエラー出力
-
次のエラーメッセージ検証 テ...
おすすめ情報