Фильтрация данных и вывод из файла csv

Всем здравствуйте (не уверена там ли создаю тему), пишу код и возникла проблема в том, что результат первого post-запроса стирается при отправке второго, из-за этого данные не выводятся после установки параметров с помощью выпадающих списков. Помогите, пожалуйста, решить данную проблему, код возможно не совсем рациональный, но как есть. В прикрепленном файле csv файл, из которого читаются данные. Заранее спасибо!

Задание: есть файл CSV, в котором хранятся адреса в формате «9 запятых». Необходимо создать скрипт на PHP, который читает адреса из файла и выводит их на экран. Также нужно реализовать возможность фильтрации адресов с помощью выпадающих списков. Данные в выпадающем списках должны подставляться динамически (например, если выбран населенный пункт, то в списке улиц должны подставиться только улицы выбранного нас. пункта).

PHP:
  1. <?php
  2. echo ‘<form id=’addressForm‘ action=’‘ method=’POST‘>’;
  3. //выделяем НП и записываем в выпадающий список
  4.         $file = fopen(«addreses.csv», ‘r’);
  5.         $rowCount = 0;
  6.         $cityColumnArray = array();
  7.         while(false !== ($rowData = fgetcsv($file))) {
  8.             if($rowCount >= 0 && $rowCount <= count($cityColumnArray)){
  9.                 array_push($cityColumnArray, $rowData[5]);
  10.             }
  11.             $rowCount = $rowCount + 1;
  12.         }
  13.         fclose($file);
  14.         //вывод данных при 2 совпадающих параметрах  
  15.         if(isset($_POST[‘street’]) && isset($_POST[‘city’]))
  16.         {
  17.         $optionSelect = $_POST[‘city’];
  18.         $optionSelect1 = $_POST[‘street’];
  19.         $streetColumnArray = array();
  20.         echo «<table>\n\n«;
  21.         $file = fopen(«addreses.csv», «r»);
  22.         while (($data = fgetcsv($file)) !== false) {
  23.             echo «<tr>»;
  24.             foreach ($data as $i) {
  25.                 if ($optionSelect == $data[5] && $optionSelect1 == $data[6])
  26.                 {
  27.                     echo «<td>   « . htmlspecialchars($i) . »   </td>»;
  28.                 }
  29.             }
  30.             echo «</tr> \n«;
  31.         }
  32.         fclose($file);
  33.         echo «\n</table>»;
  34.         }
  35.      
  36.         //сравнение option с данными файла и при совпадении запись 6 столбца в массив
  37.         if(isset($_POST[‘city’])) {
  38.             $optionSelect = $_POST[‘city’];
  39.             $streetColumnArray = array();
  40.             $file1 = fopen(«addreses.csv», «r»);
  41.             while (($data = fgetcsv($file1)) !== false) {
  42.                 if ($optionSelect == $data[5])
  43.                 {
  44.                     array_push($streetColumnArray, $data[6]);
  45.                 }
  46.             }
  47.             fclose($file1);
  48.         }
  49.             echo «<label for=»city»>Выберите населенный пункт:</label>
  50.                  <select class=»city» id=’city’ name=»city» onchange=»checkField(this.value)»>
  51.                  <option selected>—Select—</option>»;
  52.             // заполнение select массивом CITIES
  53.             $proglang = array_unique($cityColumnArray);
  54.             foreach($proglang as $item) {
  55.                 echo «<option value=»$item«>$item</option>»;
  56.             }
  57.             echo ‘</select>’;
  58.      
  59.      
  60.      
  61.         echo $_POST[‘city’].‘<br>’.$city;
  62.  
  63.         if(isset($_POST[‘city’]))
  64.         {
  65.             echo ‘<label for=»street»>Выберите улицу:</label>
  66.                  <select id=»street» name=»street» onchange=»checkField(this.value)»>
  67.                  <option selected>—Select—</option>’;
  68.             // заполнение select массивом STREETS
  69.             $proglang1 = array_unique($streetColumnArray);
  70.             foreach($proglang1 as $item1){
  71.                 echo «<option value=»$item1«>$item1</option>»;
  72.             }
  73.             echo ‘</select>’;
  74.         }
  75.      
  76.         echo $_POST[‘street’].‘<br>’;
  77. ?>
  78.  
  79.         </form><hr>
  80.             <center>
  81.                 <h1>Данные файла</h1>
  82.                     <table>
  83.  
  84. <?php
  85.         echo «\n\n«;
  86.         $file = fopen(«addreses.csv», «r»);
  87.         while (($data = fgetcsv($file)) !== false) {
  88.             echo «<tr>»;
  89.             foreach ($data as $i) {
  90.                 echo «<td>» . htmlspecialchars($i) . «</td>»;
  91.             }
  92.             echo «</tr> \n«;
  93.         }
  94.         fclose($file);
  95.         echo «\n«;
  96. ?>
  97.                  
  98.                     </table>
  99.             </center><hr>
  100.          
  101.          
  102.     <script>
  103.     function checkField(val) {
  104.         document.getElementById(‘addressForm’).submit()
  105.     }
  106.     </script>
  107.    
 

если выпадающие списки связанные — то делается это не так… а с помощью ajax запросов… если нет — отправляйте все данные вместе а не по отдельности

 

а можете, пожалуйста, подсказать как это сделать с помощью ajax

 

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

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