MySQL データベースの処理20
レコードを操作する
グループごとの集計結果を演算する
使用関数: GROUP BY 句(SQL) Count 関数(SQL) Concat 関数(SQL) Sum関数(SQL)
- 下記の例は`TABLE 3`テーブルを `COL 3` フィールドでグループ化し、それぞれのグループの集計結果について演算を行う例。
- 「Count(*) * 10」はグループごとのレコード数を10倍している。集計結果に四則演算を行う例。
演算子は「+」「-」「*(乗算)」「/(除算)」などが使える。 - 「Concat(Count(*), '件')」はグループごとのレコード数に「件」という文字を追加している。MySQL では Concat 関数を使うことで、フィールド文字列、あるいフィールド同士を結合して出力させることができる。SQL 上で文字列の結合を指示しているため、結合された結果が1つのフィールドデータとして返されるてんに注意。なお、Concat 関数は集計結果ではなく、通常のフィールド演算としても使える。
- 「Sum('COL 4') / Count(*)」では、合計とレコード数の2つの集計結果同士の演算を行っている。Avg 関数を使わず、計算によって各グループの 'COL 4'の平均を計算している。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのさまざまな集計をするSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt1, Count(*) * 10 AS cnt2, Concat(Count(*), '件') AS cnt3, Sum(`COL 4`) / Count(*) AS average FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt1] . "</td>"; $body .= "<td align='right'>" . $col[cnt2] . "</td>"; $body .= "<td align='right'>" . $col[cnt3] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <table border="1"> <tr> <th>地域</th> <th>データ数</th> <th>データ数の10倍</th> <th>文字加工</th> <th>ポイントの平均</th> </tr> <?=$body?> </table>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのさまざまな集計をするSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt1, Count(*) * 10 AS cnt2, Concat(Count(*), '件') AS cnt3, Sum(`COL 4`) / Count(*) AS average FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt1] . "</td>"; $body .= "<td align='right'>" . $col[cnt2] . "</td>"; $body .= "<td align='right'>" . $col[cnt3] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>レコードを操作する</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">1-5 </span>グループごとの集計結果を演算する</h2> </a> <div class="post_inner">GROUP BY 句(SQL) Count 関数(SQL) Concat 関数(SQL) Sum関数(SQL) </p> <ul class="list01"> <li>下記の例は`TABLE 3`テーブルを `COL 3` フィールドでグループ化し、それぞれのグループの集計結果について演算を行う例。</li> <li>「Count(*) * 10」はグループごとのレコード数を10倍している。集計結果に四則演算を行う例。<br> 演算子は「+」「-」「*(乗算)」「/(除算)」などが使える。</li> <li>「Concat(Count(*), '件')」はグループごとのレコード数に「件」という文字を追加している。MySQL では Concat 関数を使うことで、フィールド文字列、あるいフィールド同士を結合して出力させることができる。SQL 上で文字列の結合を指示しているため、結合された結果が1つのフィールドデータとして返されるてんに注意。なお、Concat 関数は集計結果ではなく、通常のフィールド演算としても使える。</li> <li>「Sum('COL 4') / Count(*)」では、合計とレコード数の2つの集計結果同士の演算を行っている。Avg 関数を使わず、計算によって各グループの 'COL 4'の平均を計算している。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのさまざまな集計をするSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt1, Count(*) * 10 AS cnt2, Concat(Count(*), '件') AS cnt3, Sum(`COL 4`) / Count(*) AS average FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt1] . "</td>"; $body .= "<td align='right'>" . $col[cnt2] . "</td>"; $body .= "<td align='right'>" . $col[cnt3] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <table border="1"> <tr> <th>地域</th> <th>データ数</th> <th>データ数の10倍</th> <th>文字加工</th> <th>ポイントの平均</th> </tr> <?=$body?> </table> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理19
レコードを操作する
グループごとのレコード数を集計する
使用関数: GROUP BY 句(SQL) Count 関数(SQL)
- 「Count(*)」というレコード数を求めるための集計関数の記述を「GROUP BY」句と併用することによりグループごとのレコード数、つまり「それぞれのグループがもともと何件のレコードから集計されているか」を求める。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのレコード数を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <table border="1"> <tr> <th>地域</th> <th>データ数</th> </tr> <?=$body?> </table>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのレコード数を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>レコードを操作する</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">1-4 </span>グループごとのレコード数を集計する</h2> </a> <div class="post_inner">GROUP BY 句(SQL) Count 関数(SQL) </p> <ul class="list01"> <li>「Count(*)」というレコード数を求めるための集計関数の記述を「GROUP BY」句と併用することによりグループごとのレコード数、つまり「それぞれのグループがもともと何件のレコードから集計されているか」を求める。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3`ごとのレコード数を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Count(*) AS cnt FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[cnt] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <table border="1"> <tr> <th>地域</th> <th>データ数</th> </tr> <?=$body?> </table> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理18
レコードを操作する
グループごとの最大値 / 最小値を集計する
使用関数: GROUP BY 句(SQL) Max 関数(SQL) Min 関数(SQL)
- 「GROUP BY」句とMySQL の集計用関数を併用することにより、あるフィールド最大値と最小値を求めることができる。
- 最大値はMax 関数、最小値は Min 関数で求められる。下記の例では、全データを'COL 2'フィールドでグループ化し、各グループ内について、'COL 4'フィールドの値の最大値と最小値を求めている。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Max(`COL 4`) AS max, Min(`COL 4`) AS min FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[max] . "</td>"; $body .= "<td align='right'>" . $col[min] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <table border="1"> <tr> <th>地域</th> <th>最大ポイント</th> <th>最小ポイント</th> </tr> <?=$body?> </table>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 3'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Max(`COL 4`) AS max, Min(`COL 4`) AS min FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[max] . "</td>"; $body .= "<td align='right'>" . $col[min] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>レコードを操作する</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">1-3 </span>グループごとの最大値 / 最小値を集計する</h2> </a> <div class="post_inner">GROUP BY 句(SQL) Max 関数(SQL) Min 関数(SQL) </p> <ul class="list01"> <li>「GROUP BY」句とMySQL の集計用関数を併用することにより、あるフィールド最大値と最小値を求めることができる。</li> <li>最大値はMax 関数、最小値は Min 関数で求められる。下記の例では、全データを'COL 2'フィールドでグループ化し、各グループ内について、'COL 4'フィールドの値の最大値と最小値を求めている。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Max(`COL 4`) AS max, Min(`COL 4`) AS min FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col[max] . "</td>"; $body .= "<td align='right'>" . $col[min] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <table border="1"> <tr> <th>地域</th> <th>最大ポイント</th> <th>最小ポイント</th> </tr> <?=$body?> </table> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理17
レコードを操作する
グループごとの合計や平均を収集する
使用関数: GROUP BY 句(SQL) Sum 関数(SQL) Avg 関数(SQL)
- 「GROUP BY」句とMySQL の集計用関数を併用することにより、あるフィールドに保存されているデータの、グループごとの合計値や平均値を集計できる。
下記の例では、全データを'COL 2'フィールドでグループ化し、各グループで'COL 4'の合計(Sum 関数)と'COL 4'の平均(Avg 関数)を求めている。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Sum(`COL 4`) AS `COL 4`, Avg(`COL 4`) AS average FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col['COL 4'] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <table border="1"> <tr> <th>地域</th> <th>ポイント合計</th> <th>ポイント平均</th> </tr> <?=$body?> </table>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "****"; // ログインユーザ名 $DBPASSWORD = "****"; // パスワード $DBNAME = "****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 3`, Sum(`COL 4`) AS `COL 4`, Avg(`COL 4`) AS average FROM `TABLE 3` GROUP BY `COL 3`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 3'] . "</td>"; $body .= "<td align='right'>" . $col['COL 4'] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>レコードを操作する</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">1-2 </span>グループごとの合計や平均を収集する</h2> </a> <div class="post_inner">GROUP BY 句(SQL) Sum 関数(SQL) Avg 関数(SQL) </p> <ul class="list01"> <li>「GROUP BY」句とMySQL の集計用関数を併用することにより、あるフィールドに保存されているデータの、グループごとの合計値や平均値を集計できる。<br> 下記の例では、全データを'COL 2'フィールドでグループ化し、各グループで'COL 4'の合計(Sum 関数)と'COL 4'の平均(Avg 関数)を求めている。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をごとの'COL 4'合計と平均を集計するSQLを組み立てる $sql = "SELECT `COL 2`, Sum(`COL 4`) AS `COL 4`, Avg(`COL 4`) AS average FROM `TABLE 3` GROUP BY `COL 2`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<tr>"; $body .= "<td>" . $col['COL 2'] . "</td>"; $body .= "<td align='right'>" . $col['COL 4'] . "</td>"; $body .= "<td align='right'>" . $col[average] . "</td>"; $body .= "</tr>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <table border="1"> <tr> <th>地域</th> <th>ポイント合計</th> <th>ポイント平均</th> </tr> <?=$body?> </table> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理16
レコードを操作する
レコードをグループ化して取り出す
使用関数: GROUP BY 句(SQL)
- SQL 文で「 GROUP BY 」句を使うと、指定したフィールドを基準としてデータをグループ化できる。
下記の例では、「GROUP BY area 」という記述によって、area フィールドに保存されているデータがグループ化される。グループ化されると、同じデータが複数レコードに重複している場合、1つのレコードにまとめられて返される。
この SQL 文の場合、結果的に「 `TABLE 3`に保存されている地域 」をリストアップすることになる。 - GROUP BY 句では、カンマで区切って複数のフィールドを指定することもできる。その場合、最初に指定されたフィールドでグループ化された後、更に同じグループの中で2番目の指定フィールドのデータによってグループ化される。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をグループ化して読み込むSQLを組み立て $sql = "SELECT `COL 2` FROM `TABLE 3` GROUP BY `COL 2`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <table border="1"> <tr> <th>地域</th> </tr> <?=$body?> </table>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をグループ化して読み込むSQLを組み立て $sql = "SELECT `COL 2` FROM `TABLE 3` GROUP BY `COL 2`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>レコードを操作する</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">1-1 </span>レコードをグループ化して取り出す</h2> </a> <div class="post_inner">GROUP BY 句(SQL) </p> <ul class="list01"> <li>SQL 文で「 GROUP BY 」句を使うと、指定したフィールドを基準としてデータをグループ化できる。<br> 下記の例では、「GROUP BY area 」という記述によって、area フィールドに保存されているデータがグループ化される。グループ化されると、同じデータが複数レコードに重複している場合、1つのレコードにまとめられて返される。<br> この SQL 文の場合、結果的に「 `TABLE 3`に保存されている地域 」をリストアップすることになる。</li> <li>GROUP BY 句では、カンマで区切って複数のフィールドを指定することもできる。その場合、最初に指定されたフィールドでグループ化された後、更に同じグループの中で2番目の指定フィールドのデータによってグループ化される。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //`TABLE 3`テーブルの'COL 2'をグループ化して読み込むSQLを組み立て $sql = "SELECT `COL 2` FROM `TABLE 3` GROUP BY `COL 2`"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <table border="1"> <tr> <th>地域</th> </tr> <?=$body?> </table> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理15
データーベースの基礎知識
ランダムな一件のレコードを取り出す
使用関数: LIMIT 句(SQL) rand 関数
- 下記の例は全レコードから1件のレコードをランダムに取り出す例。
そのためには SQL 文の LIMIT 句において、「rand 関数によって得たれたレコード番号の値」「,」「1」をつづけて記述する。あらかじめテーブルの全レコード数を調べて、それを rand 関数の引数に指定することにより、そのレコード範囲の乱数を生成する。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //乱数ジェネレータを初期化 srand(microtime() * 1000000); //1〜総レコード数までの乱数を生成(LIMIT句に指定するためにマイナス1) $start = rand(1, $reccnt) - 1; //$startレコード目から1レコードだけを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, 1"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータ読み込み $col = mysql_fetch_array($rst); $body .= $col['COL 1'] . "<BR>"; $body .= $col['COL 2'] . "<BR>"; $body .= $col['COL 3'] . "<BR>"; //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?=$body?>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //乱数ジェネレータを初期化 srand(microtime() * 1000000); //1〜総レコード数までの乱数を生成(LIMIT句に指定するためにマイナス1) $start = rand(1, $reccnt) - 1; //$startレコード目から1レコードだけを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, 1"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータ読み込み $col = mysql_fetch_array($rst); $body .= $col['COL 1'] . "<BR>"; $body .= $col['COL 2'] . "<BR>"; $body .= $col['COL 3'] . "<BR>"; //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>データーベースの基礎知識</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">2-13 </span>ランダムな一件のレコードを取り出す</h2> </a> <div class="post_inner">LIMIT 句(SQL) rand 関数 </p> <ul class="list01"> <li>下記の例は全レコードから1件のレコードをランダムに取り出す例。<br> そのためには SQL 文の LIMIT 句において、「rand 関数によって得たれたレコード番号の値」「,」「1」をつづけて記述する。あらかじめテーブルの全レコード数を調べて、それを rand 関数の引数に指定することにより、そのレコード範囲の乱数を生成する。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できない!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //乱数ジェネレータを初期化 srand(microtime() * 1000000); //1〜総レコード数までの乱数を生成(LIMIT句に指定するためにマイナス1) $start = rand(1, $reccnt) - 1; //$startレコード目から1レコードだけを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, 1"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータ読み込み $col = mysql_fetch_array($rst); $body .= $col['COL 1'] . "<BR>"; $body .= $col['COL 2'] . "<BR>"; $body .= $col['COL 3'] . "<BR>"; //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); ?> <?php <?=$body?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <?=$body?> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>
表示内容を確認
MySQL データベースの処理14
データーベースの基礎知識
一定件数ずつレコードを画面表示する
使用関数: LIMIT 句(SQL)
- SQL 文に LIMIT 句を指定することによって一定件数のレコード数だけを取り出し、かつその件数分の画面を1ページとして、複数ページにデータを分けて表示する。
- テーブルに30件のレコードが保存されるので、1ページあたり8件として、4ページに分けて表示する。
- 1ページに表示する件数を変数「 $ROWMAX 」で設定する。そして、<A>タグによるリンクにパラメータを付加して自分自身のPHPファイルに渡すことにより、各ページの表示開始レコード番号をやり取りしている。表示レコード番号は「 start 」というパラメータによって指示される。
これが、LIMIT 句の開始レコード番号となる。 - なお、「 pgmax 」というパラメータによりそうページ数も渡している。これは毎回データベースにアクセスして、そうレコード数を取得しなくてすむようにするため。
【 書式 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //1ページ当りの表示件数を設定 $ROWMAX = 8; //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できませんでした!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); if (! isset($_GET[start])) { //はじめて呼び出されたとき //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //総ページ数を計算 $pgmax = ceil($reccnt / $ROWMAX); //初期表示時の開始レコード番号を設定 $start = 0; } else { //ページ移動用リンクから呼び出されたとき $pgmax = $_GET[pgmax]; $start = $_GET[start]; } //現在のページ番号を計算 $curpage = ($start / $ROWMAX) + 1; //$startレコード目から$ROWMAX件のレコードを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, $ROWMAX"; $body = "【$curpage ページ目】<BR>"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD align='center'>" . $col['COL 1'] . "</TD>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "<TD>" . $col['COL 3'] . "</TD>"; $body .= "<TD align='right'>" . $col['COL 4'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); //ページ移動用リンクの組み立て //先頭ページへの移動用 $startprm = 0; $link = "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><<</A> "; //1つ前のページへの移動用 if ($curpage > 1) { $startprm = ($curpage - 2) * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><</A> "; //各ページ番号への直接移動用 for ($cnt = 1; $cnt <= $pgmax; $cnt++) { $startprm = ($cnt - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>$cnt</A> "; } //1つ次のページへの移動用 if ($curpage < $pgmax) { $startprm = $curpage * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>></A> "; //最終ページへの移動用 $startprm = ($pgmax - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>>></A>"; ?> <TABLE border="1"> <TR> <TH>順位</TH> <TH>チーム</TH> <TH>地域</TH> <TH>ポイント</TH> </TR> <?=$body?> </TABLE> <BR> <p style="text-align: center;"> <?=$link?> </p>
ソースコード
ソースコード【 HTML 】
<?php $DBSERVER = "localhost"; // MySQL サーバ名 $DBUSER = "*****"; // ログインユーザ名 $DBPASSWORD = "*****"; // パスワード $DBNAME = "*****"; // データベース名 //1ページ当りの表示件数を設定 $ROWMAX = 8; //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できませんでした!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); if (! isset($_GET[start])) { //はじめて呼び出されたとき //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //総ページ数を計算 $pgmax = ceil($reccnt / $ROWMAX); //初期表示時の開始レコード番号を設定 $start = 0; } else { //ページ移動用リンクから呼び出されたとき $pgmax = $_GET[pgmax]; $start = $_GET[start]; } //現在のページ番号を計算 $curpage = ($start / $ROWMAX) + 1; //$startレコード目から$ROWMAX件のレコードを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, $ROWMAX"; $body = "【$curpage ページ目】<BR>"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD align='center'>" . $col['COL 1'] . "</TD>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "<TD>" . $col['COL 3'] . "</TD>"; $body .= "<TD align='right'>" . $col['COL 4'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); //ページ移動用リンクの組み立て //先頭ページへの移動用 $startprm = 0; $link = "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><<</A> "; //1つ前のページへの移動用 if ($curpage > 1) { $startprm = ($curpage - 2) * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><</A> "; //各ページ番号への直接移動用 for ($cnt = 1; $cnt <= $pgmax; $cnt++) { $startprm = ($cnt - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>$cnt</A> "; } //1つ次のページへの移動用 if ($curpage < $pgmax) { $startprm = $curpage * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>></A> "; //最終ページへの移動用 $startprm = ($pgmax - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>>></A>"; ?> <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <meta name="description" content=""> <meta name="keywords" content=""> <meta name="viewport" content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"> <title>webサイト開発 | PHPサンプルサイト</title> <link href="../css/reset.css" rel="stylesheet" type="text/css" media="screen"> <!-- CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/example.css"> <link rel="stylesheet" href="../css/font-awesome.min.css"> <!-- End CSS for slidesjs.com example --> <link rel="stylesheet" href="../css/embet.css"> <link href="../css/common.css" rel="stylesheet" type="text/css" media="screen"> <link href="../css/page.css" rel="stylesheet" type="text/css" media="screen"> <script type="text/javascript" src="http://code.jquery.com/jquery.min.js"></script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#main_menu > li > ul').slideUp() }); $('#main_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#main_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <script type="text/javascript"> jQuery(document).ready(function($) { //****************************************** //クリックによる開閉 //****************************************** //基本的に、ページ内のどこをクリックしても全てのサブメニューを閉じるようにしておく。 $(document).click(function() { $('#list_menu > li > ul').slideUp() }); $('#list_menu > li').click(function(ev){ var sub = $(this).children('ul'); if ($(sub).is(':hidden')) { //今回は、これからサブメニューを開きたい項目をクリックしているので、 //上記の、全てのサブメニューを閉じるイベントを発火させてはならない。 //よって、イベントのバブリングを中止する。 ev.stopPropagation(); //他に開いているサブメニューを閉じる。 //開いたままでもよければ、下の1行は必要ない。 $('#list_menu > li > ul:visible').slideUp(); $(sub).slideDown(); } }); //クリックによる開閉の場合、親メニューの"a"要素の機能は必要ないので無効にする。 $('#main_menu > li > a').click(function(ev) { ev.preventDefault() }); }); </script> <style type="text/css"> #main_menu > li > ul { display: none; padding: 10px 10px 5px; background: rgba(169, 169, 170, 1.0); cursor: pointer!important; } </style> </head> <body> <!--▽#container--> <div id="container"> <header class="clearfix"> <h1><a href="../index.html"><img src="../images/logo.png" width="75" alt=""></a><span>webサイト開発 | PHPサンプルサイト</span></h1> <!--▽#menu--> <ul id="main_menu"> <li> <a href=""><img src="../images/menu.png" width="38px" alt=""></a> <ul class="menu_home"> <li><span class="menu_title">HOME</span> <li><a href="#top">TOP</a></li> </li> </ul> <ul class="menu_link"> <li><span class="menu_title">LINK</span> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/"></a>動画で確認するscript | FlashとJavaScrip</li> <li><a href="http://webry.dousetsu.com/"></a>実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</li> </li> </ul> <ul class="menu_sns"> <li><span class="menu_title">SNS</span> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </li> </ul> </li> </ul> </header> <!--▽.content--> <div class="content"> <!--▽.col1--> <section class="col1"> <h2>データーベースの基礎知識</h2> </section> <!--▲.col1--> <!--▽.content_inner--> <div class="content_inner"> <section class="col2"> <section id="post01" class="col2-1 post"> <a href="#post01"> <h2><span class="ita">2-12 </span>一定件数ずつレコードを画面表示する</h2> </a> <div class="post_inner">LIMIT 句(SQL) </p> <ul class="list01"> <li>SQL 文に LIMIT 句を指定することによって一定件数のレコード数だけを取り出し、かつその件数分の画面を1ページとして、複数ページにデータを分けて表示する。</li> <li>テーブルに30件のレコードが保存されるので、1ページあたり8件として、4ページに分けて表示する。</li> <li>1ページに表示する件数を変数「 $ROWMAX 」で設定する。そして、<A>タグによるリンクにパラメータを付加して自分自身のPHPファイルに渡すことにより、各ページの表示開始レコード番号をやり取りしている。表示レコード番号は「 start 」というパラメータによって指示される。<br> これが、LIMIT 句の開始レコード番号となる。</li> <li>なお、「 pgmax 」というパラメータによりそうページ数も渡している。これは毎回データベースにアクセスして、そうレコード数を取得しなくてすむようにするため。</li> </ul> </div> </section> <!--▲.col2-1--> <section class="col-code"> <div id="post02" class="post"> <a href="#post02"> <h2><span>PHPのコードを表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <pre> <code> <?php $DBSERVER = "*******"; // MySQL サーバ名 $DBUSER = "*******"; // ログインユーザ名 $DBPASSWORD = "********"; // パスワード $DBNAME = "*********"; // データベース名 //1ページ当りの表示件数を設定 $ROWMAX = 8; //MySQLに接続 if (! $con = mysql_connect($DBSERVER, $DBUSER, $DBPASSWORD)) { exit("MySQLに接続できませんでした!"); } //データベースを選択 mysql_select_db($DBNAME); //MySQLの文字コードを設定 mysql_query("set names utf8"); if (! isset($_GET[start])) { //はじめて呼び出されたとき //総レコード数を取得 $sql = "SELECT Count(*) AS reccnt FROM `TABLE 3`"; $rst = mysql_query($sql); $col = mysql_fetch_array($rst); $reccnt = $col[reccnt]; mysql_free_result($rst); //総ページ数を計算 $pgmax = ceil($reccnt / $ROWMAX); //初期表示時の開始レコード番号を設定 $start = 0; } else { //ページ移動用リンクから呼び出されたとき $pgmax = $_GET[pgmax]; $start = $_GET[start]; } //現在のページ番号を計算 $curpage = ($start / $ROWMAX) + 1; //$startレコード目から$ROWMAX件のレコードを読み込むSQLを組み立て $sql = "SELECT * FROM `TABLE 3` LIMIT $start, $ROWMAX"; $body = "【$curpage ページ目】<BR>"; //結果セットを取得 $rst = mysql_query($sql); //結果セットからデータをループで読み込み while ($col = mysql_fetch_array($rst)) { $body .= "<TR>"; $body .= "<TD align='center'>" . $col['COL 1'] . "</TD>"; $body .= "<TD>" . $col['COL 2'] . "</TD>"; $body .= "<TD>" . $col['COL 3'] . "</TD>"; $body .= "<TD align='right'>" . $col['COL 4'] . "</TD>"; $body .= "</TR>"; } //結果セットを破棄 mysql_free_result($rst); //MySQLとの接続を解除 mysql_close(); //ページ移動用リンクの組み立て //先頭ページへの移動用 $startprm = 0; $link = "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><<</A> "; //1つ前のページへの移動用 if ($curpage > 1) { $startprm = ($curpage - 2) * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><</A> "; //各ページ番号への直接移動用 for ($cnt = 1; $cnt <= $pgmax; $cnt++) { $startprm = ($cnt - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>$cnt</A> "; } //1つ次のページへの移動用 if ($curpage < $pgmax) { $startprm = $curpage * $ROWMAX; } else { $startprm = ($curpage - 1) * $ROWMAX; } $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>></A> "; //最終ページへの移動用 $startprm = ($pgmax - 1) * $ROWMAX; $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>>></A>"; ?> <?php <?=$body?> <?=$link?> ?> </code> </pre> </div> </div> </div> </section> <section class="col2"> <div id="post03" class="post"> <a href="#post03"> <h2><span>PHPでの表示</span></h2> </a> <div class="post_inner"> <div class="inner"> <div class="php wd_wrap"> <TABLE border="1"> <TR> <TH>順位</TH> <TH>チーム</TH> <TH>地域</TH> <TH>ポイント</TH> </TR> <?=$body?> </TABLE> <BR> <p style="text-align: center;"> <?=$link?> </p> </div> </div> </div> </div> </section> <!--<section class="col2"> <div id="post04" class="post"> <a href="#post04"><h2><span>FORMでの入力</span></h2></a> <div class="post_inner"> <div class="inner"> <div> </div> </div> </div> </div> </section>--> <p class="c_top"><a href="../index.html#13">▲ カテゴリートップへ戻る</a></p> <section class="bottom clearfix"> <a href="#"> <p class="page_top">TOP</p> </a> <div class="share_box"> <p><span>このサイトをシェアする</span> <a href="https://twitter.com/share" class="twitter-share-button" data-via="webrynote">Tweet</a> <script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0],p=/^http:/.test(d.location)?'http':'https';if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src=p+'://platform.twitter.com/widgets.js';fjs.parentNode.insertBefore(js,fjs);}}(document, 'script', 'twitter-wjs');</script><br> <div id="fb-root"></div> <script>(function(d, s, id) { var js, fjs = d.getElementsByTagName(s)[0]; if (d.getElementById(id)) return; js = d.createElement(s); js.id = id; js.src = "//connect.facebook.net/ja_JP/all.js#xfbml=1"; fjs.parentNode.insertBefore(js, fjs); }(document, 'script', 'facebook-jssdk'));</script> </p> </div> </section> <!--▲.bottom--> </section> <!--▲.content--> <footer> <ul> <li><a href="http://d.hatena.ne.jp/webry/">実践するWEBサイト制作 | webnote</a></li> <li><a href="http://webry.dousetsu.com/images_deta/">はてなデーターの保管庫 | webrynote</a></li> <li><a href="http://webrynote.jimdo.com/">動画で確認するscript | FlashとJavaScrip</a></li> <li><a href="http://webry.dousetsu.com/">実践でカフェオレを俺流においしく作るサイト | カフェ俺流に作る</a></li> <li><a href="https://twitter.com/webrynote">Twitter</a></li> <li><a href="https://www.facebook.com/note.webry">Facebook.</a></li> <li><a href="http://webry.tumblr.com/">Tumblr</a></li> </ul> <address> Copyright © 2014 webry - 『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved. </address> </footer> </div> <!--▲.content_inner--> </div> <!--▲#container--> </body> </html>