За последние 24 часа нас посетили 55307 программистов и 1725 роботов. Сейчас ищут 1086 программистов ...

Передаю массив из JS в php, но результат не записывается в mysql

Тема в разделе "PHP для новичков", создана пользователем 7800TEH, 6 окт 2016.

Метки:
  1. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Добрый день! Мой первый сайт. Пытаюсь разобраться, что не так. Из JS передаю массив в PHP, после ряда преобразований, строка не записывается в БД. Подскажите, что не так?

    jQuery:
    -------------------------------------------------------
    Код (Javascript):
    1. var team1_activ = [];
    ............
    Код (Javascript):
    1. jQuery('#Label2').on('click', function() {                                
    2. var Team1Line1 = 'team1_activ='+JSON.stringify(team1_activ);
    3.                                                                jQuery.ajax({
    4.                                                                url: 'team1_l1.php',
    5.                                                                dataType: 'json',
    6.                                                                data: ({Team1Line1: Team1Line1}),
    7.                                                                success: function(){location.href = "line1.html"}
    8.                                                                             });
    9.                                                             });
    PHP (team1_l1.php):
    --------------------------------------------
    PHP:
    1. <?php
    2. $Team1Line1_arr = json_decode($_GET['Team1Line1']);
    3. $Team1Line1_db = implode('', $Team1Line1_arr);
    4. $connection->query("UPDATE line1 SET Team1_Line1 = $Team1Line1_db");
    5. unset($_GET['Team1Line1']);
    6. ?>
     
    #1 7800TEH, 6 окт 2016
    Последнее редактирование модератором: 6 окт 2016
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Ну так не записывается так в базу update. По одному надо. У вас некорректный запрос получается
     
  3. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Уточню. Мне массив нужно склеить и отправить одно слово в БД.
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Напишите руками, какой запрос хотите получить, и посмотрите, какой формируется программой
     
  5. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  6. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Разобрал по буквам... Пришел к выводу, что переменная переданная $_GET не заносится в mysql. Но почему? не понимаю.
    Сделал следующее:
    1. разбил массив 'team1_activ' на переменные и передаю их в php:
    Код (Javascript):
    1. jQuery('#Label2').on('click', function () {                      
    2.                                                            var Time1Line1_id1 = team1_activ[0];
    3.                                                            var Time1Line1_id2 = team1_activ[1];
    4.                                                            var Time1Line1_id3 = team1_activ[2];
    5.                                                                jQuery.ajax({
    6.                                                                url: 'team1_l1.php',
    7.                                                                data: ({Time1Line1_id1: Time1Line1_id1, Time1Line1_id2: Time1Line1_id2, Time1Line1_id3: Time1Line1_id3}),
    8.                                                                success: function(){location.href = "line1.html"},
    9.                                                                             });
    10.                                           });
    2. в php делаю тупую проверку, которая показывает, что $_GET не пустое:
    PHP:
    1. <?php
    2.  
    3. $connection = new mysqli($host,$user,$parol,$db);
    4. if (!$connection)
    5. {
    6.     exit(mysqli_error());
    7. }
    8.  
    9. if(!empty ($_GET['Time1Line1_id1']))
    10. {
    11. $connection->query("UPDATE line1 SET Team1_Line1 = 1 WHERE id = 1");
    12. $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 2");
    13. $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 3");
    14. }
    15. else {
    16. $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 1");
    17. $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 2");
    18. $connection->query("UPDATE line1 SET Team1_Line1 = 0 WHERE id = 3");
    19. }
    20.  
    21. ?>
    Могу лишь предположить, что причина в типе данных. Но передаю в переменных БУКВЫ. Возникает вопрос, как правильно подготовить переменную для передачи в mysql?
     
  7. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Запросы ВСЕГДА отлаживаются одинаково: печатается на экран запрос, открывается консоль mysql или phpmyadmin или любой аналог, вставляется запрос. GET тут непричём. Посмотрите, какой запрос у вас получается, и на что ругнётся mysql.
     
  8. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Я пробовал через консоль mysql. Запрос организован правильно. По очереди записывал значения, числа записываются, а вот БУКВЫ не хотят. Значение полей в БД TEXT. пробовал и CHAR и VARCHAR. На основании этого предположил, что что-то с типом данных....
     
  9. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Спасибо Всем за помощь и ответы. Разобрался!!!
    Интересная особенность...
    1. Первый раз в БД делал замену текстового значения следующим образом:
    Код (Text):
    1. JS:
    2. var val1 = "ABC";
    3. ... передача в php jQuery.ajax(...
    4.  
    5. PHP:
    6. $param1 = $_GET['val1'];
    7. $connection->query("UPDATE line1 SET Team1_Line1 = $param1");
    - и mysql не ругалась на то, что переменная в запросе указана без ' ', принимала текст ABC.

    А вот второй раз у меня не получилось передать ТЕКСТОВОЕ значение переменной, которое получилось из массива без ' ';
    получилось только так:
    PHP:
    1. $Team1Line1_db1 = $_GET['Time1Line1_id1'];
    2. $connection->query("UPDATE line1 SET Team1_Line1 = '$Team1Line1_db1' WHERE id = 1");
     
  10. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.598
    Симпатии:
    1.764
    Текст должен быть в кавычках, естественно. Числа - не обязательно
     
  11. 7800TEH

    7800TEH Новичок

    С нами с:
    6 окт 2016
    Сообщения:
    6
    Симпатии:
    0
    Это все понятно. Но почему тогда в первом случае сама переменная содержащая текст "ABC", указанная в запросе к БД без кавычек передала значение???
    --- Добавлено ---
    Т.е. когда я ЯВНО присваиваю значение переменной в виде текста "АБС" кавычки не требуются. А когда во втором получаю текстовое значение из массива, он просит кавычки?