• Формирование json с вложенными циклами?

    @qwermus
    Имаджес обнулять надо. В целом любую используемую переменную изначально надо определить перед тем, как использовать. Т.е. сразу после первого while ставишь
    $images = '';
    И теперь при каждом новом товаре имаджес будут чистые.
    Ответ написан
    Комментировать
  • Ajax несколько форм и перезагрузка страницы?

    ThunderCat
    @ThunderCat Куратор тега JavaScript
    {PHP, MySql, HTML, JS, CSS} developer
    охохох...
    $("#editSpecification-<?=$tovar_id?>").submit(function(e){...
    тут вы повесили листенер на ОДИН конкретный элемент формы, так как тут то у вас цикла нет! Замените селектор на form или на класс формы. Внутри соответственно вы спокойно получите эту конкретную форму как $(this), собственно ее сереализуете и все, профит!

    а если править второе и последующие то страница просто перегружается
    это понятно, так как на них не повешен листенер, форма нормально так себе субмитится, превентДефаулта то на ней нету...
    Ответ написан
    4 комментария
  • Как правильно вывести данные, минимизируя количество запросов?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Ну вот опять вопрос высосанный из пальца.
    Минимизация количества запросов не долна быть самоцелью.
    У тебя играет твой аккордеон? Быстро? Если да - то оставь вего в покое, и ничего не трогай.
    Если медленно - то надо ускроить. Но не изменением количества запросов, а ускоренмем того участка, который тупит. Это блин простая истина, но она почему-то недоступна пониманию 95% похапешников. Которые для ускорения работы с сетевыми протоколами кидаются заменять двойные "ковычки" на одинарные.

    Менять запросы надо не потому что их много, а потому что они бессмысленные.
    Вот у тебя запрос с группировкой, который выводит те же самые данные, что и запрос ниже в цикле.
    Вопрос - ЗАЧЕМ тебе этот запрос вообще?
    Ну то есть ответ понятен - чтобы можно было кушать любимое спагетти, устравивая кашу из HTML, SQL, CSS, РНР, mysqli, картинок и вообще всего и побольше, главное чтобы всё в куче было.
    И как тут в начале страницы узнать, что будет двумя строчками ниже? Загадка века.

    А если хотя бы раз в жизни попробовать написать осмысленный код, который сначала получает данные, обрабатывает их, а только потом начинает вывод, то получится, что нужен-то один запрос всего.
    Поскольку запросить всех дилеров одним запросом, сгруппировать в массивы по региону и городу, а потом тупо вывести, показывая количество элементов в массиве с помощью банальной функции count(), прекрасно можно и в похапе.

    И в итоге не придётся заставлять завсгдатаев тостера напрягать последние извилины для решения таких сложных проблем как "кэширование", "отправка запросов одним запросом" и прочими умными словами, не имеющими ни малейшего отношения к реальности.
    Ответ написан
    5 комментариев
  • Telegram бот не выводит месседж?

    nokimaro
    @nokimaro
    Меня невозможно остановить, если я смогу начать.
    Если длина итогового сообщения больше 4096 символов (utf8), то разбиваем его на несколько сообщений и отправляем каждое отдельно.

    case
        ('Промо'):
            $sql = 'SELECT * FROM promo';
            $result = mysqli_query($link, $sql);
            $array = array();
            while($row = mysqli_fetch_array($result))
            {
                $item['promo_name'] = $row['promo_name'];
                $item['promo_descr'] = $row['promo_descr'];
                $item['promo_link'] = $row['promo_link'];
                $cod[] = $item;
            }
            
            $text = ''; // <---
            foreach($cod as $v)
            {
                $new_line = $v['promo_name'].' - '.$v['promo_descr'].' <a href="'.$v['promo_link'].'">перейти к акции</a><br/>';
                
                if(mb_strlen($text) + mb_strlen($new_line) > 4096) // <---
                {
                    file_get_contents($GLOBALS['api'].'/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text='.urlencode($text));
                    $text = '';
                }
                
                $text .= $new_line; // <---
            }
            
            if($text != '') // <---
            {
                file_get_contents($GLOBALS['api'].'/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text='.urlencode($text));
            }                
            // file_get_contents($GLOBALS['api'] . '/sendMessage?chat_id='.$chat_id.'&reply_markup='.$keyboard.'&text=' . urlencode("Код ".$row['promo_name']." \n ".$row['promo_descr']." \n Ссылка ".$row['promo_link']." "));
        break;
    Ответ написан
    1 комментарий