@Studentka1996

Почему цикл выводит кнопки не правильно?

if 'ВсеТовары' in text:
        call_kat = text.split('ВсеТовары_')[-1]
        print(call_kat)
        #Если выбрано действие "Все товары" - показать все товары выбранной категории
        connect_cursor.execute(f'''SELECT DISTINCT Ф.Имя, GROUP_CONCAT(Объем || Цена_руб), Описание, Состав, В_наличие, Расширение, Путь_к_файлу 
        FROM Товар Т JOIN Фото Ф ON Т.Товар = Ф.Имя
            JOIN Атрибут_товара А ON Т.Код_атрибута= А.Код WHERE Категория = "Салат" GROUP BY Ф.Имя''') 
        rows = connect_cursor.fetchall()
        keyb_addKorzina = telebot.types.InlineKeyboardMarkup() 
        for i in rows:
            ls_atr = []
            for atr in i[1].split(','):
                ls_atr.append(telebot.types.InlineKeyboardButton(text=atr, callback_data=f'ВыбратьАтрибут_{atr}'))
            keyb_addKorzina.add(*ls_atr)
            rez_info = f'*Наименование: {i[0]}*\n Описание: {i[4]}\n{i[3]}\n'
            #Отправить фото и текст боту
            with open(f'{i[6]}/{i[0]}{i[5]}', "rb") as file: 
                #Если товар в наличии
                if int(i[4]) == 1:  
                    #send_photo считывает файл и возвращает содержимое файла
                    bot.send_photo(message.chat.id, file.read(), rez_info + '----------\U00002705 В наличие',  parse_mode="Markdown", reply_markup = keyb_addKorzina)  
                elif int(i[4]) == 0:  
                    bot.send_photo(message.chat.id, file.read(), rez_info + '----------\U00002757 Товар закончился', parse_mode="Markdown")


Результат:
5f32b60925dd6063581016.png
5f32b612a23a4445171575.png
5f32b6db66ff5862225726.png

Должен быть вывод 5f32b657f0b8a207428512.png

Пытаюсь сделать сама, не получается.....Прошу помощи((
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
SoreMix
@SoreMix
yellow
Список вы сбрасываете в начале каждого цикла, а клавиатуру не обнуляете

if 'ВсеТовары' in text:
        call_kat = text.split('ВсеТовары_')[-1]
        print(call_kat)
        #Если выбрано действие "Все товары" - показать все товары выбранной категории
        connect_cursor.execute(f'''SELECT DISTINCT Ф.Имя, GROUP_CONCAT(Объем || Цена_руб), Описание, Состав, В_наличие, Расширение, Путь_к_файлу 
        FROM Товар Т JOIN Фото Ф ON Т.Товар = Ф.Имя
            JOIN Атрибут_товара А ON Т.Код_атрибута= А.Код WHERE Категория = "Салат" GROUP BY Ф.Имя''') 
        rows = connect_cursor.fetchall()
         
        for i in rows:
            keyb_addKorzina = telebot.types.InlineKeyboardMarkup()
            ls_atr = []
            for atr in i[1].split(','):
                ls_atr.append(telebot.types.InlineKeyboardButton(text=atr, callback_data=f'ВыбратьАтрибут_{atr}'))
            keyb_addKorzina.add(*ls_atr)
            rez_info = f'*Наименование: {i[0]}*\n Описание: {i[4]}\n{i[3]}\n'
            #Отправить фото и текст боту
            with open(f'{i[6]}/{i[0]}{i[5]}', "rb") as file: 
                #Если товар в наличии
                if int(i[4]) == 1:  
                    #send_photo считывает файл и возвращает содержимое файла
                    bot.send_photo(message.chat.id, file.read(), rez_info + '----------\U00002705 В наличие',  parse_mode="Markdown", reply_markup = keyb_addKorzina)  
                elif int(i[4]) == 0:  
                    bot.send_photo(message.chat.id, file.read(), rez_info + '----------\U00002757 Товар закончился', parse_mode="Markdown")
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
от 150 000 до 200 000 ₽
OnederX Москва
от 100 000 до 120 000 ₽
Кенарий Санкт-Петербург
от 120 000 до 250 000 ₽
22 сент. 2020, в 06:45
4000 руб./за проект
22 сент. 2020, в 03:43
35000 руб./за проект
22 сент. 2020, в 02:11
10000 руб./за проект