0

PHP を使用して、表示されているレイアウトで、曜日ごとに 3 ~ 4 人のスタッフのシフト期間のタイムライン カレンダー タイプの表示を出力しています。

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

すべてにIMG SRCを使用すると正しく機能しましたが、ハイパーリンクテキストを配置する必要があります。中央スパンの適切な垂直方向の寸法が失われているように見えるか、次の行にスキップします。見たままのスパン スタイリングまたは CSS を使用して、スパン境界をより適切に保護しようとしていましたが、それを理解できませんでした。私は正しい方向に向かっていますか?

また...シフト行と比較して $date ボックスの行の高さが異なるため、TD/TR の代わりにより多くの div/span を使用して目的の出力を作成する方がよいでしょうか?

    <?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 のタイムライン増分を作成しました。これにより、ピクセル単位の TD 幅ではなく、COLSPAN の幅 $variable を使用できるようになりました。

これが、同様のカレンダー レイアウトを出力しようとしている他の人に役立つことを願っています。

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 に答える