Codeigniter разбивает изображения на страницы по одному из массива базы данных - PullRequest
1 голос
/ 09 июля 2020

У меня есть 2 таблицы, первая - comi c, а вторая - chapter . и они связаны с идентификаторами comi c.

chapter таблица содержит:

chapter_id = 1
comic_id = 1
contents = img1.jpg, img2.jpg, img3.jpg an so on..

То, что я пытаюсь достичь, выглядит похоже на webcomi c на inte rnet. разбивка на страницы на каждом изображении.

Сейчас мое решение работает с javascript, но фактический контент источник изображения будет взят с диска Google, при тестировании с большим количеством ссылок иногда одна или два изображения не загружаются.

Контроллер

public function pbp($chapter_id = NULL, $comic_id = 'chapter.comic_id')
    {
        if(!isset($_SESSION['views'. $comic_id]) || (isset($_SESSION['views'. $comic_id]) && $_SESSION['views'. $comic_id] != $comic_id)){
            $this->read_model->viewer($comic_id); //load model viewer
            $this->session->set_userdata('views'. $comic_id, $comic_id);
        }
        $data['comic'] = $this->read_model->getComicById($comic_id);
        $data['images'] = $this->read_model->getChapterImage($chapter_id);
        $this->load->view('read-pbp',$data);
    }

Модель

public function getComicById($comic_id)
        {
            $query = $this->db->get_where('comic', ["comic_id" => $comic_id]);
            return $query;
        }
public function getChapterImage($chapter_id)
        {
            $query = $this->db->get_where('chapter', ["chapter_id" => $chapter_id])->result();
            return $query;
        }

Просмотр

<div class="card-body  p-0">
        <div class="img-list d-flex justify-content-center">
            <?php
            foreach ($images as $row) :
            $images = $row->content;
            $img = explode(";", $images);
            $imgs = count($img); 
            $i = 1;       
            foreach ($img as $page)  {  ?>
                <img src="<?php echo $page ?>" class="img-fluid next" alt="<?php echo $i++ ?>">    
            <?php } 
            endforeach;
            ?>
        </div>
    </div>
    <div class="card-body d-flex justify-content-center">
        <div class="btn-group mt-1 flex-wrap" role="group" aria-label="Basic example">
            <button id="prevb" type="btn" class="btn btn-sm btn-outline-primary text-bold-600 prev"><i class="feather icon-arrow-left mr-1"></i>Prev</button>
            <button type="btn" class="btn btn-sm btn-primary btn-icon"><i class="feather icon-circle m-0"></i></button>
            <button id="nextb" type="btn" class="btn btn-sm btn-outline-primary text-bold-600 next">Next<i class="feather icon-arrow-right ml-1"></i></button>  
        </div>
    </div>

Javascript

$(document).ready(function(){ 
var start = 0;
var stop = 0;
var nb = 1;
var end = start + nb;
var length = $('.img-list img').length;
var list = $('.img-list img');

list.hide().filter(':lt('+(end)+')').show();

$('.prev, .next').click(function(e){
e.preventDefault();

if( $(this).hasClass('prev') ){
start -= nb;
$('html, body').animate({scrollTop: $("#top-page").offset().top}, 200);
} else {
start += nb;
$('html, body').animate({scrollTop: $("#top-page").offset().top}, 200);
}

if( start < 0 || start >= length ) start = 0;
end = start + nb;  

if (stop == length) {
start = length - nb;
end = length;
}

if (end == length) {
stop = end;
}

if( start == 0 ) list.hide().filter(':lt('+(end)+')').show();
else list.hide().filter(':lt('+(end)+'):gt('+(start-1)+')').show();

});         
});

window.onload = function() {
$(document).keyup(function (event) {                         
if (event.keyCode == 39) {  
$("#nextb").click();
} else if (event.keyCode == 37) {
$("#prevb").click();
}
});  
};  

Для PHP есть несколько примеров, но я не могу понять, как его использовать в codeigniter, так как мой учитель хочет, чтобы мы использовали codeigniter, мы будем очень благодарны за любую помощь, спасибо.

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