2017-04-14 85 views
0

我有帶列標題的循環產生的表紋槽用30分鐘的時間間隔週五,時間序列爲24小時我剛纔縮短示例代碼:動態錶行跨度

$times = array(00:00, 00:30, 01:00, 01:30); 
$skip = array(); 
$row = 1; 
<table> 
<tr> 
    <td>Time</td><td>Mon</td><td>tue</td> 
<tr> 
foreach($times AS $val){ 
    $stmt = $mysqli->prepare(" 
    SELECT `show`,`time_start`,`time_stop`,`show_day` 
    FROM `db_shows` WHERE `time_start`='$val' 
    "); 
    $stmt->execute(); 
    $stmt->store_result(); 
    $stmt->bind_result($myrow[show],$myrow[time_start],$myrow[time_stop],$myrow[show_day]); 
    $stmt->fetch(); 
    // GET THE ROWSPAN 
    $a = new DateTime($myrow[time_start]); 
    $b = new DateTime($myrow[time_stop]); 
    $interval = $a->diff($b); 
    $res = $interval->format('%h'); 
    $res *= 2; 
    $res += 1; 
    // ARRY FOR ROWS TO SKIP TD 
    code in second part 
    // APPLAY DISPLAY NONE IF NEEDED 
    code in second part 
    // BUILD COLUMNS 
    switch($myrow[show_day]){ 
    case "":$tds = "<td>&nbsp;</td><td>&nbsp;</td>"; break; 
    case "mon":$tds = "<td rowspan="$res" style="$mon">$myrow[show]</td><td>&nbsp;</td>"; break; 
    case "tue":$tds = "<td>&nbsp;</td><td rowspan="$res" style="$tue">$myrow[show]</td>"; break; 
    } 
    <tr> 
    <td>$val</td>$tds 
    </tr> 
$row++; 
}  
</table> 

現在我的代碼工作正常使用rowspan生成表,但我知道必須根據行rowspan($ res)包含多少行來刪除下一行中必需的td。這可能是我跌倒出車的一部分:) 我試圖在這裏實現是獲得行號和「日TD」在隨後

// ARRY FOR ROWS TO SKIP TD 
if($res >=2){ 
$rowCount = $res -1; 
$rowSkip = $row; 
for($i=1;$i <= $rowCount; $i++){ 
$rowSkip++; 
$skip[$rowSkip] = $myrow[show_day]; 
} 
} 
// LOOK IF ROW HAVE VALUE 
foreach($skip AS $key2 => $val2){ 
if($row == "$key2" && $myrow[show_day]="$val2"){ 
    $$val2 = "display:none"; 
} 
} 

我行隱藏我甚至不確定我是否正在接觸關於正確問題的整個概念,任何幫助都將不勝感激。 謝謝!

在一天結束的時候我的表應該是這樣的:

table

+0

你可以給你的數據你有什麼? –

+0

當天的節目($ myrow [show_day]) 開始時間顯示(time_start) 停止時間顯示(time_stop) 顯示名稱($ myrow [show]) – user3744959

+0

好吧我只想要數組。不是一個問題,我會讓它成爲我的自我。 –

回答

0

這是個夠答案

嗯,我沒有好時機,蛋糕的全陣列,但希望它會爲你工作。

<?php 
$times = array('00:00','00:30', '01:00', '01:30','02:00','02:30','03:00'); 
$days = array('Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'); // 0 = Sun ... 6 = Sat 


$shows = array(); 

$shows[] = array(
    "day"=>0, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show A" 
    ); 

$shows[] = array(
    "day"=>1, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show B" 
    ); 

$shows[] = array(
    "day"=>3, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show C" 
    ); 

$shows[] = array(
    "day"=>4, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show D" 
    ); 

$shows[] = array(
    "day"=>5, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show E" 
    ); 

$shows[] = array(
    "day"=>6, 
    "time_start"=>'00:00', 
    "time_end"=>'00:30', 
    "name"=>"Show F" 
    ); 

$shows[] = array(
    "day"=>1, 
    "time_start"=>'00:30', 
    "time_end"=>'01:30', 
    "name"=>"Show G" 
    ); 

$shows[] = array(
    "day"=>2, 
    "time_start"=>'00:30', 
    "time_end"=>'01:00', 
    "name"=>"Show H" 
    ); 
$shows[] = array(
    "day"=>3, 
    "time_start"=>'00:30', 
    "time_end"=>'01:00', 
    "name"=>"Show I" 
    ); 
$shows[] = array(
    "day"=>4, 
    "time_start"=>'00:30', 
    "time_end"=>'01:00', 
    "name"=>"Show J" 
    ); 
$shows[] = array(
    "day"=>1, 
    "time_start"=>'01:00', 
    "time_end"=>'01:30', 
    "name"=>"Show K" 
    ); 

$shows[] = array(
    "day"=>2, 
    "time_start"=>'01:00', 
    "time_end"=>'02:00', 
    "name"=>"Show L" 
    ); 

$shows[] = array(
    "day"=>1, 
    "time_start"=>'01:30', 
    "time_end"=>'02:00', 
    "name"=>"Show M" 
    ); 

$shows[] = array(
    "day"=>2, 
    "time_start"=>'01:30', 
    "time_end"=>'02:00', 
    "name"=>"Show N" 
    ); 

$parsedShow = array(); 

foreach ($shows as $show) { 

    $start_index = array_search($show['time_start'], $times); // $key = 2; 
    $end_index = array_search($show['time_end'], $times); // $key = 1; 

    if($end_index - $start_index > 1){ 
     //NEED SPAN 
     $show['span'] = (($end_index - $start_index)); 
    }else{ 
     $show['span'] = false; 
    } 
    $parsedShow[$show['time_start']][] = $show; 
} 

// echo "<pre>"; 
// print_r($parsedShow); 

// die(); 
?> 
<html> 
<table border="1"> 
    <tr> 
     <td> 
      Time 
     </td> 
     <?php 
     foreach ($days as $day) { 
      echo "<td>$day</td>"; 
     } 
     ?> 

    </tr> 
    <?php 
    foreach ($times as $time) { 
     ?> 
     <tr> 
      <?php 
      if(!isset($parsedShow[$time])){ 
       continue; 
      } 
      echo "<td>$time</td>"; 
      foreach ($parsedShow[$time] as $show) { 
       ?> 
       <td <?= ($show['span'] !== false ? "rowSpan='".$show['span']."'" : "")?>><?= $show['name'] ?></td> 
       <?php } 
       ?> 
      </tr> 
      <?php } 

      ?> 
     </table> 
     </html> 
+0

感謝Allot,非常感謝,現在將實施它。 – user3744959