Всем здравствуйте (не уверена там ли создаю тему), пишу код и возникла проблема в том, что результат первого post-запроса стирается при отправке второго, из-за этого данные не выводятся после установки параметров с помощью выпадающих списков. Помогите, пожалуйста, решить данную проблему, код возможно не совсем рациональный, но как есть. В прикрепленном файле csv файл, из которого читаются данные. Заранее спасибо! Задание: есть файл CSV, в котором хранятся адреса в формате "9 запятых". Необходимо создать скрипт на PHP, который читает адреса из файла и выводит их на экран. Также нужно реализовать возможность фильтрации адресов с помощью выпадающих списков. Данные в выпадающем списках должны подставляться динамически (например, если выбран населенный пункт, то в списке улиц должны подставиться только улицы выбранного нас. пункта). PHP: <?php echo '<form id='addressForm' action='' method='POST'>'; //выделяем НП и записываем в выпадающий список $file = fopen("addreses.csv", 'r'); $rowCount = 0; $cityColumnArray = array(); while(false !== ($rowData = fgetcsv($file))) { if($rowCount >= 0 && $rowCount <= count($cityColumnArray)){ array_push($cityColumnArray, $rowData[5]); } $rowCount = $rowCount + 1; } fclose($file); //вывод данных при 2 совпадающих параметрах if(isset($_POST['street']) && isset($_POST['city'])) { $optionSelect = $_POST['city']; $optionSelect1 = $_POST['street']; $streetColumnArray = array(); echo "<table>\n\n"; $file = fopen("addreses.csv", "r"); while (($data = fgetcsv($file)) !== false) { echo "<tr>"; foreach ($data as $i) { if ($optionSelect == $data[5] && $optionSelect1 == $data[6]) { echo "<td> " . htmlspecialchars($i) . " </td>"; } } echo "</tr> \n"; } fclose($file); echo "\n</table>"; } //сравнение option с данными файла и при совпадении запись 6 столбца в массив if(isset($_POST['city'])) { $optionSelect = $_POST['city']; $streetColumnArray = array(); $file1 = fopen("addreses.csv", "r"); while (($data = fgetcsv($file1)) !== false) { if ($optionSelect == $data[5]) { array_push($streetColumnArray, $data[6]); } } fclose($file1); } echo "<label for='city'>Выберите населенный пункт:</label> <select class='city' id='city' name='city' onchange='checkField(this.value)'> <option selected>--Select--</option>"; // заполнение select массивом CITIES $proglang = array_unique($cityColumnArray); foreach($proglang as $item) { echo "<option value='$item'>$item</option>"; } echo '</select>'; echo $_POST['city'].'<br>'.$city; if(isset($_POST['city'])) { echo '<label for="street">Выберите улицу:</label> <select id="street" name="street" onchange="checkField(this.value)"> <option selected>--Select--</option>'; // заполнение select массивом STREETS $proglang1 = array_unique($streetColumnArray); foreach($proglang1 as $item1){ echo "<option value='$item1'>$item1</option>"; } echo '</select>'; } echo $_POST['street'].'<br>'; ?> </form><hr> <center> <h1>Данные файла</h1> <table> <?php echo "\n\n"; $file = fopen("addreses.csv", "r"); while (($data = fgetcsv($file)) !== false) { echo "<tr>"; foreach ($data as $i) { echo "<td>" . htmlspecialchars($i) . "</td>"; } echo "</tr> \n"; } fclose($file); echo "\n"; ?> </table> </center><hr> <script> function checkField(val) { document.getElementById('addressForm').submit() } </script>
если выпадающие списки связанные - то делается это не так... а с помощью ajax запросов... если нет - отправляйте все данные вместе а не по отдельности