I am trying to create some statistics for a library reservation system. The result of my sql query looks like the following structure.
total_no_students| department | property | month 241 | Physics | undergraduate | Nov 236 | Physics | undergraduate | Dec 254 | Physics | postgraduate | Nov 210 | Physics | postgraduate | Dec 193 | Architecture| undergraduate | Nov 181 | Architecture| undergraduate | Dec 127 | Architecture| postgraduate | Nov 292 | Architecture| postgraduate | Dec 134 | Biology | undergraduate | Nov 188 | Biology | undergraduate | Dec 129 | Biology | postgraduate | Nov 219 | Biology | postgraduate | Dec
I am trying using php to write some code in order to create a statistics table with the following appearance:
|Physics-undergrad|Physics-postgrad|Architecture-undergrad|Architecture-postgrad|
Nov | 241 | 254 | 193 | 127 |
Dec | 236 | 210 | 181 | 292 |
I have to transform it with php (pivot technique) using arrays and some loops (foreach). I tried to do it but I am confused with nested loops.
The code that I have written is as follows:
$csvArray = array();
$departments = array('Physics','Architecture','Biology');
$properties = array('undergraduate','postgraduate');
$con = mysqli_connect($mysql_hostname, $mysql_user, $mysql_password, $mysql_dbname);
$sql="SELECT count(id) as total_no_students, department, property, MONTH(table1.created) as month
FROM table1
left JOIN table2
ON table2.barcode=table1.input
group by department, property, month";
$res=mysqli_query($con,$sql);
while($row=mysqli_fetch_array($res)){
$time = $row['month'];
if (!array_key_exists($time, $csvArray) ) {
foreach ($departments as $department) {
$csvArray[$department] = array();
foreach($properties as $property) {
$csvArray[$department][$property] = array();
}
}
}
$department = $row['department'];
$property = $row['property'];
$total_no_students = $row['total_no_students'];
$csvArray[$time][$departments][$property] = $total_no_students;
}
Any help how to transform the query using php to the above table?