2013-10-26 1 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) 

어떻게이 같은 HTML 테이블에 그걸 얻기 위해 PHP를 사용할 수 있습니까? "로그인 됨"이라는 의미는 배열에서 특정 큐에 로그인되어있는 채 벌칙으로 검색된 것으로, 로그 아웃된다는 의미는 해당 기술 큐가 특정 큐에없는 것을 의미합니다.

| 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 환경이 없으므로 일부 구문 버그를 찾을 수 있습니다.

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

가이 코드에 문제가 발생할 경우 알려줘 : 진짜 것은, 보자 내가 여기 그래서 SQLFiddle

처럼 모든 큐와 하나 하나를 얻기 위해 세 번째 쿼리를 추가하는 것입니다.

+0

덕분에, 나는 그것을 시도해 보겠다 :-) 물론 –

+0

이 가장 쉬운 방법이다. 내가 만든 쿼리만으로 전체 테이블을 일부 로직으로 출력 할 수있다. –

+0

정말 멋졌다! 정말 고마워요, 뭔가 배웠어요! –

관련 문제