воскресенье, 25 января 2015 г.

ERROR 1148 (42000): The used command is not allowed with this MySQL version.


Решение:
  • открываем my.ini и в секции [mysqld] параметр local-infile = 1
  • если через mysql-клиент надо подключаться с опцией --local-infile=1 (mysql --local-infile -uroot -pyourpwd yourdbname)
  • при использовании mysql c api спасло mysql_options с параметром MYSQL_OPT_LOCAL_INFILE
LOCAL works only if your server and your client both have been configured to permit it. For example, if mysqld was started with --local-infile=0, LOCAL does not work. See Section 6.1.6, “Security Issues with LOAD DATA LOCAL”.

понедельник, 12 января 2015 г.

Yii - button add to favorites

  1. Проверить авторизованный пользователь или нет?
  2. Перед выводом кнопки проверить добавлено выводимое объявление в базе(избранном) или нет в соответствии с результатом вывести кнопку с нужными стилями.
  3. По нажатию на кнопку, объявление будет добавлено в избранное - если его там нет, иначе (если есть) будет удалено из избранного.
  4. Так же о наличии в базе объявления или нет должны сигнализировать стили кнопки.
<?php if(!Yii::app()->user->isGuest) { if($fav) { echo TbHtml::ajaxButton(TbHtml::icon(TbHtml::ICON_STAR), $this->createUrl('ad/AjaxAddFav'), array('type'=>'POST', 'data'=> "js:{'id_ad': $model->id, 'id_user': 1 }", 'success'=>'js:function(string){if(string){$("#fav").toggleClass("btn-warning"); $("#fav > i").toggleClass("icon-star-empty icon-star");}}'), ['id' => 'fav', 'rel' => 'tooltip', 'data-trigger' => 'hover', 'data-title' => 'Добавить в избранное', 'class' => 'btn-warning', ]); } else { echo TbHtml::ajaxButton(TbHtml::icon(TbHtml::ICON_STAR_EMPTY), $this->createUrl('ad/AjaxAddFav'), array('type'=>'POST', 'data'=> "js:{'id_ad': $model->id, 'id_user': 1 }", 'success'=>'js:function(string){if(string){$("#fav").toggleClass("btn-warning"); $("#fav > i").toggleClass("icon-star-empty icon-star");}}'), ['id' => 'fav', 'rel' => 'tooltip', 'data-trigger' => 'hover', 'data-title' => 'Добавить в избранное', ]); } } ?>
В контроллере
public function actionAjaxAddFav()
        {
            // accept only AJAX request (comment this when debugging)
            if (!Yii::app()->request->isAjaxRequest) {
                exit();
            }
            if (isset($_POST['id_ad']) && isset($_POST['id_user']))
            {
                $idAd = (int) $_POST['id_ad'];
                $idUser = (int) $_POST['id_user'];
                if(!NotepadController::recordExists($idAd, $idUser))
                {
                    //CActiveRecord::model('Notepad')->insert();
                    $model = new Notepad;
                    $model->id_ad = $idAd;
                    $model->id_user = $idUser;
                    echo $model->save();
                    
                }
                else
                {
                   echo NotepadController::delRecord($idAd, $idUser);
                }
            }
        }
 /**
  * Проверяет есть ли такое объявление в избранном?
  * @param integer $idAd the ID of the Ad-объявления, $idUser - ID текущего пользователя
  */
        public function recordExists($idAd, $idUser) {
            return Notepad::model()->exists('id_ad = :id_ad and id_user = :id_user', [':id_ad' => $idAd,':id_user' => $idUser]);
        }
        public function delRecord($idAd, $idUser) {
            return Notepad::model()->deleteAll('id_ad = :id_ad and id_user = :id_user', [':id_ad' => $idAd,':id_user' => $idUser]);
        }