Отправка формы (кнопки) с отмеченным чек-боксом на разные URL адреса через php файл

Mike Jun

Новичок
Всем привет!

Как сделать отправку формы на разные URL исходя из отмеченных чек-боксов. У меня получилось это реализовать, только с 1 чек-боксом. Но если добавить второй. То php не распознает пришедшие данные, как надо.

**Задача:**
Как сделать, чтобы перенаправление было на 4 разных URL исходя из отмеченной комбинации чек-бокса у кнопки.

1) Отправка на 1 URL при чекбоксе 1
2) Отправка на 2 URL при чекбоксе 2
3) Отправка на 3 URL при чекбоксе 1 и 2
4) Отправка на 4 URL без отм. чекбоксов

HTML

Код:
<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

    <form class="form-horizontal" action="http://URL/bamp/bump1.php" method="post">
    <fieldset>

    <!-- Form Name -->
    <legend>PARAMETR</legend>

    <!-- Multiple Checkboxes -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="checkboxes">form</label>
      <div class="col-md-4">
      
      
        <!-- CHECK-BOX1 -->
      <div class="checkbox">
        <label for="checkboxes1">
          <input type="checkbox" name="checkboxes1" id="checkboxes1" value="1">
          checkboxes1
        </label>
        </div>
        
        <!-- CHECK-BOX2 -->
      <div class="checkbox">
        <label for="checkboxes2">
          <input type="checkbox" name="checkboxes2" id="checkboxes2" value="2">
          checkboxes2
        </label>
        </div>
        
        
      </div>
    </div>

    <!-- Button -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="singlebutton"> </label>
      <div class="col-md-4">
        <button id="singlebutton" name="singlebutton" class="btn btn-primary">START!</button>
      </div>
    </div>

    </fieldset>
    </form>

<!-- end snippet -->

**PHP**
И вот мой PHP файл, который принимает эту форму для последующего редиректа.

Код:
<?php
if($_POST['checkboxes1'] == 1 ){
    header("Location: http://URL/index1.html");
}
if($_POST['checkboxes2'] == 2){
    header("Location: http://URL/index2.html");
}

else {
    header("Location: http://URL/index3.html");
}

?>

Заранее спасибо за любую помощь и подсказки.
 

Valick

Новичок
PHP:
<?php
$redirect = [
    '10' => 'http://URL/index1.html',
    '01' => 'http://URL/index2.html',
    '11' => 'http://URL/index3.html',
    '00' => 'http://URL/index4.html',
];
if (isset($_POST['singlebutton'])) {
    $checkbox = array_replace(array_fill(1, 2, 0), $_POST['checkboxes'] ?? []);
    $checkbox = implode('', $checkbox);
    header("Location: " . $redirect[$checkbox]);
    exit();
}
?>
<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-html -->

    <form class="form-horizontal" method="post">
    <fieldset>

    <!-- Form Name -->
    <legend>PARAMETR</legend>

    <!-- Multiple Checkboxes -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="checkboxes">form</label>
      <div class="col-md-4">
     
     
        <!-- CHECK-BOX1 -->
      <div class="checkbox">
        <label for="checkboxes1">
          <input type="checkbox" name="checkboxes[1]" id="checkboxes1" value="1">
          checkboxes1
        </label>
        </div>
       
        <!-- CHECK-BOX2 -->
      <div class="checkbox">
        <label for="checkboxes2">
          <input type="checkbox" name="checkboxes[2]" id="checkboxes2" value="1">
          checkboxes2
        </label>
        </div>
       
       
      </div>
    </div>

    <!-- Button -->
    <div class="form-group">
      <label class="col-md-4 control-label" for="singlebutton"> </label>
      <div class="col-md-4">
        <button id="singlebutton" name="singlebutton" class="btn btn-primary">START!</button>
      </div>
    </div>

    </fieldset>
    </form>

<!-- end snippet -->
 

WMix

герр M:)ller
Партнер клуба
Как сделать отправку формы на разные URL исходя из отмеченных чек-боксов.
Как сделать, чтобы перенаправление было на 4 разных URL исходя из отмеченной комбинации чек-бокса у кнопки
я одного не понял,
тебе форму нужно на разные url слать (с помошью javascript подменить action) или
после отправки формы на один и тотже url после обработки перенаправится на разные url в зависимости от checkbox.
 
Последнее редактирование:

Mike Jun

Новичок
Спасибо большое за помощь. Это помогло мне.

Так же, коллеги помогли мне с еще одним вариантом. Мало ли, кому-то пригодится.

Код:
if ($_POST['checkboxes1'] == 1 && $_POST['checkboxes2'] == 2) {
    header("Location: http://URL/index3.html");
} elseif ($_POST['checkboxes1'] == 1) {
    header("Location: http://URL/index1.html");
} elseif ($_POST['checkboxes2'] == 2) {
    header("Location: http://URL/index2.html");
} else {
    header("Location: http://URL/index4.html");
}
 

Mike Jun

Новичок
На Киберфоруме, мне ребята помогли еще таким вариантом на PHP.

PHP:
<?php
// echo "<pre>"; print_r($_POST); echo "</pre>";
 
if(isset($_POST["checkboxes"])){
    $checkboxesArray=$_POST["checkboxes"];
    switch (array_sum($checkboxesArray)) {
        case 1:
             header("Location: http://URL/index1.html");
            break;
        case 2:
             header("Location: http://URL/index2.html");
            break;
        case 3:
             header("Location: http://URL/index3.html");
            break;
    }
}else{
      header("Location: http://URL/index4.html");
}
 
?>
 

WMix

герр M:)ller
Партнер клуба
читается плохо, значения checkbox вдруг принимают не нужный математический смысл.

конечно если таких боксов будет 8 и на выходе 256 различных локаций, то этот вариант будет предпочтительней
 

Valick

Новичок
Потому, что рассчитан только на два чекбокса. Добавь еще один вариант чекбокса (1,2,3) и ты уже не узнаешь какие чекбоксы выбраны 1и2 или только 3. Я уже молчу про большее количество вариантов.

P.S. мой вариант - это логическое продолжение array_sum.
 
Сверху