Ответы пользователя по тегу MySQL
  • Почему не отправляется форма в базу данных?

    slo_nik
    @slo_nik Куратор тега PHP
    Я спрашиваю как изменить

    Владимир Майструк, Вам указали на ошибки.
    Ваши действия:
    1) Доработать js код, чтобы от отправлял данные. Читайте, смотрите в инете примеры. В обработчике формы для этого шага выводите просто дамп массива $_POST. Как только это заработаете - переходите к исправлению обработчика формы.
    2) Читать, смотреть в официальной документации php, в инете примеры как обработать данные формы на сервере. Добиваетесь, чтобы на сервере инициализировались данные из формы.
    3) Читать смотреть в официальной документации php, смотреть примеры в инете как работать с mysql. Добиться того, чтобы данные записывались в базу.
    Помимо этого читайте, смотрите в инете как обрабатываются ошибки при работе js, php и mysql.
    Всё. Элементарный скрипт отправки формы Вы сможете написать уже к вечеру.

    p.s. Если всё-таки не будет получаться написать самостоятельно, то в этом случае показываете свой код, пишите ошибки, которые возникают и описываете действия которые Вы делали для устранения ошибок. Тогда у всех админов, модераторов, кураторов и обычных пользователей текут слёзы умиления и все, перебивая друг друга, кинуться Вам помогать)))
    Ответ написан
    Комментировать
  • Как поправить вывод русских символов из базы данных mysql?

    slo_nik
    @slo_nik Куратор тега PHP
    У Вас не очень корректный json, или два раза вставили одно и то же в комментарий.
    $json = '[{"id":"398",.....}]';
    var_dump(json_decode($json, true));

    Результат
    array (size=2)
      0 => 
        array (size=6)
          'id' =>  '398' (length=3)
          'name' => 'цупывапывап' (length=22)
          'description' => 'Дочь свергнутого короля Семи Королевств из династии Таргариенов Эйриса Безумного. ' (length=153)
          'reason_murder' => 'Неприязнь' (length=18)
          'killer' => 'Враждебный воин' (length=29)
          'weapon' => 'Меч' (length=6)
      1 => 
        array (size=6)
          'id' => '398' (length=3)
          'name' => 'цупывапывап' (length=22)
          'description' => 'Дочь свергнутого короля Семи Королевств из династии Таргариенов Эйриса Безумного. ' (length=153)
          'reason_murder' => 'Неприязнь' (length=18)
          'killer' => 'Враждебный воин' (length=29)
          'weapon' => 'Меч' (length=6)
    Ответ написан
    9 комментариев
  • Почему происходит ошибка при миграции базы данных?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброе утро.
    Какой шаблон используете, advanced или base?
    Есть ли ещё какие-то конфиги?
    Во время миграции можете явно указать, в какую базу делать миграции.
    В конфигурационном файле
    'db' => [
       'class' => 'yii\db\Connection',
       'dsn' => 'mysql:host=localhost;dbname=fedorov_shop',
       'username' => 'fedorov_shop',
       'password' => '***',
       'charset' => 'utf8',
       'enableSchemaCache' => true,
       'schemaCacheDuration' => 3600,
    ]

    В командной строке.
    php yii migrate --db=db
    Так же можно в самой миграции указать, с какой базой работать.
    public function init()
        {
            $this->db = 'db2';
            parent::init();
        }
    Ответ написан
    Комментировать
  • Количество записей подряд?

    slo_nik
    @slo_nik
    Доброе утро.
    Можно получить таким образом разницу между датами.
    Получаем разницу между датой регистрации пользователя и датой, когда он последний раз редактировал свой профиль.
    SELECT `username`, DATEDIFF(FROM_UNIXTIME(`updated_at`), FROM_UNIXTIME(`created_at`)) AS `date_diff` FROM `user`


    В результате получим следующее:
    Array
    (
        [0] => Array
            (
                [username] => admin
                [date_diff] => 261
            )
    
        [1] => Array
            (
                [username] => Denis
                [date_diff] => 73
            )
    
        [2] => Array
            (
                [username] => Vitaliy
                [date_diff] => 80
            )
    
        [3] => Array
            (
                [username] => Elena
                [date_diff] => 78
            )
    
        [4] => Array
            (
                [username] => Boris
                [date_diff] => 0
            )
    
        [5] => Array
            (
                [username] => Daniel
                [date_diff] => 0
            )
    
        [6] => Array
            (
                [username] => Vladimir
                [date_diff] => 42
            )
    
        [7] => Array
            (
                [username] => Vasya
                [date_diff] => 0
            )
    
        [8] => Array
            (
                [username] => Anton
                [date_diff] => 0
            )
    
        [9] => Array
            (
                [username] => Nicolay
                [date_diff] => 5
            )
    )


    Или получим разницу между текущей датой и датой регистрации пользователя
    SELECT `username`, DATEDIFF(CURDATE(), FROM_UNIXTIME(`created_at`)) AS `date_diff` FROM `user`


    В результате получим следующее:
    Array
    (
        [0] => Array
            (
                [username] => admin
                [date_diff] => 794
            )
    
        [1] => Array
            (
                [username] => Denis
                [date_diff] => 616
            )
    
        [2] => Array
            (
                [username] => Vitaliy
                [date_diff] => 515
            )
    
        [3] => Array
            (
                [username] => Elena
                [date_diff] => 315
            )
    
        [4] => Array
            (
                [username] => Boris
                [date_diff] => 215
            )
    
        [5] => Array
            (
                [username] => Daniel
                [date_diff] => 200
            )
    
        [6] => Array
            (
                [username] => Vladimir
                [date_diff] => 175
            )
    
        [7] => Array
            (
                [username] => Vasya
                [date_diff] => 150
            )
    
        [8] => Array
            (
                [username] => Anton
                [date_diff] => 149
            )
    
        [9] => Array
            (
                [username] => Nicolay
                [date_diff] => 149
            )
    
    )

    Ответ написан
    Комментировать
  • Как правильно составить Ajax запрос?

    slo_nik
    @slo_nik Куратор тега Yii
    В общем ситуация такая...
    Как в самом виджете прикрутить ajax запрос я не знаю.
    Но можно сделать так:
    в GridView добавляем 'contentOptions', задаём параметры ajax запроса и отправляем на сервер.
    [
        'label' => 'Дата начала подписки',
        'value' => function ($model, $key, $value) {
            return  \kartik\date\DatePicker::widget([
                'name' => 'date_subscription',
                'model' => $model,
                'value' => date('d-m-Y',$model->created_at),
                'type' => DatePicker::TYPE_INPUT,
                'pluginOptions' => [
                    'format' => 'yyyy-mm-dd',
                    'autoclose' => true,
                ],
            ]);
        },
        'contentOptions' => [
            'onchange' => '
                var Id = $(this).parent().attr("data-key");
                var uDate = $(this).children("input").val();
                console.log(Id + " - " + uDate);
                $.ajax({
                   url: "'. Url::to('user/default/ajax-request') .'",
                   type: "POST",
                   data:{id: Id, date: uDate},
                   success: function(data){
                      console.log(data)
                   }
                })
            '
        ],
        'format' => 'raw',
    ],

    В контролере создаём действие, которое будет обновлять данные для определённого пользователя.
    public function actionAjaxRequest()
    {
        if(Yii::$app->request->isAjax){
            $newDate = Yii::$app->request->post('date');
            $uId = Yii::$app->request->post('id');
            if(($model = Users::findOne(['id' => $uId])) != null){
                $model->created_at = strtotime($newDate);
                if(!$model->update(false,['created_at'])){
                    return 'Данные не обновились.';
                }
                else{
                    return 'Данные успешно обновились.';
                }
            }
            else{
                return 'Пользователь не найден.';
            }
        }
        return false;
    }

    Это упрощённый, но рабочий вариант. Вам необходимо поменять все переменные, пути, модели на свои, чтобы потом не говорили, что что-то там у Вас не работает. Всё работает, прежде чем писать ответ я проверил.
    Ответ написан
  • Как правильно обработать выбор и вывод даты?

    slo_nik
    @slo_nik Куратор тега PHP
    В строку $date = date('Y-m-d', ['delivery_date']; Вы должны подставлять не строку, как Вы сейчас делаете, а временную метку.
    Так как Вы делаете у Вас ничего не получится.
    А вот так должно получится:
    $date = date('Y-m-d', strtotime('delivery_date'));
    Это если дата в $delivery_date у Вас приблизительно в виде "4-03-2019" или похожем.
    Ответ написан
  • Как дополнить SQL запрос?

    slo_nik
    @slo_nik
    Доброе утро.
    SELECT *** FROM *** WHERE *** AND `user_id` IS NOT NULL
    Ответ написан
    Комментировать
  • Что за ошибка при установке MySql и как это исправить?

    slo_nik
    @slo_nik
    Добрый день.
    В консоли выполняете команду sudo apt-get install -f
    Во время выполнения команды будут подтянуты зависимости и заново установлены требуемые пакеты.
    Ответ написан
    5 комментариев
  • Как создать внешний ключ?

    slo_nik
    @slo_nik
    Добрый день.
    Переименуйте "id" для связи с изображением в таблице комментариев в "image_id".
    Так же добавьте для комментария "id PRIMARY KEY AUTO_INCREMENT"
    ALTER TABLE `comments`
      ADD CONSTRAINT `fk_comments_images` FOREIGN KEY (`image_id`) REFERENCES `comments` (`id`) ON DELETE CASCADE;

    Если уже существуют записи в таблицах комментариев и изображений, то, возможно, потребуется отключить, затем снова включить проверку внешнего ключа.
    SET FOREIGN_KEY_CHECKS=0;
    ALTER TABLE `comments`
      ADD CONSTRAINT `fk_comments_images` FOREIGN KEY (`image_id`) REFERENCES `comments` (`id`) ON DELETE CASCADE;
    SET FOREIGN_KEY_CHECKS=1;
    Ответ написан
  • Как записать в БД NULL?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый вечер.
    Можно попытаться решить при помощи валидации
    ['id_no', 'default', 'value' => null]
    Ответ написан
    7 комментариев
  • Как вывести по определенному id в php?

    slo_nik
    @slo_nik Куратор тега PHP
    Доброй ночи.
    "SELECT * FROM `text` WHERE `id` = тут_нужный_id"
    Ответ написан
  • Как обновить данные авторизованного пользователя по Логину/ID с сессии?

    slo_nik
    @slo_nik Куратор тега PHP
    id можно получить из сессии, cookies, или если пользователь перешёл в личный кабинет по ссылке, то из $_GET параметров. В любом случае надо увидеть полностью код.
    В форме можно сделать скрытое поле, где подставляется этот самый id и в sql запрос добавить условие через where
    $query = "UPDATE $table SET psevdonim='".$_POST["test_psevdonim"]."', familiya='".$_POST["test_familiya"]."' WHERE  `id` = " . $_POST['id'] . "";

    Ну и конечно же так подставлять данные в запрос нельзя!
    Используйте подготавливаемые запросы.
    Ответ написан
  • Реализация полнотекстовый поиска?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Раз.
    Два.
    Ответ написан
    Комментировать
  • Как экранировать запрос select mysql?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Как вариант.
    "SELECT * FROM my_links WHERE keyword = '".$key."' AND search = 'google' AND urlmd5 = '".$link2."'";
    Ответ написан
  • Как подключить ajax для отправки php формы?

    slo_nik
    @slo_nik Куратор тега PHP
    Самый простой вариант - использовать jQuery.
    Как-то так:
    $.ajax({
      url: 'path/to/php/script',
      method: 'POST',
      data: $('form').serialize()
      success: function(response){
        // тут обрабатываете ответ сервера
     }
    })
    Ответ написан
    Комментировать
  • Защита админ-панели на сайте php?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    В БД в таблице users есть столбец status хочу что бы доступ к разделу админов имели только юзеры с статусом 3,4,5 но не совсем понимаю как это реализовать.

    Если не понимаете, то не надо изобретать велосипед.
    Возьмите какой-либо framework, там всё это реализовано. Изучите как это работает, а уж после этого приступайте к реализации собственного решения.
    Начните с framework-ов YII2 или Laravel. Так же параллельно можете изучать этот материал.
    Ответ написан
    Комментировать
  • Вывод данных из БД. Что не так?

    slo_nik
    @slo_nik Куратор тега PHP
    Добрый день.
    Опишите, что именно хранится в таблицах и их структуру.
    Возможно Вам понадобиться оператор join.
    Ответ написан
    Комментировать
  • Какие требование к версии MySQL у yii2?

    slo_nik
    @slo_nik Куратор тега Yii
    Добрый день.
    Есть такой файл - requirements.php.
    Вот через него и узнаете рекомендуемую конфигурацию.
    Ответ написан
    Комментировать
  • Как на yii написать аналогичный запрос sql?

    slo_nik
    @slo_nik Куратор тега Yii
    Доброй ночи.
    Есть SqlDataProvider.
    Вот статья по использованию join в ActiveRecord
    Ответ написан
    2 комментария