Creating a demo for a member management system with PHP and an MVC framework requires several steps, including setting up a database, defining the model, creating views, and implementing controller actions. Below is a simplified example using PHP and MySQL for the database. Please note that this is a basic demonstration, and in a production environment, you would need to enhance security, validation, error handling, and other aspects.
**Prerequisites:**
1. PHP installed on your machine.
2. A web server (e.g., Apache) set up to run PHP scripts.
3. MySQL database installed and running.
Here's a step-by-step guide:
1. **Database Setup:**
Create a MySQL database named `toucantech` and a table named `members` to store member information. You can use a tool like phpMyAdmin or run SQL commands from the terminal.
```sql
CREATE DATABASE toucantech;
USE toucantech;
CREATE TABLE members (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
school VARCHAR(255) NOT NULL
);
```
2. **MVC Directory Structure:**
Organize your project files into an MVC directory structure. For example:
```
- /public
- index.php
- /app
- /controllers
- MemberController.php
- /models
- MemberModel.php
- /views
- add_member.php
- show_members.php
```
3. **Create Model (MemberModel.php):**
Define a PHP class to interact with the database.
```php
<?php
class MemberModel {
private $conn;
public function __construct($db) {
$this->conn = $db;
}
public function addMember($name, $email, $school) {
$query = "INSERT INTO members (name, email, school) VALUES (?, ?, ?)";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("sss", $name, $email, $school);
return $stmt->execute();
}
public function getMembersBySchool($school) {
$query = "SELECT * FROM members WHERE school = ?";
$stmt = $this->conn->prepare($query);
$stmt->bind_param("s", $school);
$stmt->execute();
$result = $stmt->get_result();
return $result->fetch_all(MYSQLI_ASSOC);
}
}
```
4. **Create Controller (MemberController.php):**
Define a controller to handle HTTP requests and render views.
```php
<?php
require_once('../models/MemberModel.php');
class MemberController {
private $model;
public function __construct($db) {
$this->model = new MemberModel($db);
}
public function addMember() {
if ($_SERVER['REQUEST_METHOD'] === 'POST') {
$name = $_POST['name'];
$email = $_POST['email'];
$school = $_POST['school'];
if ($this->model->addMember($name, $email, $school)) {
header("Location: show_members.php?school=$school");
exit;
}
}
include('../views/add_member.php');
}
public function showMembers($school) {
$members = $this->model->getMembersBySchool($school);
include('../views/show_members.php');
}
}
```
5. **Create Views (add_member.php and show_members.php):**
Create HTML forms for adding members and displaying members by school.
- `add_member.php` for adding a new member.
- `show_members.php` for displaying members by school.
6. **Create the Entry Point (index.php):**
This file will route requests to the appropriate controller action.
```php
<?php
require_once('../app/controllers/MemberController.php');
$db = new mysqli("localhost", "root", "", "toucantech"); // Adjust the database credentials
if (!$db) {
die("Database connection failed: " . $db->connect_error);
}
$controller = new MemberController($db);
if (isset($_GET['action'])) {
$action = $_GET['action'];
if (method_exists($controller, $action)) {
$controller->$action();
} else {
echo "Invalid action.";
}
} else {
echo "Invalid request.";
}
```
7. **Testing:**
Start your web server and access the application through `http://localhost/path/to/index.php?action=addMember` to add members or `http://localhost/path/to/index.php?action=showMembers&school=YourSchool` to view members for a specific school.
Remember to implement proper error handling, input validation, authentication, and security measures when deploying this in a real-world scenario. This is a basic example to get you started with a PHP MVC-based member management system.