Ассоциировать разные данные - PullRequest
0 голосов
/ 27 марта 2010

Я постараюсь быть максимально ясным, потому что не могу никого помочь мне,

Я пытаюсь связать некоторые данные из таблицы 'videos' с их соответствующим идентификатором.

Допустим, у меня есть идентификатор столбца, название, серия, сезон, эпизод.

Я получаю свои данные:

    <?
$result = mysql_query("SELECT * FROM videos WHERE serie = '".$row['serie']."' AND season = '".$row['season']."'");
$total_rows = mysql_num_rows($result);
       ?>

(то есть на странице, где вы видите само видео)

Так что теперь я могу получить количество эпизодов из серии и сезона.

То, что я пытаюсь сделать, это иметь ссылку на следующий эпизод и ссылку на предыдущий. В URL я работаю с идентификатором, поэтому http://website.com/view/id/'video id здесь '/

Так, как я могу получить идентификатор следующего и предыдущего эпизода того же сезона И серии?

Помощь будет высоко ценится!

Самая простая вещь, о которой я подумал, это

<?=$row['id'] + 1?>
<?=$row['id'] - 1?>

Но дело в том, что это смешанные видео, поэтому оно не будет работать на 100%

Ответы [ 3 ]

0 голосов
/ 27 марта 2010

Вот то, что я пытался, я думаю, это то, что вы имели в виду,

Все, что он делает, это помещает предыдущий эпизод, поэтому я получаю / view / id / 3 / (если эпизод, который я смотрю, равен 4)

    <?
                 $result = mysql_query("SELECT * FROM videos WHERE serie = '".$row['serie']."' AND season = '".$row['season']."'");
$total_rows = mysql_num_rows($result);
                 $previous = $results[$n - 1];
                 $next = $results[$n + 1];

                 $previous_id = $previous['id'];
                 $next_id = $next['id'];

                ?>

                <? if($row['episode'] == 1) { ?>
                <td align="center" width="33%"></td>
                <? } else { ?>
                <td align="center" width="33%"><a href="view/id/<?=$previous_id?>/"><img src="images/previous.gif" srcover="images/previoush.gif" alt="Previous Video" border="0" /></a></td><? } ?>

Это только для предыдущего,

Извините, я должен был публиковать, как это, если нет, это не выглядело бы правильно,

(поправьте меня, если я ошибаюсь с кодом)

И спасибо за ответ

0 голосов
/ 27 марта 2010

Я думаю, вы взяли мой пример слишком буквально. Утром выложу полный пример (я просто отвечаю с моего айфона в мес). По какой-то причине он не позволил мне добавить комментарий к вашему последнему ответу, поэтому извините, что это как ответ.

[править] вот более полный пример:

<?php

$result = mysql_query("SELECT * FROM videos WHERE series='$series' AND season = '$season'");

$last_row = null;
$next_row = null;

$current_id = $_GET['id'];

while($row = mysql_fetch_assoc($result)) {
    if($current_id == $row['id']) {
        $next_row = mysql_fetch_assoc($result);
        break;
    }

    $last_row = $row;
}

if($last_row != null) {
    echo "<a href='?id={$last_row['id']}'>Prev</><br/>\n";
}

if($next_row != null) {
    echo "<a href='?id={$next_row['id']}'>Next</><br/>\n";
}

?>

Несколько замечаний:

  • Это не проверено.
  • В вашем первоначальном примере я не знал, где вы получаете $ row ['serie'] и $ row ['season'], поэтому в моем примере я просто использовал переменные $ series и $ время года. Вам нужно будет заполнить их тем, что вы хотите отфильтровать по текущему набору результатов.
  • В моем примере формат URL использует макет GET (т. Е.? Id =).
0 голосов
/ 27 марта 2010

Если вы сделаете:

$results = mysql_query($sql);

(где $ sql - ваше упомянутое выражение select)

Тогда массив $ results будет содержать все результаты этой серии / сезона.

Таким образом, вы можете получить к нему доступ через:

$previous = $results[$n - 1];
$next = $results[$n + 1];

$previous_id = $previous['id'];
$next_id = $next['id'];

Обратите внимание, что вам, конечно, нужно проверить, что $ n - 1 не меньше нуля и ($ n + 1) isn 'т больше чем $ total_rows.

...