2014-02-14 4 views
-6

У меня есть несколько таблиц, которые составляют расписание. Я использую PHP и MySQL с Linux. Код выглядит следующим образом:Как отформатировать этот проект

<?php 
session_start(); 
if(isset($_SESSION['username'])){  
?> 

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
<html> 
<head> 
<link href="styles/style.css" rel="stylesheet" type="text/css"> 
<title>View All Employees</title> 
</head> 
<body> 
<div id="wrapper"> 
<div id="header"><br><br><br> 
<p>xxxxxxxxxx</p></div> 
<div id="side"><?php 
include ('includes/side.php'); 
?> 
</div> 
<div id="main"> 
<center><h3><b>Past Schedules</b></h3></center> 
<?php 

$db = new mysqli('localhost', 'xxxx', 'xxxx', 'xxxx'); 
if($db->connect_errno > 0){ 
die('Unable to connect to database [' . $db->connect_error . ']'); 
} 
echo '<table>'; 
echo '<tr>'; 
echo '<th>Job Date</th><th>Report</th><th>Start</th><th>Customer</th><th>Crew</th> <th>Equipment</th><th>Description</th><th>Job Notes</th>'; 
echo '</tr>'; 


$result = $db->query("SELECT 
      `ScheduledJob`.`ScheduledJobID`, 
      `ScheduledJob`.`JobDate`, 
      `ScheduledJob`.`ReportTime`, 
      `ScheduledJob`.`StartTime`, 
      `ScheduledJob`.`CustomerID`, 
      `Customer`.`Name` AS `CustomerName`, 
      `ScheduledEmployee`.`EmployeeID`, 
      CAST(NULL AS SIGNED INTEGER) AS `EquipmentID`, 
      `ScheduledJob`.`JobDescription`, 
      CONCAT(`Employee`.`FirstName`, ' ', `Employee`.`LastName`) AS `EmployeeName`, 
       '' AS `EquipmentNumber` 
FROM 
      (`ScheduledJob` INNER JOIN 
      `Customer` ON `ScheduledJob`.`CustomerID`=`Customer`.`CustomerID`) LEFT JOIN 
      (`ScheduledEmployee` INNER JOIN 
      `Employee` ON `ScheduledEmployee`.`EmployeeID`=`Employee`.`EmployeeID`) ON `ScheduledJob`.`ScheduledJobID`=`ScheduledEmployee`.`ScheduledJobID` 
UNION 
SELECT 
      `ScheduledJob`.`ScheduledJobID`, 
      `ScheduledJob`.`JobDate`, 
      `ScheduledJob`.`ReportTime`, 
      `ScheduledJob`.`StartTime`, 
      `ScheduledJob`.`CustomerID`, 
      `Customer`.`Name` AS `CustomerName`, 
      CAST(NULL AS SIGNED INTEGER) AS `EmployeeID`, 
      `ScheduledEquipment`.`EquipmentID`, 
      `ScheduledJob`.`JobDescription`, 
      '' AS `EmployeeName`, 
      `Equipment`.`Number` AS `EquipmentNumber` 
FROM 
      (`ScheduledJob` INNER JOIN 
      `Customer` ON `ScheduledJob`.`CustomerID`=`Customer`.`CustomerID`) LEFT JOIN 
      (`ScheduledEquipment` INNER JOIN 
      `Equipment` ON `ScheduledEquipment`.`EquipmentID`=`Equipment`.`EquipmentID`)  ON `ScheduledJob`.`ScheduledJobID`=`ScheduledEquipment`.`ScheduledJobID`;"); 
while($job = $result->fetch_object()){ 
echo '<tr>';  
echo '<td>',$job->JobDate,'</td>'; 
echo '<td>',$job->ReportTime,'</td>'; 
echo '<td>',$job->StartTime,'</td>'; 
echo '<td>',$job->CustomerName,'</td>'; 
echo '<td>',$job->EmployeeName,'</td>'; 
echo '<td>',$job->EquipmentNumber,'</td>'; 
echo '<td>',$job->JobDescription,'</td>'; 
echo '<td>',$job->JobNotes,'</td>';  
echo '</tr>'; 
} 
echo '</table>'; 
?> 
<?php 
} else { 
header("location:index.php"); 
} 
?></div> 
<div id="footer"></div> 
</div> 
</body> 
</html> 

Выход в настоящее время, как это:

------------------------------------------------------------------------------------------------------------------- 
Job Date Report  Start  Customer  Crew    Equipment Description    Job Notes 
2014-02-13 07:00:00 08:00:00 Spruence Genco Steven Gray     This is just a sample 
2014-02-13 07:00:00 08:00:00 Spruence Genco Phil Dunfy     This is just a sample 
2014-02-13 07:00:00 08:00:00 Spruence Genco Donald Duck     This is just a sample 
2014-02-13 07:00:00 08:00:00 Spruence Genco     5234  This is just a sample 
2014-02-13 07:00:00 08:00:00 Spruence Genco     3758  This is just a sample 
----------------------------------------------------------------------------------------  ---------------------------- 

Но мне нужно, чтобы это было так:

---------------------------------------------------------------------------------------- ----------------------------- 
Job Date Report  Start  Customer  Crew    Equipment Description    Job Notes 
2014-02-13 07:00:00 08:00:00 Spruence Genco Steven Gray  5234   This is just a sample 
                Phil Dunfy  3758    
                Donald Duck 
---------------------------------------------------------------------------------------------------------------------- 

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

Пожалуйста, помогите мне ...

Спасибо большое .....

+2

простой: следить за тем, что было выведено в любой строке. когда вы достигнете следующей строки, если значение в следующей строке соответствует тому, что было в «предыдущей» строке, не выводите ее. –

+0

Спасибо за комментарий ... но как мне это сделать? – user3251779

+3

Извините, но это базовый php: установите некоторые переменные, используйте некоторые 'if()' check ... Мы здесь, чтобы помочь, а не здесь, чтобы научить вас основам. –

ответ

0

Если вы хотите, чтобы показать полные данные в первой строке вы можете сделать это:

$i = 0; 
     while($job = $result->fetch_object()){ 

    if($i == 0) { 
     echo '<tr>';  
     echo '<td>' . $job->JobDate .'</td>'; 
     echo '<td>' . $job->ReportTime.'</td>'; 
     echo '<td>' .$job->StartTime.'</td>'; 
     echo '<td>'.$job->CustomerName.'</td>'; 
     echo '<td>'.$job->EmployeeName.'</td>'; 
     echo '<td>'.$job->EquipmentNumber.'</td>'; 
     echo '<td>'.$job->JobDescription.'</td>'; 
     echo '<td>'.$job->JobNotes.'</td>';  
     echo '</tr>'; 

    } else { 
      echo '<tr>';  
     echo '<td></td>'; 
     echo '<td></td>'; 
     echo '<td></td>'; 
     echo '<td></td>'; 
     echo '<td>' . $job->EmployeeName . '</td>'; 
     echo '<td>' . $job->EquipmentNumber .'</td>'; 
     echo '<td></td>'; 
     echo '<td></td>';  
     echo '</tr>'; 
    } 
    $i++; 
     } 
+0

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

+0

См. Обновленный ответ. –

+0

Это работает отлично .. все как должно быть ... но номера оборудования вообще не распечатывают ..... – user3251779

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