За последние 24 часа нас посетили 22395 программистов и 1139 роботов. Сейчас ищут 624 программиста ...

Реализовать поиск пользователя в файле txt через php

Тема в разделе "PHP для новичков", создана пользователем Nikitqa, 2 мар 2021.

Метки:
  1. Nikitqa

    Nikitqa Новичок

    С нами с:
    2 мар 2021
    Сообщения:
    9
    Симпатии:
    0
    Я сделал форму поиска в html, и при вводе ФИО на экран должен отображаться номер строки, в которой находится это ФИО. Все данные(ФИО) записаны у меня в текстовом файле


    Вообщем, вот само условие задачи
    https://i.stack.imgur.com/fh3ia.png


    Код, который я написал на html

    <html>
    <head>
    <meta charset="UTF-8">
    <title>Поиск по ФИО</title>
    </head>
    <body>
    <form action="prakt9.php" method="post">
    <input required type="text" name="search"/>
    <input type="submit"/>
    </form>

    </body>
    </html>

    Код на php, который выводит всё содержимое файла txt на экран, а не то, что должно выполнятся в условии задачи

    <?php
    $search = $_POST['search'];
    $file = fopen("info.txt", "r+");
    while (!feof($file)) {
    echo fgets($file)."<br>";
    }
    fclose($file);
    ?>




    Конкретно не понимаю, что я должен написать, чтобы на экране появился номер строки, в которой находится ФИО которое я ввожу в форме(html)
     
  2. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    file вместо fopen и ищешь с помощью array_search
    Если поиск ничего не находит он выдает false
    Вод документация на все это
    https://www.php.net/manual/ru/function.file.php
    https://www.php.net/manual/ru/function.array-search.php

    PHP:
    1. $search = $_POST['search'];
    2. $file = file("info.txt");
    3. $key = array_search($search, $file);
    как разберетесь с этим уже посмотрите в сторону
     
    #2 Artur_hopf, 2 мар 2021
    Последнее редактирование: 2 мар 2021
  3. boss1

    boss1 Новичок

    С нами с:
    18 фев 2021
    Сообщения:
    70
    Симпатии:
    0
    Код (Text):
    1. function sendForm(){
    2.   $.ajax({
    3.     url: 'form.php',
    4.     type: 'POST',
    5.     data: {
    6.       fio: $('form input').val();
    7.     },
    8.     success: function(response) {
    9.       $('#result').html(response);
    10.     }
    11.   });  
    12. }
    13.  
    14.  
    15.  
    16. // form.php
    17. $data = file('user.txt', FILE_IGNORE_NEW_LINES);
    18. if (in_array($_POST['fio'], $data)){
    19.     echo 'Yes';
    20. }
    21.  
    22. else {
    23.     echo 'No';
    24. }
    --- Добавлено ---
    PHP:
    1. function sendForm(){
    2.   $.ajax({
    3.     url: 'form.php',
    4.     type: 'POST',
    5.     data: {
    6.       fio: $('form input').val();
    7.     },
    8.     success: function(response) {
    9.       $('#result').html(response);
    10.     }
    11.   });  
    12. }
    13.  
    14.  
    15.  
    16. // form.php
    17. $data = file('user.txt', FILE_IGNORE_NEW_LINES);
    18. if (in_array($_POST['fio'], $data)){
    19.     echo 'Yes';
    20. }
    21.  
    22. else {
    23.     echo 'No';
    24. }
     
  4. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    @boss1 А нах тут ajax? его за это препод по голове не погладит. И там есть пунк в тз где написано про вывод нескольких совпадение.
    Садись, два)
     
    MouseZver и Nikitqa нравится это.
  5. Nikitqa

    Nikitqa Новичок

    С нами с:
    2 мар 2021
    Сообщения:
    9
    Симпатии:
    0
    ничего не понимаю, ни разу не пользовался array_search к сожалению
     
  6. Artur_hopf

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

    С нами с:
    7 май 2018
    Сообщения:
    2.266
    Симпатии:
    405
    PHP:
    1. <?php
    2. // если в наш фаил не передан пост запрос показываем форму
    3. // за счет инверсии перед isset
    4. if( !isset($_POST['search']))
    5. {
    6. ?>
    7.  
    8.     <html>
    9.     <head>
    10.     <meta charset="UTF-8">
    11.     <title>Поиск по ФИО</title>
    12.     </head>
    13.     <body>
    14.     <form action="index.php" method="post">
    15.     <input required type="text" name="search"/>
    16.     <input type="submit"/>
    17.     </form>
    18.  
    19.     </body>
    20.     </html>
    21.     <?php
    22. }
    23. else
    24. {
    25.     $search = $_POST['search'];
    26.     $file = file("info.txt");
    27.  
    28.     print_r($file);
    29.     // за счет print_r можно увидеть содержимое массива, он уже будет пронумерован
    30.     // например будет такой вид
    31.     // Array ( [0] => ФИО1 [1] => ФИО2 [2] => ФИО3 [3] => ФИО4)
    32.     // обрати внимание, уже есть цифры с порядком
    33.  
    34.     //далее нам нужно найти совпадение в массиве с помощью array_search
    35.     $key = array_search($search, $file);
    36.  
    37.     // если нет совпадение $key вернет false
    38.     // наш print_r не показывает false, вместо нее он отобразит пустую строку
    39.     // поэтому для отладки используем var_dump
    40.     var_dump($key);
    41.  
    42.  
    43.     // теперь тебе нужно вывести номер строки если результат не false
    44.     // но так как массив начинает считать с нуля, тебе к результута нужно прибавить один
    45.  
    46.     // и далее разобраться как вывести несколько совпадении
    47. }
    и если ты в будущем когда будешь показывать преподу код, оставишь закомментированным отладку, это тебе будет плюс один бал.
    например так:
    PHP:
    1. $search = $_POST['search'];
    2. $file = file("info.txt");
    3. //print_r($file);
    4. $key = array_search($search, $file);
    5. //var_dump($key);
     
    #6 Artur_hopf, 3 мар 2021
    Последнее редактирование: 3 мар 2021
  7. mkramer

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

    С нами с:
    20 июн 2012
    Сообщения:
    8.554
    Симпатии:
    1.754
    Ну русский же понимаешь, а тебе дали ссылку на доку
     
    Nikitqa нравится это.
  8. Nikitqa

    Nikitqa Новичок

    С нами с:
    2 мар 2021
    Сообщения:
    9
    Симпатии:
    0
    Сложно, попробую, спасибо)