Reputation: 153
I have this array,
array (size=6)
0 =>
array (size=6)
'id' => string '2' (length=1)
'member_ext' => string '1' (length=1)
'queue_id' => string '1' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'John Smith' (length=10)
'queue_name' => string 'queue 1' (length=7)
1 =>
array (size=6)
'id' => string '3' (length=1)
'member_ext' => string '2' (length=1)
'queue_id' => string '1' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'Jose Jones' (length=10)
'queue_name' => string 'queue 1' (length=7)
2 =>
array (size=6)
'id' => string '5' (length=1)
'member_ext' => string '1' (length=1)
'queue_id' => string '1' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'John Smith' (length=10)
'queue_name' => string 'queue 1' (length=7)
3 =>
array (size=6)
'id' => string '4' (length=1)
'member_ext' => string '3' (length=1)
'queue_id' => string '2' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'Mary Chase' (length=10)
'queue_name' => string 'queue 2' (length=7)
4 =>
array (size=6)
'id' => string '7' (length=1)
'member_ext' => string '3' (length=1)
'queue_id' => string '3' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'Mary Chase' (length=10)
'queue_name' => string 'queue 3' (length=7)
5 =>
array (size=6)
'id' => string '6' (length=1)
'member_ext' => string '4' (length=1)
'queue_id' => string '4' (length=1)
'LastUpdate' => string '2013-10-24' (length=10)
'member_name' => string 'Fred Allen' (length=10)
'queue_name' => string 'queue 4' (length=7)
How can I use php to get it into an html table like this? "logged in" meaning they're were found in the array as beining logged into a particular queue, "logged out" meaning the tech wasn't not found in that particulat queue.
| techs | queue 1 | queue 2 | queue 3 | queue 4 | queue 5 |
------------------------------------------------------------------------------
|John Smith | logged in | logged in | logged out | logged out | logged out |
|Jose Jones | logged in | logged out | logged out | logged out | logged out |
|Mary Case | logged out | logged out | logged in | logged out | logged out |
|Fred Allen | logged out | logged out | logged out | logged in | logged out |
EDIT - THIS IS WHAT I'VE TRIED SO FAR.
<?php
try {
$username = "admin";
//$password = "TrojanF32";
$dbh = new PDO('mysql:host=localhost;dbname=test', $username);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "connected<p>";
} catch(PDOException $e) {
echo 'ERROR: ' . $e->getMessage();
}
$sth = $dbh->prepare("SELECT DISTINCT queue_name
FROM `log`
WHERE LastUpdate = '2013-10-24'
ORDER BY queue_name ASC
");
$sth->execute();
$sql1 = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = $dbh->prepare("SELECT *
FROM `log`
WHERE LastUpdate = '2013-10-24'
ORDER BY queue_name ASC
");
$sth->execute();
$sql2 =$sth->fetchAll(PDO::FETCH_ASSOC);
?><div class="container"><?php
echo "<table border=1>";
echo "<tr>";
echo "<td>" . "Technician" . "</td>";
foreach($sql1 as $header){
echo "<td>" . $header['queue_name'] . "</td>";
}
echo "</tr>";
foreach($sql2 as $queue){
echo "<td>" . $queue['member_name'] . "</td>";
//echo "<td>";
foreach($queue as $que){
if($queue['queue_id'] == '1'){
echo "<td>" . "logged in" . "</td>";
}else{
echo "<td>" . "logged out" . "</td>";
}
if($queue['queue_id'] == '2'){
echo "<td>" . "logged in" . "</td>";
}else{
echo "<td>" . "logged out" . "</td>";
}
if($queue['queue_id'] == '3'){
echo "<td>" . "logged in" . "</td>";
}else{
echo "<td>" . "logged out" . "</td>";
}
if($queue['queue_id'] == '4'){
echo "<td>" . "logged in" . "</td>";
}else{
echo "<td>" . "logged out" . "</td>";
}
if($queue['queue_id'] == '5'){
echo "<td>" . "logged in" . "</td>";
}else{
echo "<td>" . "logged out" . "</td>";
}
echo "</tr>";
}
}
echo "<pre>";
var_dump($sql2);
echo "</pre>";
?>
</table>
</div>
Upvotes: 0
Views: 99
Reputation: 23371
As you need just the queues and techs names I would chang a bit your code so See if this would help you.
I don't have an php enviroment to check, so, maybe you can find some syntax bugs. The real thing is to add a third query to get every one with every queue like I did here SQLFiddle
So, let see:
<?php
$sth = $dbh->prepare("SELECT DISTINCT queue_name
FROM `log`
WHERE LastUpdate = '2013-10-24'
ORDER BY queue_name ASC");
$sth->execute();
$sql1 = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = $dbh->prepare("SELECT DISTINCT member_name
FROM `log`
WHERE LastUpdate = '2013-10-24'
ORDER BY member_name ASC");
$sth->execute();
$sql2 = $sth->fetchAll(PDO::FETCH_ASSOC);
$sth = $dbh->prepare("select ml.member_name, ml.queue_name,
case ifnull(l.id,-1) when -1 then 'Logging Out' else 'Logging In' end as logstatus
from (select l1.member_name, l2.queue_name
from (select distinct member_name from `log` where lastupdate='2013-10-24') l1,
(select distinct queue_name from `log` where lastupdate='2013-10-24') l2
) ml
left join
(select * from `log` where LastUpdate='2013-10-24') as l
on ( ml.member_name = l.member_name and ml.queue_name = l.queue_name )
order by ml.member_name, ml.queue_name");
$sth->execute();
$sql3 = $sth->fetchAll(PDO::FETCH_ASSOC);
?>
<div class="container">
<?php
echo "<table border=1>";
echo "<tr>";
echo "<td>" . "Technician" . "</td>";
foreach($sql1 as $header){
echo "<td>" . $header['queue_name'] . "</td>";
}
echo "</tr>";
foreach($sql2 as $names){
echo "<tr>";
echo "<td>" . $names['member_name'] . "</td>";
foreach($sql3 as $queues){
if ( $names['member_name'] == $queues['member_name'] ){
echo "<td>" . $queues['logstatus'] . "</td>";
}
}
echo "</tr>";
}
echo "</table>";
?>
</div>
Let me know if you encounter any problem with this code.
Upvotes: 1