Как сделать так, чтобы каждый фильм появлялся под соответствующей датой? - PullRequest
0 голосов
/ 31 октября 2019

Я не могу сделать так, чтобы каждый фильм появлялся под соответствующей датой, и у меня есть правильное выпадающее меню времени для выбора времени фильма

$sql_date = "SELECT DISTINCT sDate, sTitle FROM movieScreenings ";
$result_date = mysqli_query($db, $sql_date);

while($row = mysqli_fetch_array($result_date)) {

    echo "<h2>" . $row['sDate'] . "</h2>";

    $sql_movie = "SELECT * FROM movieList, movieScreenings WHERE title = '" . $row['sTitle'] . "'";
    $result_movie = mysqli_query($db, $sql_movie);

    while($row2 = mysqli_fetch_array($result_movie)) {


        echo "<div class='box'>

              <img class='poster' src='posters/" . $row2['poster'] . "'/>       

              <h2>" . $row2['title'] . "</h2>

              <p>" . $row2['description'] . "</p>";


        $sql_time = "SELECT DISTINCT sTime FROM movieScreenings WHERE sTitle = '" . $row2['title'] . "' AND sDate = '" . $row['sDate'] . "'";
        $result_time = mysqli_query($db, $sql_time);

        while($row3 = mysqli_fetch_array($result_time)) {

            echo "<select name='sTime'>

                  <option value='" . $row3['sTime'] . "'>" . $row3['sTime'] . "</option>

                   </select>";

            echo "</div>";

        }

    }

}

mysqli_free_result($result_date);
mysqli_free_result($result_movie);
mysqli_free_result($result_time);
// Close connection
mysqli_close($db);

1 Ответ

1 голос
/ 31 октября 2019

Вы, вероятно, хотите отсортировать свой первый запрос по sDate с ORDER BY sDate.

Во втором запросе вы снова выбираете из movieScreenings , что не является необходимымпотому что я представляю, что все данные, к которым вы обращаетесь ( постер, заголовок, описание ), хранятся в movieList .

В-третьих, в вашем последнем цикле while вы повторяете<select> тег для каждого времени проверки. Это приведет к множеству выпадающих входов. Кроме того, вы включаете закрывающий тег </div> в этот цикл. Так что зацикливайте только тег <option>.

С этими изменениями ваш код будет выглядеть так:

$sql_date = "SELECT DISTINCT sDate, sTitle FROM movieScreenings ORDER BY sDate ASC";
$result_date = mysqli_query($db, $sql_date);

while($row = mysqli_fetch_array($result_date)) {
    echo "<h2>" . $row['sDate'] . "</h2>";
    $sql_movie = "SELECT * FROM movieList WHERE title = '" . $row['sTitle'] . "'";
    $result_movie = mysqli_query($db, $sql_movie);

    while($row2 = mysqli_fetch_array($result_movie)) {
        echo "<div class='box'>
              <img class='poster' src='posters/" . $row2['poster'] . "'/>       
              <h2>" . $row2['title'] . "</h2>
              <p>" . $row2['description'] . "</p>";

        $sql_time = "SELECT DISTINCT sTime FROM movieScreenings WHERE sTitle = '" . $row2['title'] . "' AND sDate = '" . $row['sDate'] . "'";
        $result_time = mysqli_query($db, $sql_time);

        echo "<select name='sTime'>";
        while($row3 = mysqli_fetch_array($result_time)) {
            echo "<option value='" . $row3['sTime'] . "'>" . $row3['sTime'] . "</option>";
        }
        echo "</select>";

        echo "</div>";
    }
}

...

И, наконец, я бы предложил использовать идентификаторы в качестве внешних ключей для предотвращения дублирования вбудущее. Может быть несколько фильмов с одинаковым названием.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...