1 Вопрос: Нужно отправить массив в PHP

вопрос создан в Wed, May 8, 2019 12:00 AM

Я пытаюсь отправить кратные значения в форму PHP. Это форма, которую я использую для отправки значений:

<form id="form1" name="form1" method="POST" action="../WSweb/Factura.php">
    <table width="561" height="79" border="1">
        <tr>
            <td width="30%" height="32">ProductID</td>
            <td width="30%" height="32">SKU</td>
        </tr>
        <?php do { ?>
            <tr>
                <td><?php echo $row_test1['ProductID']; ?>
                    <input
                        type="hidden"
                        name="Product[id][ProductID]"
                        value="<?php echo $row_test1['ProductID']; ?>"
                    />
                </td>
                <td><?php echo $row_test1['SKU']; ?>
                    <input
                        type="hidden"
                        name="Product[id][SKU]"
                        value="<?php echo $row_test1['SKU']; ?>"
                    />
                </td>
            </tr>
        <?php } while ($row_test1 = mysqli_fetch_assoc($test1)); ?>
    </table>

    <input type="submit" value="Update" name="Facturar">
</form>

А это файл действий:

if(isset($_POST['Update']))
{
    $ProductID=$_POST['Product'];
    print_r(json_encode($ProductID));
}

Проблема в том, что я отправляю несколько значений, например, приведенную ниже таблицу:

ProductID      SKU
103              WH004BI
137              VO007BI

Я всегда получаю этот результат:

{"id":{"ProductID":"137","SKU":"VO007BI"}}

Когда я действительно хочу получить такой результат:

{"id":[{"ProductID":"103","SKU":"WH004BI"},{"ProductID":"137","SKU":"VO007BI"}]}
    
4
  1. Измените name="Product[id][ProductID]" на name="Product[id][][ProductID]". В HTML также могут быть массивы! Это так же, как если бы вы добавляли элемент в массив, используя синтаксис []. Сделайте это для всех именованных входов.
    2019-05-08 16: 21: 50Z
  2. я просто делаю, но я получаю этот ProductID SKU 103 WH004BI 137 VO007BI это любая форма, чтобы получить это? { "Идентификатор": [{ "ProductID": "103", "Код": "WH004BI"}, { "ProductID": "137", "Код": "VO007BI"}]}
    2019-05-08 16: 34: 31Z
  3. Я не думаю, что вы можете получить эту структуру непосредственно из формы, вам нужно переставить данные в PHP.
    2019-05-08 16: 36: 58Z
  4. Я ожидаю, что это так {"id": [{"ProductID": "103", "SKU": "WH004BI"}, {"ProductID": " 137" , "Код": "VO007BI"}]}
    2019-05-08 17: 12: 50Z
1 ответ                              1                         

Вы захотите сделать что-то вроде этого:

<form id="form1" name="form1" method="POST" action="../WSweb/Factura.php">
    <table width="561" height="79" border="1">
        <tr>
            <td width="30%" height="32">ProductID</td>
            <td width="30%" height="32">SKU</td>
        </tr>
        <?php $i = 0; ?>
        <?php while ($row_test1 = mysqli_fetch_assoc($test1) { ?>
            <tr>
                <td>
                    <?php echo $row_test1['ProductID']; ?>
                    <input
                        type="hidden"
                        name="Product[id][<?= $i; ?>][ProductID]"
                        value="<?php echo $row_test1['ProductID']; ?>"
                    />
                </td>
                <td>
                    <?php echo $row_test1['SKU']; ?>
                    <input
                        type="hidden"
                        name="Product[id][<?= $i; ?>][SKU]"
                        value="<?php echo $row_test1['SKU']; ?>"
                    />
                </td>
            </tr>
        <?php $i++; ?>
        <?php } ?>
    </table>

    <input type="submit" value="Update" name="Facturar">
</form>

Обратите внимание, что я поместил $i = 0 в начале цикла, а $i++ - в конце цикла.

Кроме того, я изменил имена на следующие:

name="Product[id][<?= $i; ?>][SKU]"

Это предотвратит проблему, возникшую в разделе комментариев относительно некорректно сформированного массива.

    
2
2019-05-08 17: 42: 33Z
  1. я просто делаю, но я получаю этот результат {"id": [{"ProductID": "137", "SKU": "VO007BI"]}, но я сделал получить весь массив
    2019-05-08 17: 23: 34Z
  2. @ JavierJoasimarPalosFlores Пожалуйста, смотрите мой код. Я проверил это в моей собственной среде, и все, кажется, работает правильно. Убедитесь, что вы скопировали код в точности так, как он есть в ответе.
    2019-05-08 17: 43: 35Z
источник размещен Вот