PHP と SQL (MySQL) の連携 複数のテーブルを扱う

Slides:



Advertisements
Similar presentations
1 実技演習1 2008/01/28,29 JaLTER Morpho 講習会. 2 起動・接続 各自、コンピュータを起動してネットワーク に接続してください。 各自、コンピュータを起動してネットワーク に接続してください。 IP アドレス自動取得 IP アドレス自動取得 無線 LAN 使用可 無線.
Advertisements

1 PHP プログラムの実行(まと め) 担当 岡村耕二 月曜日 2限 平成 22 年度 情報科学 III (理系コア科目・2年生) 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明 准教授等による以前の講義資料をもとにしています。
データベースを体験しよう. データベース データをまとめて管理する仕組み – データを整理整頓して管理すると、 いろいろな目的で活用できる データベースの例 – 料理データベース – 座席予約 – 図書館の貸出 データベース 管理システム データベース 名簿データ 料理データ 食材データ 在庫管理.
SQL データベースアクセスのための文法 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
オーダー端末操作手順書 WideNet株式会社 Ver.2013/01/30.
UNIX利用法.
UNIX利用法 情報ネットワーク特論資料.
DB(データベース)のおはなし 作成者:小野正広 DBと言っても、  ドラゴンボール ではないですぞ! 3/1/2017.
情報理工学部 情報システム工学科 ラシキアゼミ 3年 H 井奈波 和也
知能機械工学科 担当:長谷川晶一 TA:新・後藤・ナンバ
ブラウザの基本操作 前のページに戻る ブラウザの左上にある 「戻る」ボタンで、自分がたどってきた一つ前のページに戻ることができます。
SQL データベースアクセスのための文法と MySQL
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
JPAを利用した RESTful Webサービスの開発
SQLエディタによる データベースプログラミング
WEBから確認できる 駐車場管理システムについて
3-1 MySQLについて 発表者:藤村元彦 自然言語処理研究室.
第3回 ファイルとフォルダ 伊藤 高廣 計算機リテラシーM 第3回 ファイルとフォルダ 伊藤 高廣
コンピュータリテラシー 第3回授業の復習 基本的なUNIXコマンド
Linux リテラシ 2006 第2回 基本コマンド2.
PHPエディタによる 情報システム演習 01.
Accessによる SQLの操作 ~実際にテーブルを操作してみよう!~.
PHP 概要 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
らくらく学校連絡網 スライドショーで見る操作ガイド -8- グループの新規登録、修正できる項目 escで中断、リターンキーで進みます
平成22年度に実施を予定するインターネットを 用いた研修システムによる研修 ライブ配信受講手順書
PHP 概要 担当 岡村耕二 月曜日 2限 平成20年度 情報科学III (理系コア科目・2年生)
初年次セミナー 第2回 文字の出力.
Day3 Day4 Day3 Day4.
09 06/23 PHP と SQL (MySQL) の連携 その2
この資料は、テキストをもとに、講義のために作成したものです.学習用に活用してください.
14.テーブル定義,一対多の関係,多対多の関係, 外部キー,索引(インデックス),データベース操作
マイクロソフト Access を使ってみよう 第1回
データベース設計 第9回 Webインタフェースの作成(1)
マイクロソフト Access での SQL 演習 第1回 SQL問い合わせ(クエリ)
マイクロソフト Access を使ってみよう 第4回
サンデーPonセットアップマニュアル <目次> 1.動作環境について 2.セットアップ作業 ①. ソースの設置
Microsoft PowerPoint Netscape Communicator
三浦欽也 2009年11月 〔Sc182(2) 情報科学演習 参考資料〕
第8章 Web技術とセキュリティ   岡本 好未.
メールの利用1 Webメールの利用方法.
Microsoft PowerPoint98 Netscape Communicator 4.06[ja]
九州大学キャンパスクラウド 利用法 情報ネットワーク特論 講義資料.
SQL データベースアクセスのための文法 担当 岡村耕二 月曜日 2限 平成21年度 情報科学III (理系コア科目・2年生)
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
3-10. MySQLシステムの管理  2004年6月10日  大北高広                01T6010F.
第1回.リレーショナルデータベースを使ってみよう
第1回.リレーショナルデータベースを使ってみよう
第2回.リレーショナルデータベース入門 SQL を用いたテーブルへの行の挿入 SQL 問い合わせの発行と評価結果の確認.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
第3回.テーブルの結合 結合条件 SQL を用いた結合問い合わせ.
Linux リテラシ 2006 第5回 SSH と SCP CIS RAT.
09 06/23 PHP と SQL (MySQL) の連携 その1
3-6.インデックスについて 3-7.関数と併用されることの 多いMySQLコマンド
3-3.テーブルを更新する 2004年 4月22日(木) 01T6074X 茂木啓悟.
3.1 PowerPoint の概要 PowerPointを使ってできること
コンピュータ プレゼンテーション.
09 06/23 PHP と SQL (MySQL) の連携 その2
UNIX演習 情報ネットワーク特論.
PHP と SQL (MySQL) の連携 大量のデータを扱う
ファイルのアップロード HTMLファイルをWebサーバにアップロード 名商大のWebサーバ(opinion.nucba.ac.jp)
コンピュータ プレゼンテーション.
PHP 概要 担当 岡村耕二 月曜日 2限 平成22年度 情報科学III (理系コア科目・2年生)
3.リレーショナルデータベース,主キー, SQL
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
UNIX演習 情報ネットワーク特論資料.
09 06/23 PHP と SQL (MySQL) の連携 その3
データベース第3回目 意味ごとにテーブルを分ける
PHP と SQL (MySQL) の連携 日本語のデータを扱う
第1章 文字の表示と計算 printfと演算子をやります.
Presentation transcript:

PHP と SQL (MySQL) の連携 複数のテーブルを扱う 2007/6/13 平成22年度 情報科学III (理系コア科目・2年生) PHP と SQL (MySQL) の連携  複数のテーブルを扱う 担当 岡村耕二 月曜日 2限 http://okaweb.ec.kyushu-u.ac.jp/lectures/jk3/ 本資料の一部は、堀良彰准教授、天野浩文准教授、菅沼明准教授等による以前の講義資料をもとにしています。 情報科学III(10)

前回のおさらい(1) 主な MySQL 関数 MySQL との通信 mysql_connect():MySQLへの接続 mysql_query():コマンドまたはSQL文の実行 mysql_select_db():データベースの切り替え mysql_close():MySQLからの切断 MySQL から受け取った検索結果の操作 mysql_fetch_array():検索結果から1行読み出す mysql_data_seek():読み出す位置を変更する mysql_num_rows():検索結果の行数を求める

前回のおさらい(2) PHP 4.x から MySQL 4.x を利用する際の標準的な作業手順 MySQLサーバへの接続 PHP の mysql_connect() 関数 通信に使用する文字コードの設定 PHP の mysql_query() 関数 + MySQL の SET CHARACTER SET 文 データベースの選択 PHP の mysql_select_db() 関数 データベースの操作 PHP の mysql_query() 関数 + MySQL の SELECT/INSERT/UPPDATE/DELETE 文 この④は繰り返してもよい.DBを切り替えるときは,③に戻る. MySQLサーバからの切断 PHP の mysql_close() 関数

前回のおさらい(3) $results =mysql_query($query, $link); $row = mysql_fetch_array($results, MYSQL_ASSOC); mysql_fetch_array() mysql_query() $results $row MySQL DB 現在の 読み出し 位置 mysql_fetch_array() 関数は, $results の中に行が残っている限り,何度でも呼び出せる. 呼び出されるたびに,「現在の読み出し位置」が1レコード分だけ下に移動する. 配付資料では,図の部品に一部欠損があった.

PHPとMySQLについて 知っておくと役立つこと(つづき) 前回の「豆知識?」を改題

実際のデータベースでは… ブラウザ経由でやりたい仕事は,データの一覧表示だけではない. 与えられた条件に合致するデータの検索 新規データの登録 登録済みデータの修正 不要データの削除  : これらが,それぞれ別のプログラムになるのは,まぁしかたがない. しかし,1つの作業が済んだら,すぐに同じ名簿で別の作業を始めたくなるかも知れない.

「ファイル」メニューの「開く」をクリック プログラムがいっぱいあると… やりたい処理のプログラムのURLを毎回直接指定する? 「ファイル」メニューの「開く」をクリック PHPプログラム1 =(URL1) そんな 面倒な! PHPプログラム2 =(URL2) PHPプログラム n =(URL n)

そういうときは… 最初のメニュー画面のURLだけを指定して,あとは,そこからクリックできるようにしたい. URLを指定して ここから先は 「開く」 ここから先は クリックだけ PHPプログラム1 MySQL DBMS PHPプログラム2 作業1 作業2 DB 作業 n PHPプログラム n

どのプログラムでも毎回同じになる部分がある MySQL に接続してから,データベースを選択するまで MySQL から切断するところ 切断はPHPの文1行だけなのであまり問題がない. NySQLに接続するところから,データベースを選択するところまでは,パスワードやDB名を変更したりすると,書き換えが面倒. ①接続 PHPプログラム MySQL DBMS ②文字コード設定 ③DB選択 ④クエリ実行 DB ⑤検索結果の処理 ⑥切断

共通の部分を1つのファイルにまとめる 各プログラムに,そのファイルを読み込んで実行する. PHPプログラム1 PHPプログラム2 共通 部分 PHPプログラム n パスワードなどを変更した場合は,ここだけ修正すれば済む.

PHPでは… require 文 PHPプログラムのその場所に,指定したファイルを読み込んでそのまま実行させる. ファイルが存在しない場合には,そこでエラーとなる. <?php require ( 'ファイル名' ); ?> PHPプログラム require 文の1行がまるまるこのプログラムで置き換わるイメージ (include 文もほぼ同じ効果を持つが,include 文は,ファイルが見つからなくてもエラーにならない)

しかも… 読み込まれるファイルの拡張子は,.php でなくてよい. むしろ,dbconnect.inc などのように,わざと .php でない拡張子にするのがよい. web サーバの設定により,dbconnect.inc を直接URLで指定してもアクセスできないようにコントロールできるから. dbconnect.inc <?php require ( 'ファイル名' ); ?> PHPプログラム

PHP + MySQL のシステム構成例(1) PHPプログラム1 メインメニュー HTMLファイル <form>タグがあるかもしれない PHPプログラム2 PHPプログラム2a これはきっと<form>タグを含んでいる. PHPプログラム n 共通 部分

PHP + MySQL のシステム構成例(2) PHPプログラム1 HTMLファイル 「終了」をクリック PHPプログラム2 PHPプログラム2a HTMLファイル 「お疲れ様でした.」 PHPプログラム n 共通 部分

さらに… これらのファイルは,すべて,同じディレクトリ(フォルダ)にまとめておくとよい. [te999999@bossp ~]$ cd public_html [te999999@bossp public_html]$ cd address_book [te999999@bossp address_book]$ ls -l 合計 20 -rw-r--r-- 1 te999999 ... 6月 12 22:47 dbconnect.inc -rw-r--r-- 1 te999999 ... 6月 12 22:47 end.html -rw-r--r-- 1 te999999 ... 6月 12 22:46 prog1.php -rw-r--r-- 1 te999999 ... 6月 12 22:46 prog2.php -rw-r--r-- 1 te999999 ... 6月 12 22:46 prog3.php : -rw-r--r-- 1 te999999 ... 6月 12 23:04 start.html [te999999@bossp address_book]$ 住所録関連のファイル

今日の作業(1) 前回作った(作りかけの)プログラムが public_html 直下にある場合は: bossp にログインして,public_html の下に新しいディレクトリを作る (mkdir コマンド) 前回のプログラムを,その新しいディレクトリに移動させる (mv コマンド) PC側にファイルが残っていることが確認できたら,ファイルを削除する(rm コマンド)だけでもよい(要確認!). mkdir 新ディレクトリ名 mv ファイル名 移動先ディレクトリ rm ファイル名

今日の作業(2) PC側での作業 前回のプログラムから,MySQLへの接続とDBの選択の部分を切り出して,別のファイル(共通部分のファイル)に保存する. 今日のところは,ファイル名の拡張子は「.php 」にしておく. この理由は,次回説明する. 前回のプログラムの上記の部分は,require 文で置き換える. メインメニューのHTMLファイルを作り,そこからクリックだけで前回のプログラムに飛べるようにする. 他の作業をするためのPHPプログラムを作る必要はないが,他にどんなメニュー項目が必要か,考えて作っておくとよい. 逆に,プログラムを実行し終わったら,どうやってメインメニューに戻ったらよいか? できあがったファイル群を,bossp 上で先ほど作ったディレクトリに転送する.

そこまで終われば… ここまでできていることになる. PHPプログラム1 メインメニュー HTMLファイル PHPプログラム2 PHPプログラム2a PHPプログラム n 共通 部分

練習問題: まずSQLコマンドで、次にプログラムで Projection をやってみよう。 Join をやってみよう。 SELECT [ALL | DISTINCT] SELECT項目リスト FROM テーブル名1[, テーブル名2, ...] [ JOIN 結合条件 ] [ WHERE 検索条件 ] SELECT [ALL | DISTINCT] SELECT項目リスト FROM テーブル名1[, テーブル名2, ...] [ JOIN 結合条件 ] [ WHERE 検索条件 ]

練習 DB jk2010 で以下の SQL を実行してみよ。 select * from table table10062800; Select * from table10062800 where vendor="nokia"; Select * from table table100628index; Select * from table table100628n; Select * from table table100628sa; Select * from table table100628so; Select * from table100628index join table100628n ; Select * from table100628index join table100628n on table100628index.type=table100628n.type; Select * from table100628index join table100628n on table100628index.type=table100628n.type where vendor="nokia"; select table100628index.vendor, table100628index.type, table100628n.name, table100628n.price from table100628index join table100628n on table100628index.type=table100628n.type where vendor="nokia";

table10062800 +--------------+-----------+------+--------+ | vendor | type | name | price | | nokia | cellphone | N97 | 100000 | | nokia | cellphone | N78 | 60000 | | nokia | cellphone | E71 | 60000 | | nokia | cellphone | E63 | 30000 | | nokia | bluetooth | BT00 | 10000 | | nokia | bluetooth | BT01 | 12000 | | samsung | cellphone | SS00 | 50000 | | nokia | cable | CA00 | 1000 | | nokia | cable | CA01 | 2000 | | samsung | cellphone | SS10 | 60000 | | samsung | bluetooth | BT00 | 5000 | | samsung | bluetooth | BT10 | 7000 | | sonyericsson | cellphone | X1 | 80000 | | sonyericsson | bluetooth | BT10 | 10000 |

select * from table10062800 where vendor="nokia"; +--------+-----------+------+--------+ | vendor | type | name | price | | nokia | cellphone | N97 | 100000 | | nokia | cellphone | N78 | 60000 | | nokia | cellphone | E71 | 60000 | | nokia | cellphone | E63 | 30000 | | nokia | bluetooth | BT00 | 10000 | | nokia | bluetooth | BT01 | 12000 | | nokia | cable | CA00 | 1000 | | nokia | cable | CA01 | 2000 |

taable100628index,n,sa,so +--------------+-----------+ | vendor | type | | nokia | cellphone | | nokia | bluetooth | | nokia | cable | | samsung | cellphone | | samsung | bluetooth | | sonyericsson | cellphone | | sonyericsson | bluetooth | +-----------+------+--------+ | type | name | price | | cellphone | N97 | 100000 | | cellphone | N78 | 60000 | | cellphone | E71 | 60000 | | cellphone | E63 | 30000 | | bluetooth | BT01 | 12000 | | cable | CA00 | 1000 | | cable | CA01 | 2000 | | bluetooth | BT00 | 10000 | +-----------+------+-------+ | type | name | price | | cellphone | SS00 | 50000 | | cellphone | SS10 | 60000 | | bluetooth | BT00 | 5000 | | bluetooth | BT10 | 7000 | +-----------+------+-------+ | type | name | price | | cellphone | X1 | 80000 | | bluetooth | BT10 | 10000 |

select. from table100628index join table100628n on table100628index select * from table100628index join table100628n on table100628index.type=table100628n.type; +--------------+-----------+-----------+------+--------+ | vendor | type | type | name | price | | nokia | cellphone | cellphone | N97 | 100000 | | samsung | cellphone | cellphone | N97 | 100000 | | sonyericsson | cellphone | cellphone | N97 | 100000 | | nokia | cellphone | cellphone | N78 | 60000 | | samsung | cellphone | cellphone | N78 | 60000 | | sonyericsson | cellphone | cellphone | N78 | 60000 | | nokia | cellphone | cellphone | E71 | 60000 | | samsung | cellphone | cellphone | E71 | 60000 | | sonyericsson | cellphone | cellphone | E71 | 60000 | | nokia | cellphone | cellphone | E63 | 30000 | | samsung | cellphone | cellphone | E63 | 30000 | | sonyericsson | cellphone | cellphone | E63 | 30000 | | nokia | bluetooth | bluetooth | BT01 | 12000 | | samsung | bluetooth | bluetooth | BT01 | 12000 | | sonyericsson | bluetooth | bluetooth | BT01 | 12000 | | nokia | cable | cable | CA00 | 1000 | | nokia | cable | cable | CA01 | 2000 | | nokia | bluetooth | bluetooth | BT00 | 10000 | | samsung | bluetooth | bluetooth | BT00 | 10000 | | sonyericsson | bluetooth | bluetooth | BT00 | 10000 | table100628n table100628index table100628index.type=table100628n.type

select. from table100628index join table100628n on table100628index select * from table100628index join table100628n on table100628index.type=table100628n.type where vendor="nokia“; +--------+-----------+-----------+------+--------+ | vendor | type | type | name | price | | nokia | cellphone | cellphone | N97 | 100000 | | nokia | cellphone | cellphone | N78 | 60000 | | nokia | cellphone | cellphone | E71 | 60000 | | nokia | cellphone | cellphone | E63 | 30000 | | nokia | bluetooth | bluetooth | BT01 | 12000 | | nokia | cable | cable | CA00 | 1000 | | nokia | cable | cable | CA01 | 2000 | | nokia | bluetooth | bluetooth | BT00 | 10000 |

select table100628index. vendor, table100628index. type, table100628n select table100628index.vendor, table100628index.type, table100628n.name, table100628n.price from table100628index join table100628n on table100628index.type=table100628n.type where vendor="nokia"; +--------+-----------+------+--------+ | vendor | type | name | price | | nokia | cellphone | N97 | 100000 | | nokia | cellphone | N78 | 60000 | | nokia | cellphone | E71 | 60000 | | nokia | cellphone | E63 | 30000 | | nokia | bluetooth | BT01 | 12000 | | nokia | cable | CA00 | 1000 | | nokia | cable | CA01 | 2000 | | nokia | bluetooth | BT00 | 10000 |

演習問題 テーブルのカラムとして 商品名 価格 色 重さ   を、用意し、「商品名」で検索し、「色」「重さ」はオプションで表示できるようなプログラムを作成せよ。 テーブル1 テーブル2 テーブル3 を用意して、「商品名」で検索して、「価格」「色」「重さ」が表示されるプログラムを作成せよ。

課題問題 店舗名と在庫の商品のテーブルを作成し、レコードを入力せよ。 店舗名と伊都キャンパスからの距離のテーブルを作成し、レコードを入力せよ。 伊都キャンパスからの距離を入力すれば、在庫の商品や店舗名が表示されるプログラムを作成せよ。