• 締切済み

mysqlでフィールド毎にレイアウトを変える方法

pa_cottaの回答

  • pa_cotta
  • ベストアンサー率43% (25/58)
回答No.1

スクリプト側でやってもいいですし、SQLでやりたいのであればgroup byを使うことになるでしょうか。 テーブル構造が提示されていないのでそれ以上のことは何も言えません。

ssstreet
質問者

補足

回答ありがとうございます。 フィールドは、name(商品名)、category(ケーキ、アイス etc)、category2(チョコ、ミルク etc)の3つが主なフィールドで、、group byでソートしてに呼び出した後に、以下のhtmlのようにそれぞれのフィールドの値によってレイアウトを振り分けたいのです。 ケーキ&&チョコ、ケーキ&&ミルク、アイス&&チョコ、アイス&&ミルクのそれぞれの数をカウントしてループさせようとも思ったんですが、1つ1つ数えていくのはあまりにも効率が悪いと思ったので、いい方法はないかと思っている状況です。 <div class="big"> <h2>ケーキ(大カテゴリ)</h2> <div class="middle"> <h3>チョコ(中カテゴリ)</h3> <ul> <li>商品1</li> <li>商品2</li> <li>商品3</li> </ul> </div><!-- middle end --> <div class="middle"> <h3>ミルク(中カテゴリ)</h3> <ul> <li>商品4</li> <li>商品5</li> <li>商品6</li> </ul> </div><!-- middle end --> </div><!-- big end --> <div class="big"> <h2>アイス(大カテゴリ)</h2> <div class="middle"> <h3>チョコ(中カテゴリ)</h3> <ul> <li>商品7</li> <li>商品8</li> <li>商品9</li> </ul> </div><!-- middle end --> <div class="middle"> <h3>ミルク(中カテゴリ)</h3> <ul> <li>商品10</li> <li>商品11</li> <li>商品12</li> </ul> </div><!-- middle end --> </div><!-- big end -->

関連するQ&A

  • mysql_fetch_assocについて

    お世話になります。 MySQLからデータを取得してWEBで表示するために mysql_fetch_assoc関数を使っています。 SQL文を作って、mysql_query関数で実行させ、 結果をmysql_fetch_assocの引数にしているのですが 作成するSQL文に”DESC”を追加すると何も表示されなくなります。 (mysql_num_rowsでデータ数は取得できているのでSQL自体は有効の ようです) SQL文から”DESC"を取ると、mysql_fetch_assocの結果も正常に表示 されるのですが、どうしても降順に並べ替えて表示したいので 解決方法をご存知の方ご教授ください。よろしくお願いします。

    • 締切済み
    • PHP
  • PHP,MYSQLで特定例を表示する場合、

    PHP、MYSQLで特定例を表示する場合のsql文が分かりません。 データーベースmeibo no | name | sex | age | 1 | 一郎 | 男 | 20 | 2 | 一子 | 女 | 22 | 3 | 二郎 | 男 | 25 | 4 | 二子 | 女 | 27 | 女のみを表示したい場合を考え以下のようなコードを作りましたが上手くいきません。 <?php //データーベース接続 require_once('../require/dbcon.php'); //件数の表示 $recordSet = mysql_query('SELECT COUNT(sex) AS record_count FROM meibo WHERE sex(女)'); $data = mysql_fetch_assoc($recordSet); echo '<b>','※ 女性メンバー','</b> ('.$data['record_count'].' 人のデーターがあります。)<br /><br />'; //テーブルセット $recordSet = mysql_query('SELECT sex FROM meibo WHERE sex(女)'); while ($table = mysql_fetch_assoc($recordSet)) { echo $table['no']; echo $table['name']; echo $table['age']; } エラーでは $data = mysql_fetch_assoc($recordSet); と、 while ($table = mysql_fetch_assoc($recordSet)) のラインが出るのですが 何が悪いのか良く分かりません。 私の考えではsql文が悪いのではないかと思うのですが、どなたかお教えくださいませ。

    • ベストアンサー
    • PHP
  • MYSQLから画像を取り出したい

    PHPとMYSQLにて画像を表示したいのですが、 PHPmyadminにてBLOB型にJPG画像を手動で 入れて有ります、そこで下記のように取り出そうとしたのですが、文字の羅列が長く表示され、画像はでません。 $result = mysql_query("SELECT * FROM test"); $row = mysql_fetch_assoc($result); print ($row['image']); 文字の羅列が出るので、データははいっているとおもうのですが、取り出し方が悪いのでしょうか?

    • ベストアンサー
    • PHP
  • MySQLとPHP 完全一致

    一致するか確認する物は $getkeyと$getmailの2つにあるとします データベースより、 $getkeyの書いてあるのを探す列はKEYとして、 $getmailの書いてあるのを探す列はMAILとして、 どちらも完全一致の場合は、処理を続けるスクリプトを作りたいのですが。 たとえば asr7yn7m84の一致する物を検索 データベースの中に asr7yn7m があっても、asr7yn7mは、一致してないと判別する方法 あと、完全一致した行(同じ内容は作られないようにしています。)の 内容を取り出す方法はどうすればいいのでしょうか? mysql_fetch_assocでよろしいのでしょうか?

    • 締切済み
    • PHP
  • mysqlのスマートな書き方

    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>" ; } }

    • ベストアンサー
    • MySQL
  • mysqlについてサンプルなど教えてもらえませんか

    すいません。今phpなどを使いウェブサイトを作っているのですが、データベースがどうしても 必要となり、参考サイトなどを見ながら作りました。 ほとんどできたのですが、最後に一部データベースの関数などでわからない事があり困っています。 (正直私はプログラムはphp程度が少し分かる程度で、データベースも単純な使い方しかしない 予定なので参考サイトをざっと見ただけでmysqlの事がほとんど分かりません) ググってそれらしい物を探してはいるのですが、私がやりたい事はデータベースから 件数を取りたいだけです。 取った件数をphpで表示したいのですが、何時間やっても良くわかりません。 申し訳ないんですが取り出した後その件数をphpのechoで表示するまでをサンプルとして書いてもらえませんか?(可能であれば「ここでこのような処理が行われている」とコメントがもらえると助かります) データベース関係はphpと違って初心者用のサイトなども無く、書いてある事がほとんど分かりません。 (ここでSELECT COUNT(*)を使うと教えてもらったのですが、SELECT COUNT(*)でググっても サンプルなども出てきません) $pdo = new PDO("mysql:dbname=aaa", "root"); $pdo->query("set names utf8;"); // ------------------------------------------------ $sql = $pdo->query("SELECT COUNT(*) FROM bbb"); $stmt = $pdo->query($sql); $stmt->execute(); $count=$stmt->rowCount(); echo $count; ----------------------------------------------- $result = mysql_query("SELECT COUNT(*) FROM bbb"); $row = mysql_fetch_assoc( $result ); echo $row;

    • ベストアンサー
    • MySQL
  • mysql_fetch_arrayとテンプレートの使い方

    データベースからランダムに取り出した3つのデータがあります。 取り出したデータにはそれぞれid、name、ageのデータが入っています。 $rs = mysql_query("select * FROM table order by Rand() LIMIT 0,3;",$con); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $tpl->assign(array( id => $rec[id], name => $rec['name'], age => $rec[age] )); } これだと1種類のデータが3つ連続して表示されてしまいました。 3種類のデータを全部表示するにはどのようにしたらよいのでしょうか? テンプレート(?)の使い方がよく分かっていないので検討違いのことをしている気がしますがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • MySQLが動かない(テーブルレコード全表示したい

    初心者です。 いろいろ検索して改善していったつもりですが、なぜ動かないのかどうしてもわからないところがあったので質問させていただいてます。 /* サーバーへの接続 */ $link=mysql_connect($server,$user,$passwd); /* データベース内のテーブルの名前を$tablesに配列で格納 */ $STS = "SHOW TABLE STATUS"; $mytables = mysql_query($STS); while($r = mysql_fetch_array($mytables, MYSQL_ASSOC)){ $tables[] = ($r["Name"]."<br>\n"); } /* 全テーブルのレコードを全てプリント */ foreach($tables as $value){ $results = mysql_query("select * from " . $value, $link); while ($row = mysql_fetch_array($results, MYSQL_ASSOC)) { print_r($row); print("<br>\n"); } } mysql_close($link); foreachの部分を for($i = 0; $i < 2 /*$tables[$i] != 0*/; $i++){ $results = mysql_query("select * from " . $tables[$i], $link); $row = mysql_fetch_array($results, MYSQL_ASSOC); print_r($row); } でもやってみました。 これを利用して、何とか表形式でデータベースのテーブルのレコードをwebページに出力させようと思っています。 実行するとprint_r($row)の出力がでず、いろいろ試してみた結果、$resultsもしくは$rowに問題があることがわかりました。 var_dump($row); でNULLが出力されました。 var_dump($results); もやったのですが、うろ覚えなのでここには書きません。 $results = mysql_query("select * from gutaiteki_table", $link); としたら動いたので、select * from の後に変数を続けているからだめなのかなと思いましたが、私にはどうにもしようがありません。 これを正常に動作させる方法、他にうまいやり方があればその方法を教えてほしいです。 (私はデバッグのやり方がわからないので、「改変してwebのページを更新する」というのを繰り返してプログラムを作成していますが、他に方法があればそれも併せてご意見ほしいです。これは余裕があったらで構いません。)

  • MySQLのあいまい検索について

    MySQLのあいまい検索について いつもお世話になっております。 本日はMySQLのあいまい検索について質問させていただきます。 あいまい検索といっても like での検索ではなく バとヴァ・ブとヴ・全角ハイフンと半角ハイフンなどを 同じとみなして検索することはできるのでしょうか。 たとえば、データベースには「ラブ」と登録されているが 検索キーワードは「ラヴ」と入力された場合、検索結果に「ラブ」の行を表示したいです。 PHPとMySQLで開発をするのですが、MySQLではなくPHPの処理になるのでしょうか。 カテゴリ違いでしたら申し訳ありません。 よろしくご教示お願いいたします。 [環境]  MySQL:5.0.45  PHP:5.1.6

    • ベストアンサー
    • MySQL
  • MySQLとPHPを使用した「何分前に更新」の表示

    MySQLとPHPを使って、「この情報は何分前に更新されました」という旨の メッセージを表示したいのですが、方法がわからないのでご質問させてい ただきます。 MySQL内では、何時間何分前に更新されたものか表示できるのですが、 これらの値をどのようにPHPで持ってくるのかがわかりません。 --- --- --- --- --- --- --- --- --- --- --- --- mysql> select timediff(modified,now()) from test_TB; +--------------------------+ | timediff(modified,now()) | +--------------------------+ | -348:04:24 | | -614:09:08 | | -614:09:08 | | -614:09:08 | | -614:09:08 | | -614:09:08 | | -614:09:08 | | -614:09:08 | | -546:23:46 | | -111:12:22 | | -111:11:11 | | -111:10:57 | | -98:53:42 | | -04:02:47 | +--------------------------+ --- --- --- --- --- --- --- --- --- --- --- --- テーブル名:   test_TB 時間のカラム:  modified PHPでは以下のように書いてみたのですが、エラーで値が取り出せずにいます。 --- --- --- --- --- --- --- --- --- --- --- --- <?php //データベースに接続 session_start(); require('dbconnect.php'); $t01 = 'select timediff(modified,now()) from test_TB;'; $t02 = mysql_query($t01) or die(mysql_error()); $t03 = mysql_fetch_assoc($t02); ?> <html> <body> <?php while($t03 = mysql_fetch_assoc($t02)): ?> <?php echo $t03['timediff'];?> <?php endwhile; ?> </body> </html> --- --- --- --- --- --- --- --- --- --- --- --- プログラミングをはじめたばかりで質問にも不備があると思いますが、 よろしくお願いいたします。 (お手数ですが、具体的なコードで教えていただけると非常にありがたいです)

    • ベストアンサー
    • PHP