Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

yurabr

Користувачі
  
  • Публікації

    451
  • З нами

  • Відвідування

Повідомлення, опубліковані користувачем yurabr

  1. Це два файлики, які створюють простенький сайтик:)

    Кидаєш в піддомен на хості чи як воно там у тебе робиться... спочатку створюєш піддомен

    Приблизно вийде customer.mysite.ua

    Користуєшся. Дороблюєш, як дозволить фантазія.

  2. Тримай (собі робив для того ж).
    php
     

    Скрытый текст
    <?php
    // З'єднання з базою даних
    $host = "Пишіть своє";
    $username = "Пишіть своє";
    $password = "Пишіть своє";
    $database = "Пишіть своє";
    
    $connection = new mysqli($host, $username, $password, $database);
    
    if ($connection->connect_error) {
        die("Connection failed: " . $connection->connect_error);
    }
    $connection->set_charset("utf8");
    // Отримання даних з форми
    $minOrderTotal = $_POST["min_order_total"];
    $minOrderCount = $_POST["min_order_count"];
    $intervalMonth = $_POST["interval_month"];
    
    // Підготовка та виконання SQL-запиту
    $sql = "SELECT c.customer_id, c.firstname, c.lastname, COUNT(o.order_id) AS order_count, SUM(o.total) AS total_order_amount, MAX(o.date_added) AS last_order_date 
            FROM oc_customer c 
            JOIN oc_order o ON c.customer_id = o.customer_id 
            GROUP BY c.customer_id 
            HAVING (order_count > $minOrderCount OR total_order_amount > $minOrderTotal) AND last_order_date <= NOW() - INTERVAL $intervalMonth MONTH 
            ORDER BY `order_count` ASC";
    
    $result = $connection->query($sql);
    
    // Формування HTML-виводу
    $output = '<table>
                    <tr>
                        <th onclick="sortTable(1)">Customer ID</th>
                        <th onclick="sortTable(2)">Ім*я</th>
                        <th onclick="sortTable(3)">Прізвище</th>
                        <th onclick="sortTable(4)">Кількість замовлень</th>
                        <th onclick="sortTable(5)">Сума замовлень</th>
                        <th onclick="sortTable(6)">Дата останнього замовлення</th>
                    </tr>';
    
    if ($result->num_rows > 0) {
        $customerCount = 0;
    
        while ($row = $result->fetch_assoc()) {
            $customerCount++;
            $output .= '<tr>
                            <td>' . $row["customer_id"] . '</td>
                            <td>' . $row["firstname"] . '</td>
                            <td>' . $row["lastname"] . '</td>
                            <td>' . $row["order_count"] . '</td>
                            <td>' . $row["total_order_amount"] . '</td>
                            <td>' . $row["last_order_date"] . '</td>
                        </tr>';
        }
    }
    $output .= '<p>Total Customers: ' . $customerCount . '</p>';
    $output .= '</table>';
    
    echo $output;
    
    // Закриття з'єднання
    $connection->close();
    ?>
    
    <script>
        function sortTable(n) {
            var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
            table = document.querySelector("table");
            switching = true;
            //Set the sorting direction to ascending:
            dir = "asc";
            /*Make a loop that will continue until
            no switching has been done:*/
            while (switching) {
                //start by saying: no switching is done:
                switching = false;
                rows = table.rows;
                /*Loop through all table rows (except the
                first, which contains table headers):*/
                for (i = 1; i < (rows.length - 1); i++) {
                    //start by saying there should be no switching:
                    shouldSwitch = false;
                    /*Get the two elements you want to compare,
                    one from current row and one from the next:*/
                    x = rows[i].getElementsByTagName("td")[n];
                    y = rows[i + 1].getElementsByTagName("td")[n];
                    /*check if the two rows should switch place,
                    based on the direction, asc or desc:*/
                    if (dir == "asc") {
                        if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                            //if so, mark as a switch and break the loop:
                            shouldSwitch = true;
                            break;
                        }
                    } else if (dir == "desc") {
                        if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
                            //if so, mark as a switch and break the loop:
                            shouldSwitch = true;
                            break;
                        }
                    }
                }
                if (shouldSwitch) {
                    /*If a switch has been marked, make the switch
                    and mark that a switch has been done:*/
                    rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
                    switching = true;
                    //Each time a switch is done, increase this count by 1:
                    switchcount++;
                } else {
                    /*If no switching has been done AND the direction is "asc",
                    set the direction to "desc" and run the while loop again.*/
                    if (switchcount == 0 && dir == "asc") {
                        dir = "desc";
                        switching = true;
                    }
                }
            }
        }
    </script>

     

    html

    Скрытый текст
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge">
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
        <title>Customer Information</title>
        <style>
            body {
                font-family: 'Arial', sans-serif;
                background-color: #f8f8f8;
                margin: 0;
                padding: 0;
            }
    
            h2 {
                color: #333;
                text-align: center;
                margin-top: 20px;
            }
    
            form {
                max-width: 400px;
                margin: 20px auto;
                background-color: #fff;
                padding: 20px;
                border-radius: 8px;
                box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            }
    
            label {
                display: block;
                margin-bottom: 8px;
                color: #555;
            }
    
            input {
                width: 100%;
                padding: 10px;
                margin-bottom: 15px;
                border: 1px solid #ddd;
                border-radius: 4px;
                box-sizing: border-box;
            }
    
            input[type="submit"] {
                background-color: #4CAF50;
                color: #fff;
                cursor: pointer;
            }
    
            input[type="submit"]:hover {
                background-color: #45a049;
            }
    
            #customerInfo {
                max-width: 800px;
                margin: 20px auto;
            }
    
            table {
                width: 100%;
                border-collapse: collapse;
                margin-top: 20px;
                border-radius: 8px;
                overflow: hidden;
                box-shadow: 0 0 10px rgba(0, 0, 0, 0.1);
            }
    
            th, td {
                padding: 15px;
                text-align: left;
                border-bottom: 1px solid #ddd;
            }
    
            th {
                background-color: #4CAF50;
                color: white;
                cursor: pointer;
            }
    
            th:hover {
                background-color: #45a049;
            }
        </style>
    </head>
    <body>
    
    <h2>Інформація про клієнтів</h2>
    
    <form method="post" onsubmit="submitForm(event)">
        <label for="min_order_total">Сума замовлень:</label>
        <input type="number" name="min_order_total" value="10000" required>
    
        <label for="min_order_count">Кількість замовлень:</label>
        <input type="number" name="min_order_count" value="3" required>
    
        <label for="interval_month">Останнє замовлення місяців тому:</label>
        <input type="number" name="interval_month" value="2" required>
    
        <input type="submit" value="Submit">
    </form>
    
    <div id="customerInfo"></div>
    
    <script>
        function submitForm(event) {
            event.preventDefault();
            var formData = new FormData(event.target);
            var xhr = new XMLHttpRequest();
            xhr.onreadystatechange = function () {
                if (xhr.readyState === 4 && xhr.status === 200) {
                    document.getElementById('customerInfo').innerHTML = xhr.responseText;
                }
            };
            xhr.open("POST", "get_customer_info.php", true);
            xhr.send(formData);
        }
    
        function sortTable(n) {
            var table, rows, switching, i, x, y, shouldSwitch, dir, switchcount = 0;
            table = document.querySelector("table");
            switching = true;
            dir = "asc";
    
            while (switching) {
                switching = false;
                rows = table.rows;
    
                for (i = 1; i < (rows.length - 1); i++) {
                    shouldSwitch = false;
                    x = rows[i].getElementsByTagName("td")[n];
                    y = rows[i + 1].getElementsByTagName("td")[n];
    
                    if (dir == "asc") {
                        if (x.innerHTML.toLowerCase() > y.innerHTML.toLowerCase()) {
                            shouldSwitch = true;
                            break;
                        }
                    } else if (dir == "desc") {
                        if (x.innerHTML.toLowerCase() < y.innerHTML.toLowerCase()) {
                            shouldSwitch = true;
                            break;
                        }
                    }
                }
    
                if (shouldSwitch) {
                    rows[i].parentNode.insertBefore(rows[i + 1], rows[i]);
                    switching = true;
                    switchcount++;
                } else {
                    if (switchcount == 0 && dir == "asc") {
                        dir = "desc";
                        switching = true;
                    }
                }
            }
        }
    </script>
    
    </body>
    </html>

     

    Може комусь знадобиться...

  3. 29.02.2024 в 16:15, yurabr сказал:

    Якщо так не можливо, то на майбутнє, якусь кнопочку «Додати індекси»

    Все, зрозумів. Для нових товарів все додається, старі не переписуються...
    Можна замовити адаптацію, щоб старі індекси з mpn лише переписувались?

  4. 29.02.2024 в 15:30, yurabr сказал:

    Ми в базу в mpn пишемо: Надшодження товарів 29.02.24. 
    Може можна десь в базу (в індекси) продублювати?

    Якщо так не можливо, то на майбутнє, якусь кнопочку «Додати індекси»

  5. 29.02.2024 в 15:18, sv2109 сказал:

    ну тоді модуль ніяк не знає коли саме відбувається ваш запис в базу і вам потрібно оновлювати індекси вручну, якщо товар новий то можна просто добавити нові індекси, а якщо старий то або перезбережіть даний товар через адмінку або видаліть та створіть всі індекси щоб оновити їх. 
    або ще є варіант через крон але він по замовчуванню створює нові індекси, а вам потрібно редагувати існуючі. 

    Ми в базу в mpn пишемо: Надшодження товарів 29.02.24. 
    Може можна десь в базу (в індекси) продублювати?

  6. Дууже для мене важливе питання.
    Я для виводу нових надходжень використовую MPN. Там прописую приблизно таке (це або в нових товарах або в старих переписую): Товари для школи 28.02.24 і... воно спрацьовує і показує потрібні товари, але не одразу, а лише коли я видаляю індекси і створюю нові. Але це гемор... + весь час додавання індексів пошук працює не адекватно.
    Або я щось не так роблю або ті індекси мають додаватись якось без видалення.

  7. 29.02.2024 в 12:42, yurabr сказал:

    Ще одне, дууже для мене важливе питання.
    Я для виводу нових надходжень використовую MPN. Там прописую приблизно таке (це або в нових товарах або в старих переписую): Товари для школи 28.02.24 і... воно спрацьовує і показує потрібні товари, але не одразу, а лише коли я видаляю індекси і створюю нові. Але це гемор... + весь час додавання індексів пошук працює не адекватно.
    Або я щось не так роблю або ті індекси мають додаватись якось без видалення.

    Сорі. То в модуль пошуку з морфологією

  8. Ще одне, дууже для мене важливе питання.
    Я для виводу нових надходжень використовую MPN. Там прописую приблизно таке (це або в нових товарах або в старих переписую): Товари для школи 28.02.24 і... воно спрацьовує і показує потрібні товари, але не одразу, а лише коли я видаляю індекси і створюю нові. Але це гемор... + весь час додавання індексів пошук працює не адекватно.
    Або я щось не так роблю або ті індекси мають додаватись якось без видалення.

  9. Доброго дня.
    Підкажіть, будь ласка, як то налаштувати, щоб в базу в поле shipping_postcode записувався індекс. 
    Спитав у Прораба в темі модуля укрпошти

    , каже, що просто виведіть поле індекс і буде писати. 
    Вивів, нічого не пише. 
    У нього написано про підтримку вашого модуля, у вас про підтримку його.
    Ви мені робили адаптацію під шаблон ремаркет, тут все норм.
    Мені замовляти адаптацію під укрпошту, яка мала б з коробки працювати???
    У вас на демо нема укрпошти...
    Або дайте, будь ласка, нормальне конкретне поясненя, як то зробити, або давайте я оплачу вам ще й заявлену адаптацію...
    Дякую

  10. 05.02.2024 в 20:36, yurabr сказал:

    Доброї ночі.

    Виникло таке питаннячко... може там все легко.

    В замовленні нема індекса окремо... В ос_order мав би індекс бути в shipping_postcode... там пусто. 
    Дуже потрібен індекс хоча б десь окремо.

    Тут

    image.png.1423a46f777d0148c8d585f48db03a5a.png

    індекс є, в таблиці відділень він є, а в замовленні :(

    Що робити?

    Блін. ну платно зробіть, щоб записувало індекс в поле shipping_postcode, якщо воно туди не пишеться.
    Чи поясніть, чому в мене не пишеться.

    Дякую.

  11. 05.02.2024 в 20:36, yurabr сказал:

    Доброї ночі.

    Виникло таке питаннячко... може там все легко.

    В замовленні нема індекса окремо... В ос_order мав би індекс бути в shipping_postcode... там пусто. 
    Дуже потрібен індекс хоча б десь окремо.

    Тут

    image.png.1423a46f777d0148c8d585f48db03a5a.png

    індекс є, в таблиці відділень він є, а в замовленні :(

    Що робити?

    Просто програміст пробує по АПІ підключити для менеджерів (ми через сайт не оформлюємо) але не може знайти, де той індекс... Він же десь має прописуватись до кожного замовлення

  12. Доброї ночі.

    Виникло таке питаннячко... може там все легко.

    В замовленні нема індекса окремо... В ос_order мав би індекс бути в shipping_postcode... там пусто. 
    Дуже потрібен індекс хоча б десь окремо.

    Тут

    image.png.1423a46f777d0148c8d585f48db03a5a.png

    індекс є, в таблиці відділень він є, а в замовленні :(

    Що робити?

  13. 02.02.2024 в 15:49, Octsupport сказал:

    @yurabr Добрий день!

    Просто увімкніть мініфікацію у налаштуванні шаблоні - у такому випадку клієнтські браузери не будуть кешувати цей файл, бо там вже буде об’єднання та додається filemtime($_SERVER[‘DOCUMENT_ROOT’] . ‘/min/cache/’ . $oct_name) до основного файлу стилів.

    Дякую

  14. Доброго дня.

    Ніяких тікетів я писати не буду. Підтримка закінчилась і купувати нову я не хочу.

    А тепер питаннячко.
    Як змінити/замінити/забрати з кешу у клієнтів оцю штуку dynamic_stylesheet_0.css... або перейменувати на dynamic_stylesheet_1.css

    Я міняю стилі, а воно все у людей не змінюється. Тільки конто ф5.

    Я вже додав новий файл стилів, перекинув туди все з адмінки, в адмінці стилі видалив... так тепер  в той файл якась інша фігня позаписувалась... 

    Це кошмар

  15. 08.01.2024 в 10:37, spectre сказал:

     

    1 это не относится к модулю 

    с адс умеет работать старший модуль 

    https://opencartforum.com/files/file/7492-sp-seo-remarketing-all-in-one-pro-elektronnaya-torgovlya-google-ga4-i-yandeks-dinamicheskiy-remarketing-google-facebook-conversions-api-vk-mytarget-fid-dlya-google-merchant-i-facebook-catalog-google-otzyvy-tiktok-retailrocket-esputnik/

     

     

    2 код модуля открыт, можете дорабатывать 

     

    Ох і любите ви ото писати так, що фіг зрозумієш :)

    1) Щоб зробити те, що мені потрібно, я маю придбати ваш інший модуль чи то не обов'язково?

    2) Якщо можна підправити цей модуль, можна звернутись за цим до вас (ви ж в цьому модуль краще всіх розбираєтесь) чи мені до когось іншого?

    Дякую

  16. Доброго дня.

    Тут просють отаку штуку
     

    Скрытый текст

    Фрагмент подій

    Установіть цей фрагмент на сторінках всіх товарів веб-сайту. Коли на сайт додається новий товар, код на ньому також повинен бути.

    Скопіюйте наведений нижче фрагмент і вставте його між тегами <head></head> після тегу Google на всіх сторінках товарів.

     

    <script>

      gtag('event', 'page_view', {

        'send_to': 'AW-ххххххххххх',

        'value': 'replace with value',

        'items': [{

          'id': 'replace with value',

          'google_business_vertical': 'retail'

        }]

      });

    </script>

     

    де

     'value': 'replace with value' - приймає значення відповідної ціни товару на сторінці

     'id': 'replace with value' - приймає значення ID товару, значення повинно співпадати з тим, яке вказане у фідах даних

     

    1) як то зробити?

    2) У мене ціна для вигрузки - p.price_m_opt

    Дякую.

  17. Доброго дня. 

    Підкажіть, будь ласка, що тут

    image.png.732744bdc2d9947f5e2310de681bd3eb.png

    писати, щоб додати не [main_category] - остання, а першу категорію.
    І, можливо, щось таке: Главная > Женская одежда > Платья > Длинные платья, тобто всі категорії товару.

    Бо мені якось тому чуду потрібно пояснити, що то дитяча іграшкова косметичка, а не профі набір.

    Дякую

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.