Ответы пользователя по тегу PHP
  • Как вывести дочерние категории через событие ajax?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Тебе нужно повесить событие изменения (change) на select, затем отправить AJAX к серверному скрипту который вернёт JSON список дочерних категорий для только что выбранной категории.

    Пример для JQuery:
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8">
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <title></title>
      </head>
      <body>
    
        <!-- Select родительских категорий -->
        <select name="categoryfilter">
          <option disabled="disabled" selected value="">Выберите категорию</option>
          <option value="1">Категория 1</option>
          <option value="2">Категория 2</option>
        </select>
    
        <!-- Select дочерних категорий -->
        <select name="subcategories"></select>
    
        <!-- Подключение JQuery для примера -->
        <script
            src="https://code.jquery.com/jquery-3.6.0.min.js"
            integrity="sha256-/xUj+3OJU5yExlq6GSYGSHk7tPXikynS7ogEvDej/m4="
            crossorigin="anonymous"></script>
    
        <!-- Логика клиентской части -->
        <script type="text/javascript">
          // Вешаем событие изменения на селект категорий
          $('select[name="categoryfilter"]').on('change', function(){
            let val = $(this).val(); // value только что выбранной категории
            $('select[name="categoryfilter"]').html(''); // Очищаем фильтр дочерних категорий
    
            //Запрашиваем данные
            $.ajax({
              url: '/path/to/file', // Путь к файлу PHP от корня сайта
              type: 'POST', // Отправляем данные методом POST
              dataType: 'json', // Ждём что сервер вернёт JSON
              data: {
                category: val, // Отправляем переменную 'category' со значением 'val'
              },
            })
            .done(function(data) {
              // Когда сервер вернул JSON
              // Перебираем данные циклом
              $.each(data, function(index, item) {
                // Добавляем внутрь select'а дочерних категорий новые опции
                $('select[name="subcategories"]').append('\
                  <option value="' + item.id + '">' + item.name + '</option>\
                ');
              });
            })
            .fail(function() {
              // Любая ошибка
              console.log("error");
            })
            .always(function() {
              // Когда запрос завершился успешно или с ошибкой
              console.log("complete");
            });
          });
        </script>
      </body>
    </html>


    Неполная серверная часть на PHP:
    <?php
    
    	//Тут должна быть логика загрузки нужных дочерних
    	//категорий согласно пришедшему значению 'category' ($_POST['category'])
    
    	$subCategories = [
    		[
    			'id' => 1,
    			'name' => 'Дочерняя категория 1',
    		],
    		[
    			'id' => 2,
    			'name' => 'Дочерняя категория 2',
    		],
    		[
    			'id' => 3,
    			'name' => 'Дочерняя категория 3',
    		],
    	];
    
    	//json_encode превращяет массив PHP в JSON, который ждёт AJAX
    	exit(json_encode($subCategories));
    ?>
    Ответ написан
    Комментировать
  • Как получить нужную часть ответа от API в PHP?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Я получаю такую строку : {"day":0,"week":186,"month":186}
    из неё хочу брать только день и число


    <?php
    
        $url = "http://$server/api/?" .http_build_query($request_params);
        $ch = curl_init($url);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        
        //Получаем JSON
        $response = curl_exec($ch);
        curl_close($ch);
    
        //Декодируем JSON в PHP объект
        $data = json_decode($response);
       
        //Выводим только нужные элементы
        echo 'Day: '.$data->day.PHP_EOL;
        echo 'Week: '.$data->week.PHP_EOL;
        echo 'Month: '.$data->month.PHP_EOL;
    
    ?>
    Ответ написан
    Комментировать
  • Как сделать кликабельный никнейм в сообщении от телеграм бота?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Смотри объект сообщения и элемент entities

    Telegram обычно автоматически обнаруживает внутренние ссылки.
    Ответ написан
  • Как изменить значение в html селекторе с помощью php?

    rc-dm
    @rc-dm
    Full-Stack Web Developer
    Можно использовать HTML парсер на PHP (Документация)

    <?php
    
    // Создаём DOM из строки
    $html = str_get_html('
      <div id="hello">Hello</div>
      <div id="world">World</div>
    ');
    
    // Ищем элемент 'div' с 'id="hello"' и меняем его содержимое на 'foo'
    $html->find('div[id=hello]', 0)->innertext = 'foo';
    
    // Ищем второй элемент 'div' по порядку и добавляем ему класс 'bar'
    $html->find('div', 1)->class = 'bar';
    
    echo $html; 
    // Результат:
    // <div id="hello">foo</div>
    // <div id="world" class="bar">World</div>
    
    ?>
    Ответ написан
    Комментировать