PHP обрабатывает массив $ _POST - PullRequest
       2

PHP обрабатывает массив $ _POST

1 голос
/ 18 октября 2019

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

<form action="" method="post">

    <?php
        $arr = [30, 40, 55];        
        foreach ($arr as $code) { ?>
            <?php 
                for ($i = 1; $i <= 12; $i++ ) { ?>
                    <input type="hidden" name="field[code]" value="<?php echo $code; ?>">
                    <input type="hidden" name="field[month]" value="<?php echo $i; ?>">
                    <input type="text" name="field[amount]"><?php 
                } 
        }
    ?>

    <button name="submit">Submit</button>

</form>

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

<?php
    if( isset( $_POST['submit']) ){

        foreach( $_POST['field'] as $field ) { //<- problem
            $code = $field['code'];
            $month = $field['month'];
            $amount = $field['amount'];

            //insert into db
        } 

    }
?>

Ответы [ 3 ]

1 голос
/ 18 октября 2019
<form action="" method="post">

    <?php
        $arr = [30, 40, 55];        
        foreach ($arr as $code) { ?>
            <?php 
                for ($i = 1; $i <= 12; $i++ ) { ?>
                    <input type="hidden" name="field[code][]" value="<?php echo $code; ?>">
                    <input type="hidden" name="field[month][]" value="<?php echo $i; ?>">
                    <input type="text" name="field[amount][]"><?php 
                } 
        }
    ?>

    <button name="submit">Submit</button>

</form>



затем дамп ($ _ POST);

1 голос
/ 18 октября 2019

Назначить поле ввода числа foreach.

<?php
       $arr = [30, 40, 55];
       foreach ($arr as $code) { ?>
           <?php
               for ($i = 1; $i <= 12; $i++ ) { ?>
                   <input type="hidden" name="field[<?php echo $i ?>][code]" value="<?php echo $code; ?>">
                   <input type="hidden" name="field[<?php echo $i ?>][month]" value="<?php echo $i; ?>">
                   <input type="text" name="field[<?php echo $i ?>][amount]"><?php
               }
       }

   ?>

На внутренней стороне

<?php
    if( isset( $_POST['submit']) ){
        foreach( $_POST['field'] as $key => $field ) { 
            $code = $field['code'];
            $month = $field['month'];
            $amount = $field['amount'];
            //insert into db
        }

    }
?>
1 голос
/ 18 октября 2019

Это, вероятно, то, что вы ищете:

<?php
// ...
if (isset( $_POST['submit']) && array_key_exists('field', $_POST)) {

    $code = $_POST['field']['code'];
    $month = $_POST['field']['month'];
    $amount = $_POST['field']['amount'];

    //insert into db
} 

Или, если вы считаете, что это легче читать:

<?php
// ...
if (isset( $_POST['submit']) && array_key_exists('field', $_POST)) {

    $field = &$_POST['field'];
    $code = $field['code'];
    $month = $field['month'];
    $amount = $field['amount'];

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