• Как сделать бэкап базы данных mysql с помощью php?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Кому интересно, нашёл такое решение

    <?php
    
    /**
    * Updated: Mohammad M. AlBanna
    * Website: MBanna.info
    */
    
    // MySQL server and database
    $dbhost = 'localhost';
    $dbuser = 'user';
    $dbpass = 'pass';
    $dbname = 'name';
    $tables = '*';
    
    // Call the core function
    backup_tables($dbhost, $dbuser, $dbpass, $dbname, $tables);
    
    // Core function
    function backup_tables($host, $user, $pass, $dbname, $tables = '*') {
        $link = mysqli_connect($host, $user, $pass, $dbname);
    
        // Check connection
        if (mysqli_connect_errno()) {
            echo "Failed to connect to MySQL: " . mysqli_connect_error();
            exit;
        }
    
        mysqli_query($link, "SET NAMES 'utf8'");
    
        // Get all of the tables
        if ($tables == '*') {
            $tables = array();
            $result = mysqli_query($link, 'SHOW TABLES');
            while ($row = mysqli_fetch_row($result)) {
                $tables[] = $row[0];
            }
        } else {
            $tables = is_array($tables) ? $tables : explode(',', $tables);
        }
    
        $return = '';
        // Cycle through tables
        foreach ($tables as $table) {
            $result = mysqli_query($link, 'SELECT * FROM ' . $table);
            $num_fields = mysqli_num_fields($result);
            $num_rows = mysqli_num_rows($result);
    
            $return .= 'DROP TABLE IF EXISTS ' . $table . ';';
            $row2 = mysqli_fetch_row(mysqli_query($link, 'SHOW CREATE TABLE ' . $table));
            $return .= "\n\n" . $row2[1] . ";\n\n";
            $counter = 1;
    
            // Over tables
            for ($i = 0; $i < $num_fields; $i++) {
                // Over rows
                while ($row = mysqli_fetch_row($result)) {
                    if ($counter == 1) {
                        $return .= 'INSERT INTO ' . $table . ' VALUES(';
                    } else {
                        $return .= '(';
                    }
    
                    // Over fields
                    for ($j = 0; $j < $num_fields; $j++) {
                        if (isset($row[$j])) {
                            $row[$j] = mysqli_real_escape_string($link, $row[$j]);
                            $row[$j] = str_replace("\n", "\\n", $row[$j]);
                            $return .= '"' . $row[$j] . '"';
                        } else {
                            $return .= '""';
                        }
                        if ($j < ($num_fields - 1)) {
                            $return .= ',';
                        }
                    }
    
                    if ($num_rows == $counter) {
                        $return .= ");\n";
                    } else {
                        $return .= "),\n";
                    }
                    ++$counter;
                }
            }
            $return .= "\n\n\n";
        }
    
        // Save file
        $fileName = 'db-backup-' . time() . '-' . (md5(implode(',', $tables))) . '.sql';
        $handle = fopen($fileName, 'w+');
        fwrite($handle, $return);
        if (fclose($handle)) {
            echo "Done, the file name is: " . $fileName;
        } else {
            echo "Error writing to file.";
        }
    
        // Close the database connection
        mysqli_close($link);
    }
    Ответ написан
    Комментировать
  • Отложенная загрузка Яндекс метрики, пробовал ли кто-то ставить?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Более проработанный пример
    <script type="text/javascript">
                ( function () {
                    'use strict';
     
                    // Флаг, что Метрика уже загрузилась.
                    var loadedMetrica = false,
                        // Ваш идентификатор сайта в Яндекс.Метрика.
                        metricaId     = 123456789,
                        // Переменная для хранения таймера.
                        timerId;
     
                    // Для бота Яндекса грузим Метрику сразу без "отложки",
                    // чтобы в панели Метрики были зелёные кружочки
                    // при проверке корректности установки счётчика.
                    if ( navigator.userAgent.indexOf( 'YandexMetrika' ) > -1 ) {
                        loadMetrica();
                    } else {
                        // Подключаем Метрику, если юзер начал скроллить.
                        window.addEventListener( 'scroll', loadMetrica, {passive: true} );
     
                        // Подключаем Метрику, если юзер коснулся экрана.
                        window.addEventListener( 'touchstart', loadMetrica );
     
                        // Подключаем Метрику, если юзер дернул мышкой.
                        document.addEventListener( 'mouseenter', loadMetrica );
     
                        // Подключаем Метрику, если юзер кликнул мышкой.
                        document.addEventListener( 'click', loadMetrica );
     
                        // Подключаем Метрику при полной загрузке DOM дерева,
                        // с "отложкой" в 1 секунду через setTimeout,
                        // если пользователь ничего вообще не делал (фоллбэк).
                        document.addEventListener( 'DOMContentLoaded', loadFallback );
                    }
     
                    function loadFallback() {
                        timerId = setTimeout( loadMetrica, 1000 );
                    }
     
                    function loadMetrica( e ) {
     
                        // Пишем отладку в консоль браузера.
                        if ( e && e.type ) {
                            console.log( e.type );
                        } else {
                            console.log( 'DOMContentLoaded' );
                        }
     
                        // Если флаг загрузки Метрики отмечен,
                        // то ничего более не делаем.
                        if ( loadedMetrica ) {
                            return;
                        }
     
                        (function(m,e,t,r,i,k,a){m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)}; m[i].l=1*new Date();k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)}) (window, document, "script", "https://cdn.jsdelivr.net/npm/yandex-metrica-watch/tag.js", "ym");
                        ym( metricaId, "init", { clickmap:true, trackLinks:true, accurateTrackBounce:true });
     
                        // Отмечаем флаг, что Метрика загрузилась,
                        // чтобы не загружать её повторно при других
                        // событиях пользователя и старте фоллбэка.
                        loadedMetrica = true;
     
                        // Очищаем таймер, чтобы избежать лишних утечек памяти.
                        clearTimeout( timerId );
     
                        // Отключаем всех наших слушателей от всех событий,
                        // чтобы избежать утечек памяти.
                        window.removeEventListener( 'scroll', loadMetrica );
                        window.removeEventListener( 'touchstart', loadMetrica );
                        document.removeEventListener( 'mouseenter', loadMetrica );
                        document.removeEventListener( 'click', loadMetrica );
                        document.removeEventListener( 'DOMContentLoaded', loadFallback );
                    }
                } )()
        </script>


    Источник: https://www.kobzarev.com/technical-seo/yandex-metr...
    Ответ написан
    Комментировать
  • Возможно ли сделать такое оформление?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Можно выгрузить в SVG эти элементы, затем положить в псевдоэлемент

    А чтобы всегда был в нужном месте использовать position: absolute; плюс
    left: 50%;
    transform: translateX(-50%); // подвинуть в нужно положение


    для родительского блока, который оборачивает эту картинку с текстом не забыть про position: relative;

    Пример https://codepen.io/kalaganov5/pen/NWLLOpK
    Ответ написан
  • Как убрать ошибки связанные с функциями WP в VSC?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Нужно добавить wordpress в intelephense.stubs
    62f39f2d408e8437258519.png

    Подробнее https://stackoverflow.com/questions/59890854/vs-co...
    Ответ написан
    Комментировать
  • Как отключить обратную связь от jetpack?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Дольно просто, через JetPack debug, отключить модуль контактная форма

    Ссылка в помощь: вашдомен.ру/wp-admin/admin.php?page=jetpack_modules

    Подробнее https://www.youtube.com/watch?v=LlFNIEMJHCE
    Ответ написан
    Комментировать
  • Contact form 7 Как сделать так чтобы при появлении ошибки заполнения поля не разъезжались поля и элементы сайта?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Вариант сделать чтобы текст ошибки был виде всплывающего окна. Пример
    input_fields_4x.png?compress=1&resize=1000x750&vertical=top

    p.s. Изначально раздел с ошибкой нет в разметке, а когда ошибка происходит ему и нужно место, поэтому форма разъезжается
    Ответ написан
    Комментировать
  • Как настроить цель bitrix24 чата в Метрику через GTM?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Вомзожно пригодиться кому-нибудь:

    1) В GTM создаём тег, который будет отправлять событие о том что начат чат, с кодом
    <script>
    window.addEventListener('onBitrixLiveChat', function(event)
    {
      var widget = event.detail.widget;
      widget.subscribe({
        type: BX.LiveChatWidget.SubscriptionType.sessionStart,
        callback: function(data) {
        	dataLayer.push({"event": "b24_chat_start"});
        }
      });
    });
    </script>

    Триггер активации на все страницы

    2) Вешаем теги в GTM с целями на тригер с событием b24_chat_start
    Ответ написан
    Комментировать
  • Почему не отображается информация в карточке товара?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Наверное не новость) Все дело в стилях вашей темы, где-то ошибка, если стили выключить то всё показывается)
    Ответ написан
  • WordPress (Elementor) / Не работают эффекты движение. Что делать?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Напишите как добавляете эффект?
    С помощью CSS или в Конструкторе?
    А также полезно прикрепить ссылку, скриншоты
    Ответ написан
  • Как узнать количество подписавшихся по официальной рекламе Facebook, Instagram?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Насколько знаю такой возможности нет
    Ответ написан
    Комментировать
  • Почему не создается аккаунт в Business Facebook?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Глюк, попробуйте с разных браузеров, с другого аккаунта, либо пишите в тех поддержку
    Ответ написан
    Комментировать
  • Почему пиксель Facebook не добавляется при запуске рекламы?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Возможно вы делаете через бизнес менеджер и его не прикрепили к рекламному аккаунту и у вас нет к нему доступа для создания рекламы
    Ответ написан
  • Facbook pixel с двух сайтов, можно ли?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Аудиторию одного и того же пикселя очень просто разделять по доменам или поддоменам в кастомных аудиториях, поэтому используйте один пиксель и будет счастье)
    p.s. Желательно чтобы тематики были схожими
    Ответ написан
    Комментировать
  • Где в аналитике Facebook посмотреть интересы пользователей?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Насколько знаю такой возможности нет, если вы найдете способ, поделитесь)
    Ответ написан
    Комментировать
  • Как сделать фон футера картинкой (вордпресс)?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Попробуй прописать так
    footer{
      font-size: 14px;
      padding: 45px 10px 40px;
      border-top: 1px solid #E5E5E5;
        background: url('/images/landshaftniy-dizayn-1920x729.jpg') no-repeat;
    }
    или

    #sub-footer{
      font-size: 14px;
      padding: 45px 10px 40px;
      border-top: 1px solid #E5E5E5;
        background: url('/images/landshaftniy-dizayn-1920x729.jpg') no-repeat;
    }
    Ответ написан
  • Какой формат динамической UTM метки в Facebook?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    The parameters that currently can be dynamically inserted into ad URLs
    •Site Source Name {{site_source_name}}

    -Depending on where the ad appeared this parameter has four possible values, Facebook (‘fb’), Instagram (‘ig’), Messenger (‘msg’) or the Audience Network (‘an’). You can track exactly where your conversions or clicks are coming from! This is just the start check out these other dynamic parameters.

    •Placement {{placement}}

    -This parameter gives you six possible values depending on where the ad appeared. Possibilities include the desktop feed, mobile feed, the right column of Facebook Messenger inbox, the Messenger inbox or within the Instagram Feed or Instagram Stories.

    •Campaign, Ad Set and Ad Names {{campaign.name}} {{adset.name}} {{ad.name}}

    -This parameter will dynamically insert the name of the campaign, ad set or ad according to how you have named each when setting up your ads.

    •Campaign, Ad Set & Ad IDs {{campaing.id}} {{adset.id}} {{ad.id}}

    -This parameter will dynamically insert the assigned ID of the campaign, ad set or ad. You will need to customize your columns to add the relevant ID column.

    You may already be using custom campaign parameters (utm_source, utm_medium, and utm_campaign) to send campaign data from Facebook to Google Analytics using the “URL Parameters” section in Ads Manager. These parameters are manually set for each ad created. Before the only way to analyze data at the ad network and placement level would be to create separate Ad Sets for each combination of network and placement then manually update the utm parameters. Simply put, most of us don’t have that time! With the update, this is no longer an issue.

    PProtip: set up parameters like so:
    utm_source and {{site_source_name}}
    utm_medium and {{placement}}
    utm_campaign and {{adset.name}} or {{campaign.name}}_{adset.name}}
    utm_content and {{ad.name}} or {{ad.id}}
    You still will be able to see source/medium data in the Acquisition > All Traffic section in the Analytics. You could add a Campaign as a secondary dimension if you are looking to get more out of your data. If you are testing two different variations of an ad the utm_content tag can be used to see which variation is performing better. To do this go to Acquisition > Campaigns > All Campaigns report in Analytics, click the particular campaign and add a secondary dimension for Ad Content.
    Ответ написан
    Комментировать
  • Если размещено два пикселя фейсбука, будет определяться лишь первый код?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Правильно установить Pixel таким образом

    <!-- Facebook Pixel Code -->
    <script>
      !function(f,b,e,v,n,t,s)
      {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
      n.callMethod.apply(n,arguments):n.queue.push(arguments)};
      if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
      n.queue=[];t=b.createElement(e);t.async=!0;
      t.src=v;s=b.getElementsByTagName(e)[0];
      s.parentNode.insertBefore(t,s)}(window, document,'script',
      'https://connect.facebook.net/en_US/fbevents.js');
      fbq('init', 'ИД ПЕРВЫЙ');
    	fbq('init', 'ИД ВТОРОЙ');
      fbq('track', 'PageView');
    </script>
    <noscript><img height="1" width="1" style="display:none"
      src="https://www.facebook.com/tr?id=ИД ПИКСЕЛЯ 1&ev=PageView&noscript=1"
    /></noscript>
    <!-- End Facebook Pixel Code -->
    Ответ написан
    Комментировать
  • Как настроить подставление текущей даты, при заполнении соседней ячейки?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Google docs Скрипт автоматического заполнения ячеек

    Ниже представлен скрипт автоматического заполнения ячеек первого и второго столбца датой и временем, при изменении ячейки из третьего столбца.
    Работает скрипт так:
    если обнаружена правка в документе,
    проверяем, изменена ли ячейка из третьего столбца и это изменение произведено на листе с названием "Лист1", если да,
    проверяем, не пустая ли ячейка из первого столбца (если не пустая, значит дата была уже ранее проставлена, соответственно время и дату не меняем).
    если пуста, то
    в ячейку первого столбца добавляем дату в формате: год.месяц.день
    в ячейку второго столбца добавляем время GMT+03 в формате: час:минуты
    f46
    function onEdit(e) {
    var sheet = e.source.getActiveSheet();
    var idCol = e.range.getColumn();
    var idRow = e.range.getRow();
    if ( idCol == 3 && sheet.getName() =='Лист1' ) {
    var Value = e.range.offset(0, -2).getValues(); // Смотрим что в ячейке с лева на 2
    if ( Value == "" ) {
    
    var vartoday = getDate();
    var varnow = getTime();
    
    
    sheet.getRange(idRow, 1).setValue( vartoday );
    sheet.getRange(idRow, 2).setValue(varnow);
    }
    }
    }
    
    // Returns YYYYMMDD-formatted date.
    function getDate() {
    var today = new Date();
    today.setDate(today.getDate());
    //return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
    return Utilities.formatDate(today, 'GMT+03:00', 'yyyy.MM.dd');
    }
    
    function getTime() {
    var today = new Date();
    today.setDate(today.getDate());
    //return Utilities.formatDate(today, 'PST', 'yyyy.MM.dd');
    return Utilities.formatDate(today, 'GMT+03:00', 'HH:mm');
    }


    Нашёл тут
    А также вот
    Ответ написан
    7 комментариев
  • Как подключить Инстаграм аккаунт к фейсбук для рекламы?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Пума Тайланд прав, скорее всего кто-то привязал ваш аккаунт, чтобы привязать его к своему фб просто отмену связь в разделе связанные аккаунты и переключите временно с бизнес аккаунта на личный, потом вернётесь обратно
    Ответ написан
    Комментировать
  • Как в Facebook ADS узнать по какому виду таргетинга были лиды?

    Kalaganov5
    @Kalaganov5
    Реклама, Аналитика, Веб-разработка
    Конечно есть такая возможно, для этого в настройках поставьте разбивку по плейсменту
    5c143ffe7b775664351225.png
    Ответ написан
    2 комментария