Ответы пользователя по тегу PHP
  • Как показать последние просмотренные товары?

    @ipokos
    - если магаз на цмс, смотрите готовые модули, плагины.
    Если будете писать сами, то нужно определится с тем, как долго вы хотите это показывать.
    Если в пределах одной сессии пользователя. То достаточно писать все в куки и не засорять базу..
    Если нужно хранить это сколько-угодно долго, то тогда пишите в сессию, из нее в базу.
    Но учитывайте еще момент, сессии каких пользователей будете хранить..
    т.е. если только авторизированных - это +-.. Если и гостей тоже, то тогда нужно понимать что будут записываться просмотренные товары для пользователей которые может и не вернуться на сайт..
    Но можно сделать и очистку таблиц по крону и т.п.
    Ответ написан
  • Как отсортировать массив?

    @ipokos
    <?php
    $array = array(
        [
            'id' => '1',
            'user_id' => 1,
            'child' => [
                [
                    'id' => 1,
                    'item_id' => 1,
                    'project_id' => 3
                    ],
                 [
                    'id' => 2,
                    'item_id' => 2,
                    'project_id' => 0
                    ]
                ]
            ]
        );
        
        var_dump(array_filter($array[0]['child'], function($v, $k) {
        return $k == 'project_id' && $v != 0;
    }, ARRAY_FILTER_USE_BOTH));


    Результат:
    array(1) {
      [0]=>
      array(3) {
        ["id"]=>
        int(1)
        ["item_id"]=>
        int(1)
        ["project_id"]=>
        int(3)
      }
    }
    Ответ написан
    1 комментарий
  • Как правильно спроектировать сайт и вывод информации из бд?

    @ipokos
    Как ни странно, но это зависит от того как построена БД.
    Это называется мультистор. Готовую реализацию можно посмотреть в Magento 1,2 и если правильно помню, в Prestashop тоже есть.
    Делается по сути как обычный магазин.. так же как вы привязываете товары к категориям, пользователей к ролям, только дополнительно еще и к стору.
    Ответ написан
    Комментировать
  • Можно ли вызвать метод другого класса?

    @ipokos
    Работу с БД/Моделями можно выносить в singleton
    Ответ написан
    Комментировать
  • Как исправить ошибку?

    @ipokos
    Посмотрите на хостинге доступы к фтп и посмотрите этот файл.
    Из ошибки, у вас вызывается константа T_FUNCTION которая не определена.

    п.с.
    1) Хорошая практика развернуть проект локально (или на поддомене), на нем вносить правки, если все ок - заливать на живой, при этом лучше использовать git или т.п.
    2) Для кастомизации темы в ВП, лучше создавать дочернюю тему и в нее вносить изменения.
    т.к. например если решите обновить тему, то все правки будут затерты.
    Ответ написан
  • Notice: Undefined index: USER_LOGIN_IN in C:\xampp\htdocs\color-school.dev\index.php, может кто то подскажет?

    @ipokos
    Попробуйте так
    function Menu()
    {
        if (!isset($_SESSION['USER_LOGIN_IN'])) ...
    Ответ написан
    Комментировать
  • Почему не удаляются сессии?

    @ipokos
    что у вас хранится в $_POST['logout'] до вардампа (на моменте: if(isset($_POST['logout'])){)?
    Ответ написан
  • Объясните пару строк кода, что они делают?

    @ipokos
    // Если существует в пост запросе auth_name выполняется код в условии 
    if (isset($_POST['auth_name']))
    {
        $sql = "SELECT * FROM users WHERE name=?s"; // Запрос SQL
        $row = $db->getRow($sql, $_POST['auth_name']); // выборка запроса с БД
    // Если пароль пройдет проверку записывается значение в сессию
        if ($row && password_verify($_POST['auth_pass'], $row['pass'])) {
            $_SESSION['user_id'] = $row['id'];
        }
    // редирект на страницу
        header("Location: http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
    // выход из скрипта
        exit;
    }
    // если в гет запросе есть action и он равен logout 
    if (isset($_GET['action']) AND $_GET['action']=="logout") {
    // убивается сессия и происходит редирект
        session_start();
        session_destroy();
        header("Location: http://".$_SERVER['HTTP_HOST']."/");
        exit;
    }
    Ответ написан
    Комментировать
  • Как правильно подключить файл в дочерней теме?

    @ipokos
    Что хранится в константах EVA_FUNCTIONS и EVA_CHILD_THEME_PATH ?
    пути в родительской и дочерней темах одинаковые?
    Включите в wp_config.php debug , возможно ругается на то что нет файла.
    Проверьте что возвращает isset и file_exists
    Ответ написан
    Комментировать
  • Как сделать что бы файл брался из предыдущего каталога?

    @ipokos
    при импорте скрипта этого, функция берет файл который рядом с скриптом


    но как сделать, что бы она брала файл который лежит рядом со скриптом


    Как вариант, для файлов импорта, сделать отдельную папку (с правами на чтение/запись) и туда складывать загруженные файлы. А ко всем остальным файлам/папкам, скрипт (и файлы которые может загрузить пользователь) не должны иметь доступа.
    Ответ написан
    Комментировать
  • Как сделать, чтобы при клике сработал PHP код?

    @ipokos
    При клике на что? Сработал какой код?
    Правильно сформулированный вопрос - это 90% ответа.

    По сути, Вы можете создать форму с hiden полем и кнопкой отправить. У вас будет происходит загрузка action файла, на котором может выполнятся Ваш код. Для пользователя будет выглядеть "по клику" но с перезагрузкой страницы.

    Если нужно более адекватное решение, то как уже написали - ajax.
    Пример (при условии что используется jquery):
    $.ajax({
      url: 'your_file.php?action=1',
      success: function(data) {
        $('.results').html(data);
      }
    });

    В файле: your_file.php

    <?php
    $param = $_GET['action'];
    if($param == 1){
    // your code here
    }
    Ответ написан
    Комментировать
  • Как исправить функцию отправки почты?

    @ipokos
    Ну как Вам уже писали выше, что отправка происходит через файл, который лежит на стороннем сервисе, а у того (http://green.alpachini.ru) закончился хостинг.
    По сути, в условии if(is_array($file)) { ....
    У вас уже собирается содержимое письма.

    Если на скорую руку, можете попробовать, убрать участок кода работы с $curl
    И вызвать стандартный mail().
    Например:
    // код вашей функции 
    
    mail($email, $subject, $multipart); 
    /*
     $curl = curl_init();
        		curl_setopt($curl, CURLOPT_URL, 'http://green.alpachini.ru/send_mail.php');
                curl_setopt($curl, CURLOPT_RETURNTRANSFER,true);
          curl_setopt($curl, CURLOPT_POST, true);
          curl_setopt($curl, CURLOPT_POSTFIELDS, "to=$email&tema=".urlencode($subject)."&text=".urlencode($multipart)."&from=site@site.com&boundary=$boundary");
          
          $out = curl_exec($curl);
        curl_close($curl);
    */


    Если решите использовать стандартный отправщик, не лишним будет почитать по нему доку: php.net/manual/ru/function.mail.php
    Ответ написан
    Комментировать
  • Что не так с поиском по сайту?

    @ipokos
    Исходя из строки:
    $row = $db->select_list($sql);
    В $db у вас создается объект для работы с базой, который у вас в этом файле не подключен.

    Когда проект увеличивается (классов становится больше), достаточно проблематично, "ходить" и подключать их (да и в целом это не правильно).
    Для этого используются автолоадеры.
    Например:
    $class_name = 'db';
    spl_autoload_register(function ($class_name) {
        require( '../folder_name_classes/' . $class_name . '.php');
    });

    Подключаете файл с автолоадером и вызываете нужные классы.
    Ответ написан
    Комментировать
  • Checkbox как сохранять в куки?

    @ipokos
    Обрабатываете $_GET массив в файле site.php
    // получаете данные с формы
    $var1 = $_GET['varname1'];
    $var2 = $_GET['varname2'];
    
    $value = 'your data in cookie';
    // проверяете, если чек был установлен, то это true 
    if($var1){
        // ставим куку
        setcookie ("your_cookie_name", $value);
    }else if($var1 == false && $_COOKIE["your_cookie_name"]){
       // если чек не установлен и существует кука с именем your_cookie_name
       // то ее удаляем, ставя ей отрицательное время жизни
        setcookie ("your_cookie_name", "", time() - 3600);
    }


    Для того что бы ставить или нет чек на форму, на поле сделать проверку типа:
    <input type="checkbox" value="1" name="varname2" class="styled" <?php if($_COOKIE["your_cookie_name"]){ echo 'checked="checked"'; }?>>


    p.s. это пример на скорую руку. Почитайте детальнее про то как работать с куками, как удалять, проверять и хранить в них данные.
    + данные полученные через $_GET нужно строго типизировать (например, если ожидаете число, то очищаете результат от тегов, пробелов, проверяете на число, если полученные данные число, продолжаете, иначе возвращаете false)
    Ответ написан
    Комментировать
  • Как сделать CRUD приложение средствами php для управления несколькими таблицами?

    @ipokos
    Четкая формулировка вопроса - это уже половина решения.
    Из вопроса неясно, Вы используете какой то фреймворк, цмс или пишите это все сами.
    ООП или процедурно?

    Если оптимальный вариант, то для работы с бд используется какая то ORM )

    Если нужно самому, то для каждой таблицы создается отдельная модель - это нормально.
    Лучше избегать дублирования кода=)

    Ну или опишите более детально.
    Ответ написан
  • Как вытащить из поля базы данных конкретную информацию?

    @ipokos
    Возможно гуру MySQL смогут подсказать Вам решение с запросом...
    Но вот вариант решения с PHP:
    $text = '<a href="/files/download/11/e0ab03d8">Скачать</a>';
    preg_replace("'<[\/\!]*?[^<>]*?>'si", null, $text);
    echo $text; // вернет Скачать

    Регулярное выражение очищает строку от html тегов
    Ответ написан
    Комментировать
  • Отправятся ли письма если сайт не открывался(запустился)?

    @ipokos
    Это делается с помощью крон. На хостинге, в панели управления практически всегда есть расписание крон задач. Если даже нет, Вы сами можете их писать, если не заблокированно сервером. Только нужно учитывать, что часто есть ограничение на кол-во отправляемых писем в день
    Ответ написан
    Комментировать
  • Как сделать форму для добавления записей в json?

    @ipokos
    Существует JSON вида :{"Question 1":"Answer 1","Question 2":"Answer 2"}

    Например:
    $your_str = '{"Question 1":"Answer 1","Question 2":"Answer 2"}'
    $your_array = json_decode($your_str);

    получаете массив.
    Работаете с массивом, добавляете что нужно,
    после этого:
    $your_array = json_encode($result_array);
    Преобразовываете обратно
    Ответ написан
    Комментировать
  • Где ошибка в функции?

    @ipokos
    В самой функции у Вас синтаксических ошибок на первый взгляд нет.
    Могу предположить что передаете не правильные аргументы или в неправильном виде.
    Что получаете в $rate_nb и $rate_sum и какой в них тип данных?
    Предполагаю что функция get_post_meta из Wordpress, она может возвращать как строку, так и массив, так и false
    Ответ написан
  • Почему Edit Action в Cutom модуле не подгружает данные из бд?

    @ipokos
    Где вы ожидаете результат?
    Добавляется в базу, выводится на гриде, при редактировании записи не подгружаются уже установленные значения?

    Проверьте содержимое модели в классе Offline_Store_Block_Adminhtml_Store_Edit_Form на 18й строке $model = Mage::registry('store_block');
    Если в ней нет данных, смотрите в контроллере метод edit, на что перезаписывается data на 8й строке:
    Mage::registry('store_block')->setData($blockObject);
    Что содержится в $blockObject
    Ответ написан
    Комментировать