# データベース設計とリレーションについて ## 授業資料 [ダウンロードリンク](https://drive.google.com/drive/u/1/folders/1FhLRMW0I85497bdS1yKf8nSF1BqweODw) ## 1章:環境準備(DBの準備) ### まずはphpMyAdminを開いて授業用のDBを作成する #### 1. MAMPを起動 #### 2. WebStartボタンから起動トップページを表示 #### 3. ページの真ん中MySQLのタブからphpMyAdminのリンクをクリック #### 4. 起動した画面がMySQLを管理するphpMyAdminの画面が表示されます。 #### 5. データベースタブをクリック #### 6. データベースを作成から以下の名前で作成 ``` データベース名:gs_db6 照合順序:utf8_unicode_ci ``` #### 7. 作成ボタンをクリック 左側にgs_db6というデータベースができていると思います。 現在は空っぽです。 ### SQLファイルからインポートしてみよう 〇〇.sqlというSQLファイルをインポートしてデータを作成します。 #### 1. gs_db6を選択した状態でインポートタブをクリック #### 2. ファイルを選択をクリックして配布した資料内のSQLフォルダ内のgs_db6.sqlを選択 #### 3. 実行する #### 4. 今日の授業用DB完成 ## 2章:投稿者が判別できるアンケートシステムの構築 ### データベースに1対多のリレーションを組む為のカラムを追加する #### 1. gs_db6を選択した状態でgs_an_tableをクリック #### 2. gs_an_tableを選択した状態で構造タブをクリック #### 3. 中段あたりにあるカラム追加フォームからカラムを追加 `1個のカラムを追加するidの後へ`で実行 #### 4. カラムを追加 ``` user_id int(10) ``` #### 5. 事前に登録済みのデータのuser_idは全て0になっているので1~3の任意の数字に変更 #### 6. gs_user_tableのnameの部分をuser_nameに変更 ### データ登録時のログインユーザーidを保存する処理を追加 #### 1. insert.phpでまずはログインユーザーのidを取得 ``` <?php session_start();//追記!!! //1. POSTデータ取得 省略 //ログインユーザーidを取得 $user_id = $_SESSION["user_id"]; ``` #### 2. insert.phpのSQLを変更 ``` INSERT INTO gs_an_table(user_id,name,email,naiyou,indate)VALUES(:user_id,:name,:email,:naiyou,sysdate()) ``` bind変数も追加 ``` $stmt->bindValue(':user_id', $user_id, PDO::PARAM_INT); //Integer(数値の場合 PDO::PARAM_INT) ``` #### 3.実際にformからデータ登録してデータベースに保存されているかチェック 別のアカウントでもログインして2~3個ほどデータを登録 ### アンケート一覧で投稿者名を横に表示する(リレーション先のデータ取得) #### 1.Select.php のSQL文をアップデート ``` SELECT * FROM gs_an_table INNER JOIN gs_user_table ON gs_an_table.user_id = gs_user_table.id ``` ちなみに文法的には ``` SELECT * FROM 主テーブル INNER JOIN 子テーブル ON 主テーブル.キー = 子テーブル.キー ``` *詳しく知りたい方はこの新卒の子が書いてるQiitaが初心者にわかりやすいのでおすすめ https://qiita.com/SuguruOoki/items/e83da54b6c78cc58e40d #### 2.select.phpに表示処理のwhile文内を編集 ``` $view .= $r["id"]."|".$r["name"]."|".$r["email"]; ``` ↓↓↓↓↓↓↓↓ ``` $view .= $r["id"]."|".$r["name"]."|".$r["email"].$r["user_name"]; ``` #### 3.IDがずれたりしてるので一時対策としてgs_user_tableのidをuser_idに名前変更します。 login_act.phpとinsert.phpでも一部修正
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.