Обновление динамической таблицы HTML с использованием PHP и Jquery - PullRequest
0 голосов
/ 21 мая 2019

Я довольно новичок в PHP, поэтому немного экспериментирую дома. Я настроил локальный сервер. Уже некоторое время пытаюсь, но у меня проблемы с решением этой последней части. Я не уверен, как соединить последние части.

Это мой Index.php :

<?php
    //readfile("show.html");
    $jobs;
    $rssFeed = kungsorJobsFetcher();
    $page = isset($_GET['page']) ? $_GET['page'] : 0;
    echo rss_kungsor_items_beautify1(getItems(), $page, 1000000);

    function kungsorJobsFetcher(){


        $feed = implode(file('https://recruit.visma.com/External/Feeds/AssignmentList.ashx?guidGroup=221caebb-3836-4036-8c83-edd6e630ec79'));
        $xml = simplexml_load_string($feed);
        $res = array();
        foreach($xml->Assignments->Assignment as $job){
            list($date, $trash) = explode( 'T', $job->ApplicationEndDate );
            $item["date"] = $date;
            $item["link"] = $job->ReadMoreUrl;
            $item["city"] = $job->AccountName;
            foreach($job->Localization->AssignmentLoc->AssignmentTitle as $jobTitle){
                $item["title"] = $jobTitle;
            }
            array_push($res, $item);
        }

        $GLOBALS['jobs'] = $res;
    }

    function getItems() {
      //  print_r($GLOBALS['jobs']);
        return $jobs;
    }
    function rss_kungsor_items_beautify1($items, $page = 0, $length = 5, $link = ""){
        //$full_items = $items;;
        $items = $GLOBALS['jobs'];
        //$items = array_slice($items, $page*$length, $length);
        $markup = '';
        $markup = file_get_contents('table_header_kungsor.tpl.php', true);

        $rows = '';

        if(count($items) > 0) {
            foreach($items AS $item) {
                $link_item = $item['link'];
                if ($link != "") {
                    $link_item = $link;
                }

                $date = date_format(date_create($item['date']), 'Y-m-d');

                if (strpos($item["date"], '/') !== false){
                    $date = date_format(strtotime($item['date']), 'Y-m-d');
                }


                $rows .= "<tr><div class='annons-item kungsor-item'>" .
                "<div class='left'>";

                $rows .= "<div class='content'>" .
                        "<h4><a class='kungsor-link' target='_blank' href='$link_item'>" . $item['title'] . "</a></h4>" .
                        "<div class='subcontent'>" .
                        "<div class='item'><p>" . $item['city'] . "</p></div>" .
                            "<div class='item'><p>Sista ansökningsdag: $date</p></div>" .
                        "</div>" .
                    "</div>" .
                "</div>" .
                "<a target='_blank' href='$link_item' class='apply-btn hiddenSM'>Ansök här</a>" .
                "</div></tr>";
            }
    }
    $markup = preg_replace('/\{rows\}/', $rows, $markup);
    return $markup;
}

?>

<script type="text/javascript">
  var simple = '<?php echo $GLOBALS['jobs']; ?>';
    jQuery('body').on('keyup','input.test',function(){
        console.log(simple);
    });
</script>

А это мой table.header.php

<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
</head>
<body>
Enter your name: <input class="test" type="text" id="fname" onkeyup="myFunction()">

  <table>
    <tr>
      {rows}
    </tr>
  </table>
</body>
</html>

Что я ищу:

Как видите, таблица заполнена переменной rows. Всякий раз, когда пользователь вводит в поле ввода, я хочу, чтобы он тоже просматривал все заголовки и показывал только соответствующие Я думал сделать цикл foreach, чтобы просмотреть все элементы (строки), разделить строку заголовка и найти подходящие слова. Если он совпадает, мы добавим его во временный массив. Когда все сделано, обновите строки с результатами (это хорошее решение или есть более эффективное?) Я знаю, что я хочу сделать, но я не знаю, как это сделать. Простой пример или какое-нибудь объяснение или, что еще лучше, некоторые примеры кода были бы потрясающими! Спасибо!

Вы можете скопировать и вставить код, и вы увидите несколько строк, извлекающих данные из xml, предоставленного для облегчения тестирования.

Я настроил аналогичную структуру из того, что выглядит в моем веб-сервере, со всеми минимальными требованиями, чтобы показать, что имеет значение Используя этот метод, вы выводите переменную php, которая содержит всю разметку html и т. Д.

Итак, подведем итог. С каждым keyup на моем поле ввода. Моя функция keyup сработает. Использование информации из этого поля для поиска названий, содержащихся в переменной $ jobs. Как сделать так, чтобы html повторно отображал таблицу автоматически?

...