2013-10-26 4 views
0

У меня есть этот массив,Как обработать этот массив, чтобы получить этот результат?

 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) 

Как я могу использовать PHP, чтобы получить его в HTML-таблицу, как это? «вошел в систему», что означает, что они были найдены в массиве по мере того, как они вошли в определенную очередь, «вышли из системы», что означает, что технология не была найдена в этой частичной очереди.

| 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 | 

РЕДАКТИРОВАТЬ - ЭТО, ЧТО Я ПОЛУЧИЛ ТАК.

<?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> 
+2

Покажите нам код, который вы уже пробовали. –

+1

что вы пробовали? где ваш текущий код? как вы узнаете, что пользователь вошел в систему? – Lepidosteus

+0

Отредактировано, извините, уровень разочарования очень высокий у меня прямо сейчас. отправленный в припадке гнева и отчаяния. –

ответ

1

Поскольку вам нужны только имена очередей и техников, я бы немного поменял ваш код, поэтому посмотрим, поможет ли это вам.

У меня нет проверки php, поэтому, возможно, вы можете найти некоторые ошибки синтаксиса. Реальная вещь, чтобы добавить третий запрос, чтобы получить все с каждой очереди, как я сделал здесь SQLFiddle

Итак, см:

<?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> 

Позвольте мне знать, если у вас возникнут проблемы с этим кодом.

+0

спасибо, я дам ему попробовать :-) –

+0

, конечно, это самый простой способ ... Только с запросом, который я создал, вы можете распечатать всю таблицу с некоторой логикой –

+0

Это сработало отлично! Большое вам спасибо, я что-то узнал! –

Смежные вопросы