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スクリプト

	<?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&nbsp;</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>
&lt;?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 .= "&lt;tr&gt;";
    $body .= "&lt;td&gt;" . $col['COL 3'] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[cnt1] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[cnt2] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[cnt3] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[average] . "&lt;/td&gt;";
    $body .= "&lt;/tr&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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&nbsp;</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>
&lt;?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 .= "&lt;tr&gt;";
    $body .= "&lt;td&gt;" . $col['COL 3'] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[cnt] . "&lt;/td&gt;";
    $body .= "&lt;/tr&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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&nbsp;</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>
&lt;?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 .= "&lt;tr&gt;";
    $body .= "&lt;td&gt;" . $col['COL 3'] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[max] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[min] . "&lt;/td&gt;";
    $body .= "&lt;/tr&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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&nbsp;</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>
&lt;?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 .= "&lt;tr&gt;";
    $body .= "&lt;td&gt;" . $col['COL 2'] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col['COL 4'] . "&lt;/td&gt;";
	$body .= "&lt;td align='right'&gt;" . $col[average] . "&lt;/td&gt;";
    $body .= "&lt;/tr&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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&nbsp;</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>
&lt;?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 .= "&lt;TR&gt;";
    $body .= "&lt;TD&gt;" . $col['COL 2'] . "&lt;/TD&gt;";
    $body .= "&lt;/TR&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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&nbsp;</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>
&lt;?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'] . "&lt;BR&gt;";
  $body .= $col['COL 2'] . "&lt;BR&gt;";
  $body .= $col['COL 3'] . "&lt;BR&gt;";
  //結果セットを破棄
  mysql_free_result($rst);

  //MySQLとの接続を解除
  mysql_close();
?&gt;

&lt;?php 
&lt;?=$body?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 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スクリプト

	<?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>&nbsp;&nbsp;";

  //1つ前のページへの移動用
  if ($curpage > 1) {
    $startprm = ($curpage - 2) * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'><</A>&nbsp;&nbsp;";

  //各ページ番号への直接移動用
  for ($cnt = 1; $cnt <= $pgmax; $cnt++) {
    $startprm = ($cnt - 1) * $ROWMAX;
    $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>$cnt</A>&nbsp;&nbsp;";
  }

  //1つ次のページへの移動用
  if ($curpage < $pgmax) {
    $startprm = $curpage * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>></A>&nbsp;&nbsp;";

  //最終ページへの移動用
  $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>&nbsp;&nbsp;";

  //1つ前のページへの移動用
  if ($curpage > 1) {
    $startprm = ($curpage - 2) * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'></A>&nbsp;&nbsp;";

  //各ページ番号への直接移動用
  for ($cnt = 1; $cnt <= $pgmax; $cnt++) {
    $startprm = ($cnt - 1) * $ROWMAX;
    $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>$cnt</A>&nbsp;&nbsp;";
  }

  //1つ次のページへの移動用
  if ($curpage < $pgmax) {
    $startprm = $curpage * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "<A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'>></A>&nbsp;&nbsp;";

  //最終ページへの移動用
  $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&nbsp;</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>
&lt;?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 ページ目】&lt;BR&gt;";
  //結果セットを取得
  $rst = mysql_query($sql);
  //結果セットからデータをループで読み込み
  while ($col = mysql_fetch_array($rst)) {
    $body .= "&lt;TR&gt;";
    $body .= "&lt;TD align='center'&gt;" . $col['COL 1'] . "&lt;/TD&gt;";
    $body .= "&lt;TD&gt;" . $col['COL 2'] . "&lt;/TD&gt;";
    $body .= "&lt;TD&gt;" . $col['COL 3'] . "&lt;/TD&gt;";
    $body .= "&lt;TD align='right'&gt;" . $col['COL 4'] . "&lt;/TD&gt;";
    $body .= "&lt;/TR&gt;";
  }
  //結果セットを破棄
  mysql_free_result($rst);
  //MySQLとの接続を解除
  mysql_close();

  //ページ移動用リンクの組み立て
  //先頭ページへの移動用
  $startprm = 0;
  $link = "&lt;A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'&gt;<<&lt;/A&gt;&nbsp;&nbsp;";

  //1つ前のページへの移動用
  if ($curpage &gt; 1) {
    $startprm = ($curpage - 2) * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "&lt;A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'&gt;&lt;/A&gt;&nbsp;&nbsp;";

  //各ページ番号への直接移動用
  for ($cnt = 1; $cnt &lt;= $pgmax; $cnt++) {
    $startprm = ($cnt - 1) * $ROWMAX;
    $link .= "&lt;A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'&gt;$cnt&lt;/A&gt;&nbsp;&nbsp;";
  }

  //1つ次のページへの移動用
  if ($curpage &lt; $pgmax) {
    $startprm = $curpage * $ROWMAX;
  }
  else {
    $startprm = ($curpage - 1) * $ROWMAX;
  }
  $link .= "&lt;A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'&gt;&lt;/A&gt;&nbsp;&nbsp;";

  //最終ページへの移動用
  $startprm = ($pgmax - 1) * $ROWMAX;
  $link .= "&lt;A href='$_SERVER[PHP_SELF]?pgmax=$pgmax&start=$startprm'&gt;>>&lt;/A&gt;";
?&gt;

&lt;?php 
&lt;?=$body?&gt;

&lt;?=$link?&gt;
?&gt;
</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">&nbsp;カテゴリートップへ戻る</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 &copy; 2014 webry&nbsp;-&nbsp;『 webサイト開発 | PHPサンプルサイト 』 All Rights Reserved.
						</address>
				</footer>
		</div>
		<!--▲.content_inner--> 
</div>
<!--▲#container-->

</body>
</html>


表示内容を確認

一定件数ずつレコードを画面表示する