Создать фильтр выпадающих категорий

#php #arrays #filter

#php #массивы #Фильтр

Вопрос:

Существует файл .txt, который сохраняет каждую запись из входных данных. Я читаю файл и разбиваю его по определенному символу. В 3-м столбце есть сумма всех значений. Я хочу реализовать опцию фильтра категорий.

Мой код до сих пор :

 <?php
                if(file_exists('store.txt')){ 
                    $result=file('store.txt');
                    foreach($result as $value){ 
                         $columns =  explode('!', $value);  
                         $price = array($columns[2]); 
                         $sum  = $price[0]; 

                         if(isset($_POST['filter'])){ //There's the part with the filter
                             $filter = $_POST['category'];



                         }

                         echo 
                              '<tr><td>'.$columns[0].'</td>
                              <td>'.$columns[1].'</td>
                              <td>'.$columns[2].'</td>
                              <td>'.$columns[3].'</td></tr>';
                        }
                }
                             ?>
  

Заранее благодарю вас!

Ответ №1:

Печать значений из текстового файла на сервере в таблицу HTML с возможностью ограничения результатов, суммирования и цены, с использованием PHP.

getstore.php:

 if(file_exists('store.txt')) {
    $result=file('store.txt');

    $filter = 'no';
    if ( isset($_POST['filter']) ) {
        $filter = $_POST['filter'];
        echo 'Filter = "' . $filter . '"';
    }
    else { echo 'No filter selected.'; }

    if ( 0 < count($result) ) {
        echo '<table border="1"><tr><th>column 1</th><th>column 2</th><th>price</th><th>filter</th></tr>';

        $sum = 0;
        foreach($result as $value) {

            $columns =  explode('!', $value);

            if ( 'no' == $filter || trim($columns[3]) == $filter ) {
                $sum  = $columns[2]; // add price to total
                echo '<tr><td>'.$columns[0].'</td><td>'.$columns[1].'</td><td>'.$columns[2].'</td><td>'.$columns[3].'</td></tr>';
            }
        }
        echo "<tr><td></td><td align="right"><strong>SUM:</strong></td><td>$sum</td><td></td></tr></table>";
    }
    else { 'Empty file.'; }
}
else { echo 'File not found.'; }

?>

<form action="getstore.php" method="post">
    <select name="filter">
        <option>1</option>
        <option>2</option>
        <option>3</option>
    </select>
    <input type="submit">
</form>
  

Когда я выбираю фильтр 2, выдает мне:

 Filter = "2"
<table border="1">
    <tr>
        <th>column 1</th>
        <th>column 2</th>
        <th>price</th>
        <th>filter</th>
    </tr>
    <tr>
        <td>row 4, column 1, index 0</td>
        <td>column 2, index 1</td>
        <td>25</td>
        <td>2</td>
    </tr>
    <tr>
        <td>row 5, column 1, index 0</td>
        <td>column 2, index 1</td>
        <td>30</td>
        <td>2</td>
    </tr>
    <tr>
        <td>row 6, column 1, index 0</td>
        <td>column 2, index 1</td>
        <td>35</td>
        <td>2</td>
    </tr>
    <tr>
        <td></td>
        <td align="right"><strong>SUM:</strong></td>
        <td>90</td>
        <td></td>
    </tr>
</table>
  

Комментарии:

1. Я сделал это, но он находится в другом файле с формой ввода.

2. Таким образом, columns — это массив, а columns [2] — это значение из всего массива, если вы передаете его, вы получите просто строку. Поэтому я создал новый массив из этого значения существующего массива, чтобы упростить процедуру суммирования. Это моя логика. Пожалуйста, поправьте меня, если это впечатляюще неправильно.

3. Ооокей. Это не работает самостоятельно. Пожалуйста, если у вас есть какие-то предложения о том, как его создать. Свяжитесь со мной, и за это время я подумаю об этом и поделюсь результатом, если что-то получится. Итак, чтобы начинающие знали, как это сделать.

4. Нет. Просто ничего не получаю. Ничего не произошло.

5. Тогда все в порядке. Итак, я получаю результат, который представляет собой огромный массив каждой введенной записи в таблице. Таким образом, каждая запись с некоторыми данными, созданная из другого файла формы, отображается в этой таблице. Итак, я думаю, я должен сказать: «Когда я нажимаю category == 2, покажите мне массивы с 3-м ключом == 2, когда я делаю POST-запрос, нажимая эту кнопку и так далее.. Но я действительно не вижу никаких способов сделать это «.