Я довольно новичок в 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 повторно отображал таблицу автоматически?