我正在使用PHP构建漫画页面。 我在SQL中的章节行有
id int(11) unsigned NOT NULL auto_increment,
catid smallint(5) unsigned NOT NULL default '0',
listcatid varchar(255) NOT NULL default '',
topicid smallint(5) unsigned NOT NULL default '0',
admin_id mediumint(8) unsigned NOT NULL default '0',
author varchar(255) default '',
sourceid mediumint(8) NOT NULL default '0',
addtime int(11) unsigned NOT NULL default '0',
edittime int(11) unsigned NOT NULL default '0',
status tinyint(4) NOT NULL default '1',
publtime int(11) unsigned NOT NULL default '0',
exptime int(11) unsigned NOT NULL default '0',
archive tinyint(1) unsigned NOT NULL default '0',
title varchar(255) NOT NULL default '',
alias varchar(255) NOT NULL default '',
chapter float default '0',
我尝试将每章的详细章节展示给下一章和前一章。 但这章不是一步一步的。
在示例中,我想要访问者在第10章和数据库中观看第9章,第9.5节,第10.5章,第10章。它们可以作为上一章和下一章回应。
如果我正在观看第10章并使用“SELECT chapter WHERE chapter = chapter + 1”作为下一章,那么下一章将是11.他们用十进制编写了章节,在我的例子中是10.5。
这是演示链接 http://truyentranhtuan.com/onepunch-man-chuong-48-5/
您可以看到左箭头和右箭头。我只是想回应那样的结果。
有什么解决方案吗?
答案 0 :(得分:0)
选择下一章大于当前章节(当前章节= 20):
SELECT * FROM yourTable WHERE chapter > 20 ORDER BY chapter ASC LIMIT 1;
然后反过来得到上一章:
SELECT * FROM yourTable WHERE chapter < 20 ORDER BY chapter DESC LIMIT 1;
答案 1 :(得分:0)
基于DDL chapter
是varchar(255)
,因此订单将是:
1,10,2,20,3等。您需要应用类型转换(或更好地将列定义更改为decimal
)。
修改:现在chapter
是float
,不再需要演员:
下一章:
SELECT min(chapter) FROM tab WHERE chapter > 20;
上一章:
SELECT max(chapter) FROM tab WHERE chapter < 20;