У меня есть 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, мы будем очень благодарны за любую помощь, спасибо.