Как я могу удалить значение из моего массива сеанса, который отображается в таблице? - PullRequest
0 голосов
/ 25 октября 2018

Я создал массив в сеансе, который мне удалось поместить в таблицу.По сути, это просто список предпочтений, которые пользователь может создать, нажав кнопку на странице продукта.

Однако я хочу создать кнопку рядом с каждым продуктом в таблице, которая удаляет продукт из массива.и я не могу понять, почему это не работает.

Вот мой код: (обновлено)

    <?php
            if (isset($_POST['remove'])) {
            $value_to_delete = 'JX-1E1-LTU';
            if(($key = array_search($value_to_delete, $_SESSION['arr'])) !== false) {
                unset($_SESSION['arr'][$key]);
                $_SESSION["arr"] = array_values($_SESSION["arr"]);
                    }
            }           
        ?>

         <?php

            $contents = ($_SESSION['arr']);
            $arrlength = count($contents);

                echo '<table class="table table-striped equipment">';
                echo '<thead>';
                echo '<tr>';
                echo '<th scope="col">';
                echo 'Parts';
                echo '</th>';
                echo '<th scope="col">';
                echo 'Remove Item';
                echo '</th>';
                echo '</tr>';
                echo '</thead>';
                echo '<tbody>';                 
                for($x = 0; $x < $arrlength; $x++) 
                {
                echo '<tr>';
                echo '<td>';
                echo $contents[$x];                     
                    $part = $contents[$x];                      
                echo '</td>';
                echo '<td>';                        
                    $pos = array_search($part, $contents);    
                    echo ' ' . $pos;                                    
                ?>  
                <form action="" method="post">
                <input type="text" name="value" value="<?php echo $part;?>">
                <input type="submit" name="remove" value="Remove">
                </form>         
                <?php                       
                echo '</td>';
                echo '</tr>';                   
                }                   
                echo'</tbody>';
                echo '</table>';
?>

Кнопка «deleteall» работает внизустраницы - он успешно удаляет все значения из моего сеанса, но кнопка «удалить» не удаляет каждый продукт отдельно:

            if (isset($_POST['remove'])) {
                $key=array_search($_GET[$part],$_SESSION['arr']);
                if($key!==false)
                unset($_SESSION['arr'][$key]);
                $_SESSION["arr"] = array_values($_SESSION["arr"]);
            }

            echo '<form action="" method="post">';
            echo    '<input type="submit" name="remove" value="Remove">';
            echo '</form>';     

Я предполагаю, что я делаю что-то не так в приведенном выше разделе, но я, кажется, ударил кирпичную стену и перепробовал все, что только мог придумать, любая помощь будет с благодарностью получена!

1 Ответ

0 голосов
/ 26 октября 2018

Ваш второй пример, кажется, подразумевает, что вы выполняете действие remove прямо перед отображением формы, то есть после отображения таблицы.Он не будет работать при обновлении первой страницы.

Так что, если код действия удаления находится не в нужном месте, попробуйте этот фрагмент кода ниже, который работает здесь.

Сначала используйте егокак один файл.Следуйте инструкциям и посмотрите, сможете ли вы воспроизвести проблему.Если нет, то это может быть связано с окружающей средой.

Затем поместите код блока перед отображением вашего table (и отредактируйте $_SESSION["arr"] с правильными значениями :)), и посмотрите, удаляет ли это правоэлемент из массива.

Если это не так, попробуйте отладить его с помощью ведения журнала.

<code><?php
session_start();

echo "<pre>";

// Load this page once. Then, before the next page refresh,
// Comment the below line to check if the session values
// are updated

$_SESSION["arr"] = array("trousers", "blue", "jean");
print_r($_SESSION);

unset($_SESSION["arr"][array_search("blue", $_SESSION["arr"])]);
print_r($_SESSION);

$_SESSION["arr"] = array_values($_SESSION["arr"]);
print_r($_SESSION);

echo "
";?>
...