Как отправить форму в цикле foreach с использованием PHP

#php #html #css #opencart

#php #HTML #css #opencart

Вопрос:

Я хочу отправить идентификатор по форме в цикле foreach, но когда я нажимаю на каждую кнопку, она отправляет мне первую форму.

Это означает, что когда я нажимаю на вторую кнопку, она отправляет мне значение первой формы, значение input hidden является правильным, но первое значение каждый раз отправляется.

 <?PHP 
if ($transactions) { 
    foreach ($transactions as $transaction) {
?>
    <td class="text-left">
        <?php echo $transaction['invoice_id']; ?>
    </td>
    <td class="text-left">
        <?php echo $transaction['invoice_type']; ?>
    </td>
    <td class="text-left">
        <?php echo $transaction['ref_id']; ?>
    </td>
    <td class="text-left">
        <?php echo $transaction['gateway']; ?>
    </td>
    <td class="text-left">
        <?php echo $transaction['payment_date']; ?>
    </td>
    <td class="text-right">
        <?php
            if($transaction['payment_status'] == 'not paid') { 
        ?>
            <form 
                method="POST" 
                action="<?php echo $gate_url; ?>"
            >
                <input type="hidden" name="invoiceId" value="<?php echo $transaction['invoice_id']; ?>">
                <button class="btn btn-md btn-primary" type="submit" >
                    <?php echo $pay; ?>
                </button>
            </form>
        <?php 
            }
        ?>
    </td>
<?php
}
  

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

1. Не могли бы вы попробовать изменить значение type="hidden" to type="text" , чтобы подтвердить, какие значения вы видите? Код мне кажется хорошим. Вы также можете попытаться отладить часть, которая получает значение для ошибок, а не только форму. Кроме того, не могли бы вы подтвердить, что этот код <td class="text-left"> <?php echo $transaction['invoice_id']; ?> </td> возвращает другой идентификатор счета в каждом цикле?

2. @KodeFor.Me : спасибо, что исправили этот вопрос здесь. Однако мне интересно, был ли код настолько существенно переформатирован, что это могло бы замаскировать проблему, которая уже существовала. В общем, возможно, стоит оставить код как есть, если он не настолько плохо отформатирован, что его невозможно прочитать.

3. @halfer привет и спасибо за ваши комментарии. Очевидно, что код был нечитаемым, и это было целью его переформатирования. По крайней мере, с моей точки зрения, невозможно помочь кому-либо, когда код не в хорошем состоянии для чтения, и я также не могу прочитать код из нескольких строк всего за 2-3 строки с горизонтальной прокруткой 🙂

4. вы пробовали значение имени, помещенное в массив name="invoiceId[]" ?

Ответ №1:

У вас есть массив значений, так что это:

 <input type="hidden" name="invoiceId" value="<?php echo $transaction['invoice_id']; ?>">
  

заменить на:

 <input type="hidden" name="invoiceId[]" value="<?php echo $transaction['invoice_id']; ?>">