PHP, обрабатывать несколько динамических форм на одной странице - PullRequest
0 голосов
/ 28 сентября 2018

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

Вот пример отменыкнопка в каждой строке таблицы:

<form method="post" action="">
  <?php $token = $_SESSION['token'] = md5( session_id() . time(). rand() ); ?>
  <input type="hidden" name="token" value="<?php echo $token; ?>" />
  <input type="hidden" name="sg_subscriptionID" value="<?php echo $subscriptionID; ?>" />
  <input type="hidden" name="sg_postID" value="<?php echo $post->ID; ?>" />
  <input type="submit" class="button" name="submit" value="Cancel" />
</form>

Для обработки формы, в верхней части файла я использую <?php if(isset($_POST['submit']) {} ?>

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

Нет определенного количества форм, которые нужно создать, поэтому я не могу просто иметь "submit1", "submit2".Я могу добавить число динамически, используя $ count, но как мне проверить массив динамических чисел в моем скрипте обработки формы?

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

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Вы можете использовать массивы ввода html для нескольких форм.

Пример: - В вашем коде: -

<form method="post" action="">
  <?php $token = $_SESSION['token'] = md5( session_id() . time(). rand() ); ?>
  <input type="hidden" name="token[<?php echo 'form_'.$i ?>]" value="<?php echo $token; ?>" />
  <input type="hidden" name="sg_subscriptionID[<?php echo 'form_'.$i ?>]" value="<?php echo $subscriptionID; ?>" />
  <input type="hidden" name="sg_postID[<?php echo 'form_'.$i ?>]" value="<?php echo $post->ID; ?>" />
  <input type="submit" class="button" name="submit[<?php echo 'form_'.$i ?>]" value="Cancel" />
</form>
<!-- $i is the key for loop -->

И в вашем php-коде: -

$submits = $_POST['submit'];
// $submits loks like ['form_1']
// Now take the first key
$key = array_keys($submits)[0];
// This is the token for the given submit button
$token = $_POST['token'][$key];
0 голосов
/ 28 сентября 2018

Вы можете проверить наличие нескольких форм в PHP.

for ($i = 0; $i < $count; $i++){
    if (isset($_POST['submit'.$i])){ // check for every forms
        // insert your own logic
    }
}

Неважно, сколько у вас форм, это можно определить с помощью приведенного выше кода.

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