-1

我正在构建一个交互式时间线,用于加载电影并计算它们的发行日期之间的差异,从而显示没有任何电影发行的“天数”来创建时间线效果。但是我有一些在同一天上映的电影。我不想一遍又一遍地重复这些电影的日期,而只是像群体效果一样显示第一部电影的日期。

我操纵了一个if循环遍历表并检查日期是否与前一行的日期相同的语句。

http://ignitethatdesign.com/CheckFilm/test_search.php

但是,我将如何使用 PHP 仅显示一组具有相同日期的电影中第一部电影的日期?

我正在使用一个复杂的循环系统,这是完整的代码

<?php                      
 $last_value = null;
 echo "<div class=\"timeline\">";

$pNumber = 0;
            while ($row = mysql_fetch_assoc($sql)) {

                      if (!is_null($last_value)) {
                          $pNumber++;
                      $a = new DateTime($row['FilmRelease']);
                      $film_date = $row['FilmRelease'];

                      $film_name = urldecode($row['FilmName']);  
                      $film_desc = urldecode($row['Synopsis']);  
                      echo "<div id=\"t".$pNumber."\"><p class=\"everyday\">".$film_name."</div>";


                          if (empty($film_desc)) {
                            echo "<div id=\"b".$pNumber."\" style=\"font-size:12px;\">No film information for ".$film_name."</div>";
                            }
                            else 
                            {
                             echo "<div id=\"b".$pNumber."\"  style=\"font-size:12px;\">".$film_desc."</div>";
                             }

                                    ?> <script type="text/javascript">
                                     $("#b<?php echo $pNumber ?>").hide(); 
                                $("#t<?php echo $pNumber ?>").click(function() {
                                  $("#b<?php echo $pNumber ?>").fadeToggle("slow");
                                });


                                </script>
                                <?php
                                  $interval = $a->diff(new DateTime($last_value));
                                  //echo $interval->format('%d days');
                                  $b = new DateTime($last_value);
                                  $i = 0;
                                } 

                                if ($b == $a)
                                {
                                    echo "same date as above";
                                } else 
                                {
                                    echo "This date is different";
                                }

                        $howManydays = $interval->days;

                        for ( $i; $i < $howManydays; $i++) {
                            echo "<p class=\"day\"></p>";


                        }

              $last_value = $row['FilmRelease'];
            } 
            echo "<div id=\"end\"></end>";
            echo "</div>";

            ?>

任何帮助将不胜感激 :)

4

1 回答 1

0

简单的例子:

$lastDate = null;

while (...) {
    $currentDate = date('Y-m-d', strtotime($film['date']));
    if ($currentDate != $lastDate) {
        echo "<h1>$currentDate</h1>";
    }
    $lastDate = $currentDate;

    // output film details
}

这会给你类似的东西:

2012-04-01

Film A
Film B

2012-04-02

Film C

2012-04-05

Film D
Film E
于 2012-04-23T01:09:49.320 回答