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

Nikitqa

Я сделал форму поиска в 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)

 

Artur_hopf

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);

как разберетесь с этим уже посмотрите в сторону

 

boss1

Код (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. }
 

Artur_hopf

@boss1 А нах тут ajax? его за это препод по голове не погладит. И там есть пунк в тз где написано про вывод нескольких совпадение.
Садись, два)

 

Nikitqa

ничего не понимаю, ни разу не пользовался array_search к сожалению

 

Artur_hopf

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);
 

mkramer

Ну русский же понимаешь, а тебе дали ссылку на доку

 

Nikitqa

Сложно, попробую, спасибо)

 

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *