Ищете решение для поиска по списку Zip-кодов. У меня есть текстовый файл с кучей почтовых индексов, которые мы обслуживаем. Хотелось бы иметь форму на веб-сайте с просьбой ввести свой почтовый индекс, чтобы узнать, обслуживаем ли мы эту область. Если это так, отобразите сообщение о том, что мы делаем, если нет, заявив, что мы этого не делаем. Мысль PHP будет лучшим решением для моей проблемы, но я все-таки нуб, когда дело доходит до этого.
У меня есть моя форма, я просто не уверен, как искать текстовый файл и отображать ответ в другом div?
<form action="zipcode.php" method="post"> <input type="text" name="search" /> <input type="submit" /> </form>
ОБНОВЛЕНИЕ: Предпочтительно решение AJAX!
(Find_in_file_ajax.php)
<?php $search = $_POST['search']; $text = file_get_contents('zipcodes.txt'); $lines = explode("\n", $text); if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "ZIP code found"; }else{ echo "ZIP code does not exist"; } ?>
<!DOCTYPE html> <html> <head> <style> .update { font-family:Georgia; color:#0000FF; } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(".search_button").click(function() { // getting the value that user typed var searchString = $("#search_box").val(); // forming the queryString var data = 'search='+ searchString; // if searchString is not empty if(searchString) { // ajax call $.ajax({ type: "POST", url: "find_in_file_ajax.php", data: data, beforeSend: function(html) { // this happens before actual call $("#results").html(''); $("#searchresults").show(); $(".word").html(searchString); }, success: function(html){ // this happens after we get results $("#results").show(); $("#results").append(html); } }); } return false; }); }); </script> </head> <body> <div id="container"> <div> <form method="post" action=""> <input type="text" name="search" id="search_box" class='search_box'/> <input type="submit" value="Search" class="search_button" /><br /> </form> </div> <div> <div id="searchresults">Search results: <span id="results" class="update"></span> </div> </div> </div> </body> </html>
.<!DOCTYPE html> <html> <head> <style> .update { font-family:Georgia; color:#0000FF; } </style> <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script> <script type="text/javascript"> $(function() { $(".search_button").click(function() { // getting the value that user typed var searchString = $("#search_box").val(); // forming the queryString var data = 'search='+ searchString; // if searchString is not empty if(searchString) { // ajax call $.ajax({ type: "POST", url: "find_in_file_ajax.php", data: data, beforeSend: function(html) { // this happens before actual call $("#results").html(''); $("#searchresults").show(); $(".word").html(searchString); }, success: function(html){ // this happens after we get results $("#results").show(); $("#results").append(html); } }); } return false; }); }); </script> </head> <body> <div id="container"> <div> <form method="post" action=""> <input type="text" name="search" id="search_box" class='search_box'/> <input type="submit" value="Search" class="search_button" /><br /> </form> </div> <div> <div id="searchresults">Search results: <span id="results" class="update"></span> </div> </div> </div> </body> </html>
Сначала необходимо получить доступ к файлу через file_get_contents
, затем взорвать каждую запись и извлечь интересующий поиск почтового индекса.
Предполагая, что файл zipcodes.txt имеет следующий формат:
43505
43517
43518
43526
43543
ПРИМЕЧАНИЕ . Если запрошено 43505, оно будет найдено. В отличие от 4350 или 3505 не будет найдено, так что это уникальный запрос.
Рассмотрим следующее:
<?php $search = $_POST['search']; $text = file_get_contents('zipcodes.txt'); $lines = explode("\n", $text); if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "ZIP code found."; }else{ echo "ZIP code does not exist"; } ?>
Видел ваше редактирование … ниже – PHP.
Я бы сделал что-то вроде
$lines = file("/path/to/file.txt", FILE_IGNORE_NEW_LINES); //reads all values into array if(in_array($_POST['search'], $lines)){ //checks if ZIP is in array echo "found zip code"; }else{ echo "zip code does not exist"; }
Пока не существует ОЧЕНЬ БОЛЬШОГО количества почтовых индексов … это должно быть хорошо. Кроме того, каков формат вашего файла? Это может не сработать.