эхо 2 разных URL-адреса в зависимости от результатов отправки формы

У меня есть форма, которая заполняет данные из базы данных, пользователь выбирает различные интересующие строки, нажимая на флажок. Все успешно работает, как бы я сейчас ни пытался переадресовать страницу при отправке формы, перейдите в одно из 2 мест в зависимости от количества выбранных строк. (галочки отмечены.) Вот текущий сценарий, сжатый по соображениям безопасности.

if(isset($_POST['submit'])){

$DELETE = "DELETE FROM job_picks WHERE ID='$userid'";

$wpdb->query($DELETE);


foreach($_POST['check_list'] as $selected){

$rowCount = count($_POST['ref']);


for ($i=0; $i<$rowCount;$i++)
{

if ($selected == $_POST['ref'][$i])
$compcode = $_POST['COMPCODE'][$i];

$note = $_POST['note'][$i] ; // changed for security reasons
$time = $_POST['time'][$i]; // changed for security reasons
$date = $_POST['date'][$i]; // changed for security reasons



$SQL = " left out for security reasons but is correctly populating data";

$wpdb->query($SQL);

echo "<script>window.location='https://example.com/step2/';</script>";



} ?>

<br class="clear">

<?php } ?>

<br class="clear">

<?php } ?>

<br class="clear">

<?php }
?>

Я пытался изменить линию

 echo "<script>window.location='https://example.com/step2/';</script>";

в

 if ($rowcount == 1) {
echo "<script>window.location='https://example.com/step3/';</script>";
}
else
echo "<script>window.location='https://example.com/step2/';</script>";

но только казалось, что отправляет все результаты на шаг 3, в отличие от только тех представлений, в которых проверен только один элемент. Любое понимание будет оценено, и фрагменты всегда полезны заранее.

0

Решение

Ответ

Причина, по которой они все обращаются к трем, заключается в том, что вы делаете перенаправление внутри цикла. То есть на итерации цикла 0 вы выполняете <script>window.location = 'bla'и он пытается по существу перенаправить сразу (не сразу, но до того, как другие смогут что-то сделать)

Вам нужно переместить if предложения вне и после блока цикла.

Другие заметки

  • Пожалуйста, не кормите POST переменные прямо в запросы SQL. Пожалуйста.
  • Предпочитаю заголовки PHP перенаправлениям скриптов. В вашем комментарии упоминается, что он не работает, но вы используете WP, подумайте даже об использовании метода wp_redirect https://developer.wordpress.org/reference/functions/wp_redirect/
  • Удалить <br/>«S. Если вы разделили свою логику и просматриваете правильно, нет нужды в HTML, засоренном в обработчиках отправки.
1

Другие решения

Я видел ваш $rowCount а также $rowountНадеюсь это просто опечатка.

и вы можете отладить значение для каждого $rowCountв петле. что-то вроде в вашем коде для отладки:

foreach($_POST['check_list'] as $selected){

$rowCount = count($_POST['ref']);
//print the debug data
print_r($rowCount, true );
}
die();

также убедитесь, что $_POST['ref'] является действительным.

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

0

По вопросам рекламы [email protected]