• Почему не записывает данные в бд yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Во-первых, сделайте проверку
    if($transfer->save()){
      // какое-то действие
    }
    else{
      // показать все ошибки
    }

    Показать все ошибки можно при помощи getErrors()
    Во-вторых, замените это убожество
    $transfer->created_at = time();
    на публичный метод в модели
    use yii\behaviors\TimestampBehavior;
    
        public function behaviors()
        {
            return [
              TimestampBehavior::className()
            ];
        }


    p.s. Точно!!! Как подсказали в комментарии к моему ответу уберите created_at из валидации и сделайте так, как я написал выше.
    Ответ написан
  • Как дотянуться в массиве до ключа, после форич(выдает ошибку)?

    @AUser0
    Чем больше знаю, тем лучше понимаю, как мало знаю.
    Дотягивайтесь до $match['events'][0]['id'], и всё будет работать.
    Ответ написан
    7 комментариев
  • Можно ли как то перебрать такой массив в одном цикле и сохранить в БД в Yii2?

    deepblack
    @deepblack
    Сферический код в вакууме:
    spoiler
    $data =   array (
            [1] => array(
                'title' => "xxxxx",
                'content' => "xxxxx",
                'category' => "xxxxx",
            ), 
            [2] => array(
                'title' => "xxxxx",
                'content' => "xxxxx",
                'category' => "xxxxx",
            ), 
            [3] => array(
                'title' => "xxxxx",
                'content' => "xxxxx",
                'category' => "xxxxx",
            ), 
         );
    
    if(is_array($data)){
        foreach($data as $row){
            $sql = "INSERT INTO `table`( `title`, `content`, `category`) values";
    
            $title = mysql_real_escape_string( $row['title'] );
            $content = mysql_real_escape_string( $row['content'] );
            $category = mysql_real_escape_string( $row['category'] );
    
            $sql .= "('" . $title . "','" . $content, "','" $category "')";
            mysql_query($sql) or exit(mysql_error()); 
        }
    }


    Используйте MySQLi вместо MySQL
    А вообще ответ легко гуглится:
    https://stackoverflow.com/questions/39818418/using...
    https://stackoverflow.com/questions/15013211/how-t...

    UPD:

    От того что структура вложенная ничего особо не меняется:
    spoiler
    if(is_array($data)){
        foreach($data as $row){
            $tournamentName = $row['tournament']['name'];
            $tournamentSlug = $row['tournament'][];
            $tournamentId = $row['tournament'][];
            $tournamentUniqueId = $row['tournament'][];
            $tournamentUniqueName = $row['tournament'][];
    
            $categoryName = $row['category']['name'];
            $categorySlug = $row['category']['slug'];
            $categoryPriority = $row['category']['priority'];
            $categoryId = $row['category']['id'];
            $categoryFlag = $row['category']['flag'];
        }
    }

    Но тут есть нюанс, дальнейшая работа с БД зависит от того как вы собираетесь хранить эти данные.
    Т.е. непонятно как описаны модели данных в которых вы хотите хранить эту информацию.
    Ответ написан
    23 комментария
  • Как добавить в БД добавить данные циклом. Yii2?

    webinar
    @webinar Куратор тега Yii
    Учим yii: https://youtu.be/-WRMlGHLgRg
    product: id | title | cost и т.д.
    size: id | size_name | some_size_param
    product_size: id | product_id | size_id
    Третья таблица связующая. В моделе Product связь с Size через таблицу product_size

    Тогда для каждого товара можно назначить, любой набор размеров и нет дублирования данных.

    Ну или как вариант просто хранить json с размерами прямо в таблице продукта
    Ответ написан
    5 комментариев
  • Как парсить параметры query string?

    Sanasol
    @Sanasol Куратор тега PHP
    нельзя просто так взять и загуглить ошибку
    эта часть прогружается только в тут и она у каждой лиги уникальна.

    вам не нужен никакой парсер query string, та часть что вы указали это просто timestamp указанный в запросе. Он функционально ничего не делает.
    Это исключение возможного кеширования запроса к сайту и/или для дебага некоего.

    Так что можно вообще не отправлять этот параметр, либо отправлять случайную строку.
    Ответ написан
    1 комментарий
  • Как красиво вывести JSON?

    @Shkolnik97
    Учусь в гиназии прогамирую .
    <pre>
    <?php print_r(json_decode(json_encode($table), true)); ?>
    </pre>
    Ответ написан
    1 комментарий
  • Как правильно распарсить sofascore.com?

    dimonchik2013
    @dimonchik2013
    non progredi est regredi
    там же вебсокет, скорее всего

    если JSON- это проще
    Ответ написан
    9 комментариев
  • Как создать токен на GitHub, какие пункты нужно отметить?

    pOmelchenko
    @pOmelchenko
    php-developer
    Ответ написан
    Комментировать
  • Как хешировать данные с помощью SHA256 на PHP?

    DevMan
    @DevMan
    php.net/manual/ru/function.hash.php
    > echo hash('sha256', 'bla-bla-bla');
    > e29256c37ac614866b41c51eb8bf013d2f0b208988a21016e0abf6e81fc99c58
    Ответ написан
    1 комментарий
  • Как загрузить несколько файлов на сервер?

    webinar
    @webinar Куратор тега PHP
    Учим yii: https://youtu.be/-WRMlGHLgRg
    count($_FILES) у Вас всегда 1, а следовательно for ($i=0; $i<=count($_FILES); $i++) { должно срабатывать дважды. Так что все верно работает.
    Если у ж так городить то
    for ($i=0; $i<=count($_FILES); $i++)
    меняйте на
    for ($i=0; $i<count($_FILES['new-mini']['name']); $i++)
    Ответ написан
    Комментировать
  • Как защитить пароль при передаче формы на сервер?

    FanatPHP
    @FanatPHP
    Чебуратор тега РНР
    Три ответа и куча лайков.
    Что характерно, если тех же самых людей спросить, надо ли хэшировать пароли на сервере - все дружно, строем и хором ответят - НУЖНО!

    При этом мысль, как совместить обе технологии, не приходит в голову ни одному из них. А они не совмещаются. Если "сервак со своей стороны так же солит пароль и считает хэш" то это значит... что пароли хранятся в открытом виде!

    Это квинтессенция подобныйх сайтов. Ответ почему-то всегда даётся самый буквальный. При этом вопрос никогда не подвергается сомнению или хотя бы минимальной проверке на осмысленность. Такое ощущение, что отвечающие воспринимают вопрос как экзамен что ли? Или как челендж - ответить любой ценой, пусть даже и неимоверных извращений и ГАРАНТИРОВАННЫХ граблей в будущем. Или - как сейчас - ценой СНИЖЕНИЯ защищенности! Но зато ответ буквальный. И так не только здесь - так практически в любом ответе. Ну никогда ни у кого не твремени задуматься над вопросом - все торопятся отвечать.

    Я не знаю, что с этим делать. Такой подход очень вредит как самому сайту, так и тем, кто задает вопросы. Вместо того, чтобы показать правильный подход, ему старательно, сопя и напрягая остатки извилин, помогают выстрелить себе в ногу.

    Возможно, одна из причин в том, что в голове у отвечателей отсутствуют реальные знания, а стоит органчик, в который записано несколько прочитанных когда-то ответов. И один из этих ответов выстреливается сразу после прочтения заголовка - даже не углубляясь в текст вопроса. Таких "отвечателей" надо гнать поганой метлой. Пусть самоутверждаются в другом месте. Тем же, кто хочет ответить, рекомендую придерживаться правила:

    Перед тем как отвечать, НАДО СНАЧАЛА ПОДУМАТЬ. Посчитать на ход вперед - "а что будет, если сделать, как я советую?" Посчитать на ход назад - "а зачем ему нужно это? Не похож ли этот вопрос на мой собственный, который я когда-то задавал от недостатка знаний?" И попробовать ответить так, чтобы РЕАЛЬНО помочь спрашивающему, а не просто выдать зазубренный ответ.

    Возвращаясь к вопросу: нет, нельзя без SSL. Хэширование на сервере важнее.
    Можно эмулировать SSL для передачи пароля, но куда проще воспользоваться готовым механизмом. На дворе 2014 год, все основные сайты перешли на шифрование всего трафика вообще. Пора переставать бояться SSL.
    Ответ написан
    11 комментариев
  • Поможет ли моем случает multi_curl улучить быстродействие и какие есть пути оптимизации парсинга?

    gromdron
    @gromdron
    Работаю с Bitrix24
    А вы не пробовали это делать не по запросу пользователя (заходу на страницу) а фоновый скрипт, который сам бы проверял актуальность и уже запрашивал данные с стороннего сервера?

    Я вижу следующее узкое место:
    Предположим на сайт зайдет одновременно 100 пользователей и все направят свои запросы к одной/разным страницам, данные по которым уже истекли. Вы отправите 100 запросов на внешний сервер, а потом 100 раз обновите данные в кеше? А если сервис увеличит таймаут? Ну, например до 0.5 секунд на запрос и вы забьете полностью ваш интеренет канал?

    Предлагаемый вариант:
    Вы получаете страницу и сохраняете ее в кеше, допустим на 1 сутки и пишет данные по expired на 30минут/1час. Фоновый скрипт, проверяет актуальность данных страниц 1 раз в 30 минут/1 час и если страница обновилась(!) - обновляет данные, обновляя кеш и увеличивая expired. В этом скрипте Вы можете применить и мульти-curl и потоки/процессы и все что хотите для ускорения (хоть на go пишите). Если так получилось, что скрипт по какой-то причине не добрался до страницы на 1 сутки, то скрипт отправляет соответствующее уведомление администратору и вручную тянет страницу как в предыдущем случае (и все так же сохраняет в кеше).

    В таком случае, сколько бы пользователей не зашло на страницу, они всегда будут видеть актуальные данные, а в корявом случае - вы всегда получите fallback к текущей версии и тут уже нужно будет разбираться в чем причина (в идеале случай с отвалившимся фоновым скриптом не должен вообще наступить, но если он произойдет - есть falback)
    Ответ написан
    Комментировать
  • Как сделать выезжающее меню на сайте?

    eucalipt
    @eucalipt
    Самоделкин.
    Для блока слева создай отдельный элемент на странице. Например, div с id "menu". В него помещай все, что тебе нужно. Умеешь подключать JQuery? На всякий случай, объясню.

    <script src="http://code.jquery.com/jquery-1.11.1.min.js"></script> <!-- JQUERY -->


    Вот эту строчку впихни в head своей страницы. Теперь у нас подключен JQuery.
    Что мы делаем дальше? Дальше нам надо отловить клик по нашему "бутерброду" и после клика, собственно, и выдвинуть менюху. Как это делается:

    $(document).ready(function() {
      $("#menu").click(function() {
        $(this).addClass("show");
      });
    });


    Этот код просто выдели в отдельный .js файл (ну и подключи его как простой .js скрипт, разумеется. Только он должен быть подключен после того, как подключишь JQuery).

    Короче, что мы сделали: мы отловили клик по этому элементу и повесили на него функцию, которая к нашему div'у добавит класс "show". Дальше уже чистый css.

    #menu {
    /* тут твои стили */
    left: -350px;
    }
    
    #menu.show {
    /* тут твои стили */
    left: 0px;
    }


    Я думаю, суть ясна. Когда у менюхи появляется класс "show", то тогда мы просто "выдвигаем" ее из-за левого края страницы. По желанию можно сделать это плавным:

    #menu {
    /* тут твои стили */
    transition: left ease 0.2s;
    left: -350px;
    }
    
    #menu.show {
    /* тут твои стили */
    left: 0px;
    }


    Кстати, этот код написан под менюху, шириной в 350px.

    Теперь ее надо закрыть. Тут 2 способа. Хотя нет, 3.
    Можно отловить в нашем скрипте уход мышки с элемента и просто убрать класс "show" (mouseleave, removeClass()). А можно отловить клик по НЕэлементу див. Это тоже в JQ.
    А можно еще расставить флаги, и контролировать, когда меню открыта, при нажатии на бутерброд, делать одно, и когда закрыта - другое.
    Ответ написан
    4 комментария
  • Как в css убрать display:none?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    где убрать? В коде html файла? Кнопочкой "delete".
    Вы хотите переопределить через css inline стиль? Для этого есть display: block !important
    Но это плохая практика, проще же из html убрать.
    Ответ написан
    5 комментариев
  • Как в css убрать display:none?

    @Camaro67
    Помог? - "Отметить решением"
    Это какой-то JS вешает display none. Ищите в скриптах.
    Ответ написан
    5 комментариев
  • Как в css убрать display:none?

    iiiBird
    @iiiBird Куратор тега CSS
    Пока ты спишь - твой конкурент совершенствуется
    значит скрывается из js. либо какой-нить hide() пишешь, либо еще что-то.
    Ответ написан
    6 комментариев
  • Как обновить composer через консоль OpenServer?

    webinar
    @webinar
    Учим yii: https://youtu.be/-WRMlGHLgRg
    переходите с посощью cd в папку domains/ваш сайт и запускаете
    composer self-update
    Ответ написан
    4 комментария