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