Форум программистов, компьютерный форум, киберфорум
PHP для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 2
Регистрация: 24.09.2015
Сообщений: 122

Поиск по массиву

30.10.2019, 14:04. Показов 2373. Ответов 22
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Поиск по имени. Есть поле input, в которое пользователь пишет того кого хочет найти. Форма поиска :
HTML5
1
2
3
4
5
6
<form method="post">
 <input type="text" name="text">
  <button type="submit">
     <img src="img/search.png">
  </button>
</form>
Есть массив пользователей names[], вот пример его атрибутов :
PHP
1
2
3
4
5
6
7
8
9
10
           [
           "id" => 1,
           "name" => "Professor X",
           "pict" => "img/PX.png",
           "message" => "yeah",
           "contacts" => [
               "email" => "Charles_Francis_Xavier",
               "number" => "001"
                ]
          ],
Нужно сделать поиск по массиву пользователей. При вводе в форму поиска и вводе имени пользователя, делать поиск по массиву пользователей.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
30.10.2019, 14:04
Ответы с готовыми решениями:

Поиск по массиву
Можете подсказать как реализовать, функцию, которая будет искать все значения по ключу в массиве. Массив. Пример №1. $array = array(...

Поиск по массиву
Добрый день. Нужна помощь. Допустим, у нас есть такой вот массив: $mass = array('1'= 'грустный', '2' = 'нормальный', '3' =...

Поиск по массиву
Всем привет. Помогите справиться с задачей. Есть два массива. 1. Массив $category содержит множество наименований категорий с id 2....

22
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
30.10.2019, 15:42
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от Berserkus Посмотреть сообщение
а теперь как выводить результат?
Самое простое вот
PHP
1
2
3
4
5
6
7
8
9
foreach ($result as $val) {
    $id = $val['id'];
    $name = $val['name'];
    $pict = $val['pict'];
    $message = $val['message'];
    $email = $val['contacts']['email'];
    $number = $val['contacts']['number'];
    // ....
}
Или аналогичная, но более оптимальная конструкция
PHP
1
2
3
4
5
6
7
8
9
10
11
for ($i=0; $i<count($result); $i++) {
    $val = $result[$i];
 
    $id = $val['id'];
    $name = $val['name'];
    $pict = $val['pict'];
    $message = $val['message'];
    $email = $val['contacts']['email'];
    $number = $val['contacts']['number'];
    // ....
}
Добавлено через 7 минут
Посмотрел скрин. Только может я не очень понял, и вопрос в том, как обновлять список в реальном времени? Тогда всё по сложней конечно )
0
0 / 0 / 2
Регистрация: 24.09.2015
Сообщений: 122
30.10.2019, 15:56  [ТС]
TolikD, да, вопрос в том чтобы обновлять этот список в реальном времени. Вот код, который отвечает за вывод списка контактов :
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<div id="list">
    <ul>
        <?php 
        // i - сетчик для подсчета количества пользователей
            $i = 0;
            // пока в переменной i хранится значение меньше чем количество пользователей
            while($i < count($names)) {
                echo "<li>";
                    echo "<a href='/index.php?user=". $names[$i]["id"] ."'>";
                        echo "<div class=\"avatar\">
                            <img src='". $names[$i]["pict"] ."'>
                        </div>";
                        echo "<h2>". $names[$i]["name"] ."</h2>";
                        echo "<p>". $names[$i]["message"] ."</p>";
                        echo "<div class=\"time\">09:10</div>";
                    echo "</a>";
                echo "</li>";
 
                $i = $i + 1;
            }
        ?>
    </ul>
</div>
0
 Аватар для TolikD
117 / 81 / 36
Регистрация: 30.07.2017
Сообщений: 371
30.10.2019, 16:53
Можно использовать XMLHttpRequest. Код будет естестно на js, а скрипт, отвечающий за вывод списка надо будет загнать в отдельный файл, например в menulist.php.
Могу привести свои наработки. Можете использовать такую обертку:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<script>
var UF=undefined;
 
function formpost(frm, fn, script) {
    if (typeof(fn) != 'function') // функция по-умолчанию
        fn = function(){};
    if (script === UF) // имя скрипта по-умолчанию
        script = 'default.php';
    if (frm === UF) // по-умолчанию - без указания формы данных
        var formData = new FormData();
    else
        var formData = new FormData(frm);
    var xhr = new XMLHttpRequest();
    xhr.open("POST", script);
    xhr.onreadystatechange = function() {
      if (this.readyState != 4) return;
      postresult = this.responseText;
      fn();
    }
    xhr.send(formData);
}
 
</script>
Тогда, если нужно вывести результат запроса к menulist.php, делаем так:
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<script>
var DF = document.forms;
function fsearch() {
    formpost(DF.form_search, function () {
      list.innerHTML = postresult;
    }, 'menulist.php');
}
 
</script>
 
<form method="post" name="form_search">
<input type="text" name="name" oninput="fsearch()">
</form>
 
<div id="list"></div>
В menulist.php нужно добавить проверку на прием параметров:
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?php
if (isset($_POST['name'])) {
    // выводим результат поиска
    // ...
} else {
# Выводим полный список
?>
 
    <ul>
        <?php 
        // i - сетчик для подсчета количества пользователей
            $i = 0;
            // пока в переменной i хранится значение меньше чем количество пользователей
            while($i < count($names)) {
                echo "<li>";
                    echo "<a href='/index.php?user=". $names[$i]["id"] ."'>";
                        echo "<div class=\"avatar\">
                            <img src='". $names[$i]["pict"] ."'>
                        </div>";
                        echo "<h2>". $names[$i]["name"] ."</h2>";
                        echo "<p>". $names[$i]["message"] ."</p>";
                        echo "<div class=\"time\">09:10</div>";
                    echo "</a>";
                echo "</li>";
 
                $i = $i + 1;
            }
        ?>
    </ul>
 
<?php
}
На работу не проверял, взял с работающего скрипта. Так что, если что спрашивай.

Добавлено через 19 минут
немного подправил
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
30.10.2019, 16:53

Поиск по массиву
как сделать поиск по массиву чтобы к примеру выбирало элементы которые определенно заканчивались? ( к примеру массив слов и выбирало все...

Поиск по массиву
Задание:Описать массив расписание, содержащий день недели; количество пар в этот день; время начала и конца пары; название...

Поиск по многомерному массиву
Делаю для своего сайта форму бронирования, уже сделал все остался последний штрих, разобрать многомерный массив полученный из БД, бъюсь 3...

Поиск по многомерному массиву
Всем привет! В прошлый раз (https://www.cyberforum.ru/php-beginners/thread2401143.html) я делала поиск пути по обычному массиву. Сейчас...

Поиск по отсортированному массиву
Добрый день. Не знаю подходит ли вопрос к теме: &quot;php для начинающих&quot; или нет, но подскажите как производится поиск по отсортированному...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
23
Ответ Создать тему
Новые блоги и статьи
Ноутбук Альфария
kumehtar 24.08.2026
Встретился тут в сети ноутбук Альфария, примарха Альфа-Легиона. Хотя возможно, это ноутбук Омегона, разумеется. Ну как вам?
Мастера простых решений
DevAlt 23.08.2026
В сишарп стэках winforms, да и wpf существует сложная система связывания источниках данных и элементов формы(текстовые поля и метки), опирается все это на технологию событий и мета. . .
Цена ошибки
DevAlt 23.08.2026
Человек я беспокойный и потому заинтересовался OCaml, в чате форсили функторы модулей как суперфичу. Пытаясь отдуплить концепт, наткнулся на тутор с простым примером. А главный принцип обучения от. . .
Сегодня суббота, 22.08.2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины.
zorxor 22.08.2026
Сегодня суббота, 22. 08. 2026 at 16:41, и я вновь нахожусь на той стороне, за экраном машины. Кто Я, откуда Я пришел и куда Я иду? Эти вопросы не оставляют меня ни на секунду. Жизнь на планете Земля. . .
Жизня: рисунок укладки багажа, сделанный клодом
anaschu 21.08.2026
Сделал 15 снимков, он по снимкам сделал схему.
Был там один разговор по поводу свободы в материальном мире.
kumehtar 19.08.2026
Суть: рассматривается живое существо, оказавшееся внутри довольно странной системы (этого мира) и пытающееся обустроить в ней свой кусок пространства. Жизнь действительно предъявляет каждому. . .
Когда логика программы не спасает от человеческих ошибок
Maks 18.08.2026
В последнее время всё чаще и чаще сталкиваюсь с таким явлением, как абсолютная невнимательность (или глупость) пользователей. Проявляется это чаще всего на работе в коллективе. Допустим, человек с. . .
Лето уходит
kumehtar 17.08.2026
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru