◈ TASK_02 // CRUD OPS

[ DATABASE OPERATIONS ]
connect_error)die("Connection failed: ".$conn->connect_error); // Tables $sqls=[ "CREATE TABLE IF NOT EXISTS Modules(moduleID INT AUTO_INCREMENT PRIMARY KEY,moduleCode VARCHAR(20) UNIQUE NOT NULL,moduleName VARCHAR(100) NOT NULL)", "CREATE TABLE IF NOT EXISTS Lecturers(lecturerID INT AUTO_INCREMENT PRIMARY KEY,firstName VARCHAR(50) NOT NULL,lastName VARCHAR(50) NOT NULL,email VARCHAR(100) UNIQUE NOT NULL)", "CREATE TABLE IF NOT EXISTS Roles(roleID INT AUTO_INCREMENT PRIMARY KEY,roleName VARCHAR(50) NOT NULL,roleDescription TEXT)", "CREATE TABLE IF NOT EXISTS ModuleLecturerRole(moduleLecturerRoleID INT AUTO_INCREMENT PRIMARY KEY,moduleID INT NOT NULL,lecturerID INT NOT NULL,roleID INT NOT NULL,FOREIGN KEY(moduleID)REFERENCES Modules(moduleID)ON DELETE CASCADE,FOREIGN KEY(lecturerID)REFERENCES Lecturers(lecturerID)ON DELETE CASCADE,FOREIGN KEY(roleID)REFERENCES Roles(roleID)ON DELETE CASCADE,UNIQUE KEY unique_assignment(moduleID,lecturerID,roleID))" ]; foreach($sqls as $s)$conn->query($s); // Sample data $ck=$conn->query("SELECT COUNT(*) as c FROM Modules");if($ck->fetch_assoc()['c']==0){ $conn->query("INSERT INTO Modules(moduleCode,moduleName)VALUES('ICT2611','Internet Programming'),('ICT2613','Internet Programming'),('ICT3612','Advanced Internet Programming'),('ICT3715','Web App Development'),('ICT3721','Database Design')"); $conn->query("INSERT INTO Lecturers(firstName,lastName,email)VALUES('John','Smith','smithj@unisa.ac.za'),('Mary','Johnson','johnsonm@unisa.ac.za'),('Peter','Williams','williamsp@unisa.ac.za'),('Susan','Brown','browns@unisa.ac.za'),('David','Jones','jonesd@unisa.ac.za')"); $conn->query("INSERT INTO Roles(roleName,roleDescription)VALUES('Primary Lecturer','Main lecturer'),('Secondary Lecturer','Supporting'),('Internal Moderator','QA internal'),('External Moderator','QA external'),('Critical Reader','Content review')"); $assign=[[1,1,1],[1,2,2],[1,3,3],[2,1,1],[2,4,2],[2,5,4],[3,2,1],[3,3,2],[3,1,3],[4,4,1],[4,5,2],[4,1,4],[5,3,1],[5,5,2],[5,2,3]]; foreach($assign as $a)$conn->query("INSERT INTO ModuleLecturerRole(moduleID,lecturerID,roleID)VALUES($a[0],$a[1],$a[2])"); } // CRUD if(isset($_POST['add_mod'])){$c=$_POST['code'];$n=$_POST['name'];$s=$conn->prepare("INSERT INTO Modules(moduleCode,moduleName)VALUES(?,?)");$s->bind_param("ss",$c,$n);$s->execute()?print'
+ Module added
':print'
! Error
';$s->close();} if(isset($_POST['upd_assign'])){$id=$_POST['aid'];$mid=$_POST['mid'];$lid=$_POST['lid'];$rid=$_POST['rid'];$s=$conn->prepare("UPDATE ModuleLecturerRole SET moduleID=?,lecturerID=?,roleID=? WHERE moduleLecturerRoleID=?");$s->bind_param("iiii",$mid,$lid,$rid,$id);$s->execute()?print'
+ Assignment updated
':print'
! Error
';$s->close();} if(isset($_POST['del_lec'])){$id=$_POST['lid'];$ck2=$conn->query("SELECT*FROM ModuleLecturerRole WHERE lecturerID=$id");if($ck2->num_rows>0)print'
! Has assignments
';else{$s=$conn->prepare("DELETE FROM Lecturers WHERE lecturerID=?");$s->bind_param("i",$id);$s->execute()?print'
+ Lecturer deleted
':print'
! Error
';$s->close();}} ?>

// TABLES

▸ $t"; $r=$c->query("SELECT*FROM $t"); if($r->num_rows>0){ echo"";foreach($cols as $col)echo"";if($id)echo"";echo""; while($row=$r->fetch_assoc()){echo"";foreach($cols as $col)echo"";if($id)echo"";echo"";} echo"
$colACT
".htmlspecialchars($row[$col])."[EDIT]
"; }else echo"

∅ No data

"; } render($conn,"Modules",['moduleID','moduleCode','moduleName']); render($conn,"Lecturers",['lecturerID','firstName','lastName','email'],'lecturerID'); render($conn,"Roles",['roleID','roleName','roleDescription']); echo"

▸ ModuleLecturerRole

"; $r=$conn->query("SELECT mlr.moduleLecturerRoleID,m.moduleCode,CONCAT(l.firstName,' ',l.lastName)as lecturer,r.roleName FROM ModuleLecturerRole mlr JOIN Modules m ON mlr.moduleID=m.moduleID JOIN Lecturers l ON mlr.lecturerID=l.lecturerID JOIN Roles r ON mlr.roleID=r.roleID"); if($r->num_rows>0){ echo""; while($row=$r->fetch_assoc()){echo"";} echo"
IDModuleLecturerRoleACT
{$row['moduleLecturerRoleID']}{$row['moduleCode']}{$row['lecturer']}{$row['roleName']}[EDIT]
"; } ?>

// CRUD FORMS

▸ Add Module

query("SELECT*FROM ModuleLecturerRole WHERE moduleLecturerRoleID=$id");if($row=$r->fetch_assoc()){?>

▸ Edit Assignment

▸ Delete Lecturer

// SELECT QUERIES

'ORDER BY: SELECT * FROM Modules ORDER BY moduleCode','q2'=>'LIKE: SELECT * FROM Lecturers WHERE email LIKE "%@unisa.ac.za"','q3'=>'JOIN: SELECT m.moduleCode,CONCAT(l.firstName," ",l.lastName)as lecturer,r.roleName FROM ModuleLecturerRole mlr JOIN Modules m ON mlr.moduleID=m.moduleID JOIN Lecturers l ON mlr.lecturerID=l.lecturerID JOIN Roles r ON mlr.roleID=r.roleID','q4'=>'WHERE AND: SELECT * FROM Lecturers WHERE firstName LIKE "J%" AND email LIKE "%@unisa.ac.za"','q5'=>'MAX: SELECT MAX(moduleID) as maxID FROM Modules'];foreach($qs as $k=>$d){$chk=(isset($_GET['query'])&&$_GET['query']==$k)?'checked':'';echo"
";}?>
"SELECT*FROM Modules ORDER BY moduleCode",'q2'=>"SELECT*FROM Lecturers WHERE email LIKE '%@unisa.ac.za'",'q3'=>"SELECT m.moduleCode,CONCAT(l.firstName,' ',l.lastName)as lecturer,r.roleName FROM ModuleLecturerRole mlr JOIN Modules m ON mlr.moduleID=m.moduleID JOIN Lecturers l ON mlr.lecturerID=l.lecturerID JOIN Roles r ON mlr.roleID=r.roleID",'q4'=>"SELECT*FROM Lecturers WHERE firstName LIKE 'J%' AND email LIKE '%@unisa.ac.za'",'q5'=>"SELECT MAX(moduleID)as maxID FROM Modules"][$sel];$r=$conn->query($sql);echo"

// $sql

";if($r->num_rows>0){echo"";$f=$r->fetch_fields();echo"";foreach($f as$col)echo"";echo"";while($row=$r->fetch_assoc()){echo"";foreach($row as$v)echo"";echo"";}echo"
{$col->name}
".htmlspecialchars($v)."
";}else echo"

∅ No results

";echo"
";}?>
// CODE DISPLAY