За последние 24 часа нас посетили 20674 программиста и 1107 роботов. Сейчас ищут 334 программиста ...

Не работает implode.

Тема в разделе "PHP для новичков", создана пользователем Macan, 7 окт 2019.

Метки:
  1. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Приветствую всех! Почему-то не работает implode.

    PHP:
    1. if(isset($_POST["action"])) {
    2.     $query = "SELECT * FROM shiny";
    3.  
    4.     if(isset($_POST['brend'])) {
    5.         $brend_filter = implode("','", $_POST['brend']);
    6.         $query .= "AND brend IN('".$brend_filter."')";
    7.     }
    Код (Javascript):
    1. function filter_data() {
    2.         let action = 'shiny.php';
    3.         let brend = get_filter('brend');
    4.         let width = get_filter('width');
    5.         let height = get_filter('height');
    6.         let diametr = get_filter('diametr');
    7.         let season = get_filter('season');
    8.         let ship = get_filter('ship');
    9.         $.ajax({
    10.             url: 'shiny.php',
    11.             method: 'POST',
    12.             data: { action: action, brend: brend, width: width, height: height, diametr: diametr, season: season, ship: ship },
    13.             success: function (data) {
    14.                 $('#carts').html(data);
    15.             }
    16.         });
    17.     }
    18.  
    19.     function get_filter(class_name) {
    20.         let filter = [];
    21.         $('.' + class_name + ':checked').each(function () {
    22.             filter.push($(this).val());
    23.         });
    24.         return filter;
    25.     }
    26.  
    27.     $('.sel').click(function () {
    28.         filter_data();
    29.     });
     
  2. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    Отлаживайся. var_dump($_POST['brend']) ; var_dump($query); die();
     
    Macan нравится это.
  3. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    array(1) { [0]=> string(11) "Continental" } NULL
     
  4. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    семен семеныч! NULL - не надо делать вардамп ДО присвоения значения. это не мудро как-то.
    ну или опечатка в имени. короче, мне нах не надо тебя за ручку водить. дальше давай сам.
     
  5. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Пардон, учусь только)
     
  6. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    не надо пардонов. ты реально учись, извлекай урок, а не садись на шею.
     
  7. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    array(1) { [0]=> string(11) "Continental" } string(46) "SELECT * FROM shinyAND brend IN('Continental')"
    --- Добавлено ---
    PHP:
    1. $statement = $db->prepare($query);
    2.         $statement->execute();
    3.         $result = $statement->fetchAll();
    4.         $total_row = $statement->rowCount();
    5.         $out = '';
    6.         if($total_row > 0){
    7.             foreach($result as $row) {
    8.                 $out .='
    9.                <div class="cart">
    10.                <img src="' . $row['image'] . '">
    11.                <p class="brend"><b>' . $row['brend'] . '</b></p>
    12.                <p class="name"><b>' . $row['name'] . '</b></p>
    13.                <p class="width"><b>Ширина:  ' . $row['width'] . '</b></p>
    14.                <p class="height"><b>Высота:  ' . $row['height'] . '</b></p>
    15.                <p class="diametr"><b>Диаметр:  ' . $row['diametr'] . '</b></p>
    16.                <p class="season"><b>Сезон:  ' . $row['season'] . '</b></p>
    17.                <p class="weight"><b>Вес:  ' . $row['weight'] . ' кг.</b></p>
    18.                </div>
    19.                ';
    20.             }
    21.         }
    22.         else {
    23.         $out = '<h3>No Data Found</h3>';
    24.         }
    25.         echo $out;
    Не выводит на страницу, пишет "No Data Found".
     
  8. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    ты убедился (надеюсь), что implode работает. :)
    теперь надо настроить твою систему чтобы она выводила ошибки. или не игнорируй те, что она уже выводит.

    я вижу, что у тебя два слова в запросе слиплись. наверняка MySQL по этому поводу ругается.
    ошибки твои друзья, прислушивайся к ним
     
  9. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Да, спасибо за наводку, строки разъединил, но на страницу нет вывода.
     
  10. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    продолжай отлаживаться. читай сообщения об ошибках и свои отладочные значения.
    себе читай, не нам.
     
  11. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Добавлено ---
    Поменял AND на WHERE и заработало.
     
  12. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    ахах!!! так может уже нет проблемы?

    сформулируй что ты сейчас хочешь от меня/ от форума
     
  13. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Почему с AND не работает?
     
  14. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    видимо потому что не должно :D

    мне вот только интересно, если ты догадался заменить AND на WHERE это у тебя инсайт случился или ты сидишь и хyячишь поток "проблем" сразу на несколько форумов, чтобы мировой разум решал твои заморочки. поделись секретом!
     
  15. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Все дошло, дописал
    Код (Text):
    1. if(isset($_POST["action"])) {
    2.     $query = "SELECT * FROM shiny WHERE brend !='' ";
    3.  
    4.     if(isset($_POST["brend"])) {
    5.         $brend_filter = implode("', '", $_POST["brend"]);
    6.         $query .= " AND brend IN ('".$brend_filter."')";
    7.     }
    --- Добавлено ---
    Я не давно начал PHP изучать, кое-что не получается сразу)
     
  16. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
    в данном случае это не PHP.
    найди учебник по SQL и подтяни уровень до ненулевого.
     
  17. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Спасибо, буду подтягивать.
     
  18. artoodetoo

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

    С нами с:
    11 июн 2010
    Сообщения:
    11.068
    Симпатии:
    1.231
    Адрес:
    там-сям
  19. Macan

    Macan Активный пользователь

    С нами с:
    11 июл 2019
    Сообщения:
    29
    Симпатии:
    0
    Начну изучать,после курса по Java Script.