как изменить значение в массиве? - PullRequest
1 голос
/ 20 мая 2019

У меня есть следующий код (в котором я могу использовать только HTML и PHP), целью которого является изменение буквы каждой ячейки в соответствии с операцией, выполняемой в форме и отображаемой на той же странице;Проблема в том, что он не выполняет свою цель, он пытался несколькими способами, но ни один из них не работал;Может ли кто-нибудь помочь мне?

код 1: index.php

<body>
    <center>
        <?php
            require('action.php');

            tables();
            actions();

            echo '<form>';
            echo '<label>Row: <input  name="row" method="post"></label><br/>';
            echo '<label>Place: <input name="place" method="post"></label><br/>';

            echo '<br/>Operation: <select name="select">';
            echo '<option>reserve</option>';
            echo '<option>buy</option>';
            echo '</select>';
            echo '<button type="submit" name="btn" formmethod="post">send</button>';
            echo '</form>';
        ?>
    </center>
</body>

код 2: tables.php

<?php
    function tables(){
        $seating = array(
            array('', 1, 2, 3, 4, 5),
            array(1, 'L', 'L', 'L', 'L', 'L'),
            array(2, 'L', 'L', 'L', 'L', 'L'),
            array(3, 'L', 'L', 'L', 'L', 'L'),
            array(4, 'L', 'L', 'L', 'L', 'L'),
            array(5, 'L', 'L', 'L', 'L', 'L')
        );
        echo '<table style="border: 1px solid black;">';
        for ($i=0; $i < 6; $i++) {
            echo '<tr>';
            for ($j=0; $j < 6; $j++) {
                echo '<td>'.$seating[$i][$j].'</td>';
            }}
        echo '</tr>';
        echo '</table>';
    }
?>

код 3: action.php

<?php

    require('tablas.php');

    function actions(){
        if(isset($_POST["btn"])){
            if ($_POST["select"]=="reserve") {
                    $asientos[$_POST["row"]][$_POST["place"]]="R";
            }elseif ($_POST["select"]=="buy") {
                    $asientos[$_POST["row"]][$_POST["place"]]="L";
            }
        }
    }
?>

Ответы [ 2 ]

1 голос
/ 21 мая 2019

У вас есть форма без method, поэтому по умолчанию используется GET, но вы используете POST.У вас есть какой-то метод в кнопке, но он неправильный:

<!-- This: -->
<button type="submit" name="btn" formmethod="post">send</button>

<!- Should be: -->
<form method="post">
    <button type="submit" name="btn">send</button>
</form>

Это следующий обзор кода, я его отредактирую несколько раз, так как в вашем коде есть место для улучшения:

  • Не использовать <center>.Это устарело, попробуйте <div style="text-align: center">
  • Ваша форма while теперь является эхом в PHP.Это грязно, и таким образом вы упускаете преимущества раскраски кода, например, в ответе.Вы можете сделать это:

    ?><!-- Stop here, continue as html -->
    <form method="post">
        Your other inputs here
        <input name="example" value="See my pretty colors?" />
        <!-- well, it's weird here on SO, but you get the gist -->
    </form>
    <?php
    
  • Функция не должна отображать информацию, вместо этого она должна создать немного html и вернуть его.Это создаст более управляемый код, в котором вы сможете контролировать, что будет лучше.

    function tables(){
        $resulthtml = '';
        $resulthtml.= '<table style="border: 1px solid black;">';
        for ($i=0; $i < 6; $i++) {
            $resulthtml.= '<tr><td>'.$i.'</td></tr>';
        }
    
        return $resulthtml;
    }
    echo tables();
    

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

0 голосов
/ 20 мая 2019

одна опечатка, которую я видел в action.php :

требуется ( ' tablas.php ');

Должно быть: требуется ( ' tables.php ');

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...