# nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai architecture

> Architecture diagram of the GitHub repository nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai, generated by GitDiagram from its file tree, README and a sample of source files (last updated 2026-10-01). It is an AI-made overview: check details against the source.

- Interactive diagram: https://gitdiagram.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai
- Repository: https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai

## Overview

This repository is a collection of standalone PHP learning exercises, not one integrated application. The main user-to-result patterns are submitting a form and seeing validation/results, progressing through a session-backed registration flow, editing a profile, and viewing database-backed reports. The sampled database pages share a PDO singleton; other exercises are independent. The README is empty, and several small exercises were not sampled, so their behavior and connections are not inferred.

Main entry points: [`session_07/Path3/Database.php`](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/Database.php) (PDO Singleton), [`session_03/mini_project/profile.php`](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/profile.php) (Profile Management), [`session_07/Path3/top_customers.php`](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/top_customers.php) (Top Customers Report), [`session_07/Path4/index.php`](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path4/index.php) (Product Dashboard)

## Diagram (Mermaid)

```mermaid
flowchart TD

subgraph group_basics["PHP Basics"]
  node_welcome["Welcome Page<br/>[02_welcome.php.php]"]
  node_session2["Session 2 Exercises"]
end

subgraph group_forms["Form Exercises"]
  node_calculator["Calculator<br/>[calculator.php]"]
  node_login_counter["Login Counter<br/>[login.php]"]
  node_search_echo["Search Echo<br/>[search.php]"]
  node_contact_submit["Contact Submission<br/>[submit.php]"]
  node_self_form["Self-Processing Form"]
  node_form_utils["Form Utilities<br/>[utils.php]"]
  node_sticky_form["Sticky Form<br/>[sticky.php]"]
  node_step1["Registration Step One<br/>[step1.php]"]
  node_step2["Registration Step Two<br/>[step2.php]"]
end

subgraph group_project["Mini Project"]
  node_mini_index["Project Entry<br/>[index.php]"]
  node_mini_login["User Login<br/>[login.php]"]
  node_mini_register["User Registration<br/>[register.php]"]
  node_mini_profile["Profile Management<br/>[profile.php]"]
  node_avatar_profile["Upload Profile Handler<br/>[profile.php]"]
  node_mini_logout["User Logout<br/>[logout.php]"]
end

subgraph group_database["Database Exercises"]
  node_top_customers["Top Customers Report<br/>[top_customers.php]"]
  node_product_dashboard["Product Dashboard<br/>[index.php]"]
  node_db_connection["PDO Singleton<br/>[Database.php]"]
end

node_learner(("Learner"))
node_mysql[("MySQL Database")]

node_learner -->|"opens"| node_welcome
node_learner -.->|"opens exercises"| node_session2
node_learner -->|"submits numbers"| node_calculator
node_learner -->|"submits credentials"| node_login_counter
node_learner -->|"enters query"| node_search_echo
node_learner -->|"submits form"| node_contact_submit
node_learner -->|"submits form"| node_self_form
node_learner -->|"submits form"| node_sticky_form
node_learner -.->|"starts registration"| node_step1
node_learner -.->|"opens project"| node_mini_index
node_learner -.->|"logs in"| node_mini_login
node_learner -.->|"registers"| node_mini_register
node_learner -->|"edits profile"| node_mini_profile
node_learner -->|"views report"| node_top_customers
node_learner -->|"filters products"| node_product_dashboard
node_step2 -->|"redirects to"| node_step1
node_mini_profile -->|"links to"| node_mini_logout
node_top_customers -->|"gets connection"| node_db_connection
node_product_dashboard -->|"gets connection"| node_db_connection
node_db_connection -->|"opens PDO connection"| node_mysql

click node_welcome "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/Active_learning_session_00_01_Nguyen%20Quoc%20Dai_23070023/02_welcome.php.php"
click node_session2 "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/tree/main/Session%202"
click node_calculator "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex2/calculator.php"
click node_login_counter "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex3/login.php"
click node_search_echo "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex4/search.php"
click node_contact_submit "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex1/submit.php"
click node_self_form "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex5/Self-Processing.php"
click node_form_utils "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex6/utils.php"
click node_sticky_form "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex7/sticky.php"
click node_step1 "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex8/step1.php"
click node_step2 "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex8/step2.php"
click node_mini_index "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/index.php"
click node_mini_login "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/login.php"
click node_mini_register "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/register.php"
click node_mini_profile "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/profile.php"
click node_avatar_profile "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/uploads/profile.php"
click node_mini_logout "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/logout.php"
click node_top_customers "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/top_customers.php"
click node_product_dashboard "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path4/index.php"
click node_db_connection "https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/Database.php"

classDef toneNeutral fill:#f8fafc,stroke:#334155,stroke-width:1.5px,color:#0f172a
classDef toneBlue fill:#dbeafe,stroke:#2563eb,stroke-width:1.5px,color:#172554
classDef toneAmber fill:#fef3c7,stroke:#d97706,stroke-width:1.5px,color:#78350f
classDef toneMint fill:#dcfce7,stroke:#16a34a,stroke-width:1.5px,color:#14532d
classDef toneRose fill:#ffe4e6,stroke:#e11d48,stroke-width:1.5px,color:#881337
classDef toneIndigo fill:#e0e7ff,stroke:#4f46e5,stroke-width:1.5px,color:#312e81
classDef toneTeal fill:#ccfbf1,stroke:#0f766e,stroke-width:1.5px,color:#134e4a
class node_welcome,node_session2 toneBlue
class node_calculator,node_login_counter,node_search_echo,node_contact_submit,node_self_form,node_form_utils,node_sticky_form,node_step1,node_step2,node_mysql toneAmber
class node_mini_index,node_mini_login,node_mini_register,node_mini_profile,node_avatar_profile,node_mini_logout toneMint
class node_top_customers,node_product_dashboard,node_db_connection toneRose
class node_learner toneIndigo
```

## Components

### PHP Basics

- [Welcome Page](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/Active_learning_session_00_01_Nguyen%20Quoc%20Dai_23070023/02_welcome.php.php): `Active_learning_session_00_01_Nguyen Quoc Dai_23070023/02_welcome.php.php`
- [Session 2 Exercises](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/tree/main/Session%202): `Session 2`

### Form Exercises

- [Calculator](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex2/calculator.php): `session_03/ex2/calculator.php`
- [Login Counter](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex3/login.php): `session_03/ex3/login.php`
- [Search Echo](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex4/search.php): `session_03/ex4/search.php`
- [Contact Submission](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex1/submit.php): `session_03/ex1/submit.php`
- [Self-Processing Form](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex5/Self-Processing.php): `session_03/ex5/Self-Processing.php`
- [Form Utilities](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex6/utils.php): `session_03/ex6/utils.php`
- [Sticky Form](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex7/sticky.php): `session_03/ex7/sticky.php`
- [Registration Step One](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex8/step1.php): `session_03/ex8/step1.php`
- [Registration Step Two](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/ex8/step2.php): `session_03/ex8/step2.php`

### Mini Project

- [Project Entry](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/index.php): `session_03/mini_project/index.php`
- [User Login](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/login.php): `session_03/mini_project/login.php`
- [User Registration](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/register.php): `session_03/mini_project/register.php`
- [Profile Management](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/profile.php): `session_03/mini_project/profile.php`
- [Upload Profile Handler](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/uploads/profile.php): `session_03/mini_project/uploads/profile.php`
- [User Logout](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_03/mini_project/logout.php): `session_03/mini_project/logout.php`

### Database Exercises

- [Top Customers Report](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/top_customers.php): `session_07/Path3/top_customers.php`
- [Product Dashboard](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path4/index.php): `session_07/Path4/index.php`
- [PDO Singleton](https://github.com/nguyenquocdai1406-gif/ins306401_ins3064_nguyenquocdai/blob/main/session_07/Path3/Database.php): `session_07/Path3/Database.php`

### Other components

- **Learner**
- **MySQL Database**

## Connections

- Learner → Welcome Page: opens (evidence: `Active_learning_session_00_01_Nguyen Quoc Dai_23070023/02_welcome.php.php`)
- Learner → Session 2 Exercises: opens exercises
- Learner → Calculator: submits numbers (evidence: `session_03/ex2/calculator.php`)
- Learner → Login Counter: submits credentials (evidence: `session_03/ex3/login.php`)
- Learner → Search Echo: enters query (evidence: `session_03/ex4/search.php`)
- Learner → Contact Submission: submits form (evidence: `session_03/ex1/submit.php`)
- Learner → Self-Processing Form: submits form (evidence: `session_03/ex5/Self-Processing.php`)
- Learner → Sticky Form: submits form (evidence: `session_03/ex7/sticky.php`)
- Learner → Registration Step One: starts registration
- Learner → Project Entry: opens project
- Learner → User Login: logs in
- Learner → User Registration: registers
- Learner → Profile Management: edits profile (evidence: `session_03/mini_project/profile.php`)
- Learner → Top Customers Report: views report (evidence: `session_07/Path3/top_customers.php`)
- Learner → Product Dashboard: filters products (evidence: `session_07/Path4/index.php`)
- Registration Step Two → Registration Step One: redirects to (evidence: `session_03/ex8/step2.php`)
- Profile Management → User Logout: links to (evidence: `session_03/mini_project/profile.php`)
- Top Customers Report → PDO Singleton: gets connection (evidence: `session_07/Path3/top_customers.php`)
- Product Dashboard → PDO Singleton: gets connection (evidence: `session_07/Path4/index.php`)
- PDO Singleton → MySQL Database: opens PDO connection (evidence: `session_07/Path3/Database.php`)
