Всем привет, уже как-то искал как это сделать, с горем по полам получилось. Но хочется реально понять как это устроено, если можно с комментариями в коде.
Суть такая, в базе данных имеются такие данные: фото, название и описание.
Необходимо сделать кнопки перелистывания данных и фото кнопками "Назад" и "Вперед"
Буду ооочень благодарен если будут реальные примеры реализации. Нашел пример того что хочу, но так и не понял :( 1. Не совсем корректно работает код (не листает, выдает ошибку), так еще к тому же тут получают словарь...
https://ru.stackoverflow.com/questions/1330106/pyt...
Вариант который был реализован ранее, но тут выводятся перелистывание чисто кнопок...
def test(page=1, number_page=1):
db.commit() #обновить бд
c.execute("""SELECT category FROM menu_category WHERE rowid > 0 and status > 0 group by 1""")
items = c.fetchall()
keyboards_test = []
list = []
el = []
for el in items:
keyboards_test += el[0]
keyboard = InlineKeyboardMarkup(row_width=2)
if len(keyboards_test) % 6 == 0:
page_all = len(keyboards_test) // 6
else:
page_all = (len(keyboards_test) // 100) + 2
for el in items[page-1:page+5]:
list.append(InlineKeyboardButton(text=f"{el[0]}", callback_data=f"{el[0]}"))
keyboard.add(*list)
if int(page_all) == 1:
chet = types.InlineKeyboardButton(text=f"[{number_page} / {page_all}]", callback_data=f"asdad")
keyboard.add(chet)
elif int(number_page) == 1:
keyboard.add(types.InlineKeyboardButton(text=f"[{number_page} / {page_all}]", callback_data=f"asdad"), types.InlineKeyboardButton(text=f"➡️", callback_data=f"jjj;{page+6};{number_page+1}"))
elif int(number_page) == int(page_all):
keyboard.add(types.InlineKeyboardButton(text=f"⬅️", callback_data=f"jjj;{page-6};{number_page-1}"), types.InlineKeyboardButton(text=f"[{number_page} / {page_all}]", callback_data=f"asdad"))
else:
keyboard.add(types.InlineKeyboardButton(text=f"⬅️", callback_data=f"jjj;{page-6};{number_page-1}"), types.InlineKeyboardButton(text=f"[{number_page} / {page_all}]", callback_data=f"asdad"), types.InlineKeyboardButton(text=f"➡️", callback_data=f"jjj;{page+6};{number_page+1}"))
db.commit() #обновить бд
c.execute("SELECT * FROM KeyBat WHERE kbt = 'waiter' ")
items3 = c.fetchall()
for el in items3:
waiter = InlineKeyboardButton(f"{el[1]}", callback_data='Официант')
db.commit() #обновить бд
c.execute("SELECT * FROM KeyBat WHERE kbt = 'glav' " )
items = c.fetchall()
for el in items:
next_2 = InlineKeyboardButton(f"{el[1]}", callback_data='next_2')
keyboard.add(next_2,waiter)
db.commit() #обновить бд
return keyboard
@dp.callback_query_handler(text_contains='jjj')
async def page_back(call: types.CallbackQuery):
page = int(call.data.split(";")[1])
number_page = int(call.data.split(";")[2])
await call.message.edit_reply_markup(reply_markup=test(page, number_page))
@dp.message_handler(commands="start13")
async def start(message: types.Message):
await message.answer("Категории:", reply_markup=test())