Малък проблем с бутони предишен/следващ

vinsbg

Registered
Здравейте,

имам бутони за следващо и предишно видео. Проблема с тях е, че като отворя първото видео от съответната категория бутона за предишно видео е там, а не трябва да е там.
Същото и когато се намирам на последното видео от съответната категория... бутона за следващо видео е там... и ако го натисна отивам на следващото видео от таблицата, което вече е друга категория.

Код:
    if(isset($_GET['video_id']) && is_numeric($_GET['video_id']) && isset($_GET['video_cat_id']) && is_numeric($_GET['video_cat_id'])){
        $video_id = $_GET['video_id'];
        $video_cat_id = $_GET['video_cat_id'];    
                             
    // get next picture id
    $result = $pdo->prepare('SELECT video_id FROM video WHERE video_id > :video_id ORDER BY video_id ASC LIMIT 1');
    if($result){
        $result->execute(array(':video_id' => $video_id));
        //$result->execute(array(':video_cat_id' => $video_cat_id));
        if (($row = $result->fetch()) !== FALSE) {
           $next_id = $row['video_id'];
        }
    }

    // get previous picture id
    $result = $pdo->prepare('SELECT video_id FROM video WHERE video_id < :video_id ORDER BY video_id DESC LIMIT 1');
    if($result){
        $result->execute(array(':video_id' => $video_id));
        //$result->execute(array(':video_cat_id' => $video_cat_id));
        if (($row = $result->fetch()) !== FALSE) {
           $prev_id = $row['video_id'];
        }
    }
                    
   $result = $pdo->prepare("SELECT * FROM video WHERE video_id= :video_id LIMIT 1");
   if ($result->execute(array(':video_id'=>$_GET['video_id']))) 
   {       
 
    	$prev_button = (isset($prev_id) && $prev_id>0)?'<a href="vcat-'.$video_cat_id.'/video-'.$prev_id.'.html"><i class="fa fa-arrow-left fa-3x"></i></a>':'';
    	$next_button = (isset($next_id) && $next_id>0)?'<a href="vcat-'.$video_cat_id.'/video-'.$next_id.'.html"><i class="fa fa-arrow-right fa-3x"></i></a>':'';      
       if($row = $result->fetch())
       {
                 // видеото
Какъв може да е проблема?
 
Ето примерен код, и обяснение как може да стане цялата работа.

Код:
...................................................
Конекцията към базата
...................................................

$conn = new PDO("mysql:host=localhost;dbname=proba", "username", "password");

.....................................................................................................................
            Селектираме всичко от таблицата където video_cat_id = 1. Това естествено е примерно число. В моя случай аз съм го задал ръчно в execute, но ти си го взимаш с $_GET['video_cat_id']
......................................................................................................................

            $sth = $conn->prepare('SELECT * FROM tablica WHERE video_cat_id = ?');

            $sth->execute(array(1));

            $result = $sth->fetchAll();

.......................................................................................................................
            //Тука е разковничето. Броиме колко общо редове връща нашата заявка.
......................................................................................................................

            $count = $sth->rowCount();

.................................................................................................................
            //Тука задавам пак ръчно някакво число за пробата, ти си го генерираш с $_GET['video_id']
................................................................................................................

            $video_id = 2;

.................................................................................................................
            //Ако video_id е по-голямо от 1 и по-малко от общия брой редове визуализираме и двата бутона
...............................................................................................................

            if ($video_id > 1 && $video_id < $count) {
                echo 'NEXT &nbsp&nbsp PREV';
            } 

....................................................................................................................
            //Ако video_id е по-малко или равно на 1 и е по-малко от общия брой редове визуализираме само следващ бутон
...................................................................................................................

            elseif ($video_id <= 1 && $video_id < $count) {
                echo 'NEXT';
            } 

......................................................................................................................
            //Ако video_id е по-голямо от 1 и е по-голямо или равно на общия брой редове визуализираме само предишен бутон
..............................................................................................................

            elseif ($video_id > 1 && $video_id >= $count) {
                echo 'PREV';
            }

 ..............................................................................................................
            //Aко имаме само едно видео, то не отговаря на горните условия и не визуализираме никакви бутони
.................................................................................................................
          
            else {
                echo 'Има само едно видео в тази категория';
            }
 
Малко пояснение към горния пост. В пробната база данни която, съм направил, video_id и video_cat_id са в една таблица. За това с тази заявка SELECT * FROM tablica WHERE video_cat_id = ? когато посоча номера на категорията, автоматично селектирам всички видеа които отговарят на нея. Например:
Код:
 video_id       video_cat_id

      1                   1

      2                   1
       
      3                   1

.....................................

      1                   2

      2                   2
 

Back
Горе