0

我正在使用 PHP 在显示的布局中输出一周中每一天的 3-4 个员工轮班持续时间的时间线日历类型显示:

|=========|==========================================================|
|         |                 |       STEVE       |                    |
|         |==========================================================|
|  $DATE  |       |     SARAH      |                                 |
|         |==========================================================|
|         |                                  |       JODIE       |   |
|=========|==========================================================|

当对所有内容使用 IMG SRC 时,它可以正常工作,但是我需要将超链接文本放在上面。我现在似乎正在失去中间跨度的正确垂直尺寸,或者它跳到下一行。我试图通过所见或通过 CSS 的跨度样式更好地保护跨度边界,但无法弄清楚。我是否朝着正确的方向前进?

另外...与移位行相比,$date 框的行高不同,使用更多的 div/span 而不是 TD/TR 来创建所需的输出会更好吗?

    <?php
require'connect.php';

$query="SELECT mname,
((((TIME_TO_SEC(start) / '60') / '15') * '10') - '400'),
((((TIME_TO_SEC(finish) / '60') / '15') * '10') - (((TIME_TO_SEC(start) / '60') / '15') * '10')),
('960' - (((TIME_TO_SEC(finish) / '60') / '15') * '10'))
FROM schedule WHERE date >= NOW() AND date <= NOW() + INTERVAL 14 DAY ORDER BY date asc";
$result=mysql_query($query);
$num=mysql_numrows($result);
$a=0;

echo"<div><center><IMG SRC='images/filler1.jpg' WIDTH=80 HEIGHT=40></TD><IMG SRC='images/filler1.jpg' WIDTH=560 HEIGHT=40></center></div>";
echo"<div><center><TABLE WIDTH=640 BORDER=0 CELLPADDING=0 CELLSPACING=0>";

while ($a < $num){
$mname=mysql_result($result,$a,"mname");
$width1=mysql_result($result,$a,"((((TIME_TO_SEC(start) / '60') / '15') * '10') - '400')");
$width2=mysql_result($result,$a,"((((TIME_TO_SEC(finish) / '60') / '15') * '10') - (((TIME_TO_SEC(start) / '60') / '15') * '10'))");
$width3=mysql_result($result,$a,"('960' - (((TIME_TO_SEC(finish) / '60') / '15') * '10'))");
$rowheight=("120" / $num);

if ($a < 1){echo"
<TR>
<TD><IMG SRC='images/Shift_06.jpg' WIDTH=80 HEIGHT=120></TD>
<TD>
<IMG SRC='images/filler1.jpg' width='$width1' height='$rowheight'>
<span style='display:inline-block; width:$width2; height:$rowheight; text-align:center; font-family: Annifont; font-size: 13px; background-color:#b0c4de; border:none;'><a href='$name.html'>$mname</a></span>
<IMG SRC='images/filler1.jpg' width='$width3' height='$rowheight'>";}

if ($a > 0){echo"<br>
<IMG SRC='images/filler1.jpg' width='$width1' height='$rwoheight'>
<span style='display:inline-block; width:$width2; height:$rowheight; text-align:center; font-family: Annifont; font-size: 13px; background-color:#b0c4de; border:none;'><a href='$name.html'>$mname</a></span>
<IMG SRC='images/filler1.jpg' width='$width3' height='$rowheight'>";}
$a++;}

echo"</TD></TR></TABLE></center></div>";

if (!mysql_query($query))
  {die('Error: ' . mysql_error());}   

mysql_close();
?> 
4

1 回答 1

0

我回到使用 TR/TD 而不是跨度。我之前遇到的问题是,对于数据库中的每个员工轮班持续时间,每个 TD 都是不同的宽度 $variable。这没有创建正确的时间布局。

相反,我在上面的 TD 列中创建了所需的 56 个时间线增量。这让我可以使用 COLSPAN 的宽度 $variable 而不是 TD 宽度(以像素为单位)。

希望这可以帮助其他尝试输出类似日历布局的人。

echo"<div><center><TABLE WIDTH=640 BORDER=0 CELLPADDING=0 CELLSPACING=0><TR>
<TD width='80' height='40' background='images/filler1.jpg'></TD>";
while ($b != "56"){echo"
<TD width='10' height='40' background='images/filler1.jpg'></TD>";
$b++;}
echo"</TR>";

        if ($a < "1"){echo"<TR><TD ROWSPAN=4><IMG SRC='images/Shift_06.jpg' WIDTH=80 HEIGHT=120></TD>
            <TD COLSPAN='$width1' height='$roheight' align='center' valign='middle' background='images/filler1.jpg'></TD>
            <TD COLSPAN='$width2' height='$roheight' align='center' valign='middle' background='images/filler2.jpg' class='ChillOutGrey2'>
            <a href='$mname.html'>$mname</a></TD>
            <TD COLSPAN='$width3' height='$roheight' align='center' valign='middle' background='images/filler1.jpg'></TD>
            </TR>";}
        if ($a > "0") {echo"<TR>
            <TD COLSPAN='$width1' height='$roheight' align='center' valign='middle' background='images/filler1.jpg'></TD>
            <TD COLSPAN='$width2' height='$roheight' align='center' valign='middle' background='images/filler2.jpg' class='ChillOutGrey2'>
            <a href='$mname.html'>$mname</a></TD>
            <TD COLSPAN='$width3' height='$roheight' align='center' valign='middle' background='images/filler1.jpg'></TD>
            </TR>";}
$a++;}
echo "</TABLE></center></div>";
于 2013-05-27T03:06:08.540 回答