Передача значений отмеченных checbox

110
23 декабря 2020, 11:30

У меня есть сайт с несколькими страницами с checbox, мне нужно сначала с одной страницы запомнить значения выбранных потом со следующей, передать всё это в файл обработчик, и там уже идёт выборка через запрос из бд, на основе этих значений. Результат выводится на отдельной странице. Когда у меня была одна страница с checbox, данные передавались через стандартный action и всё работало, но с 2 так не проходит.Подскажите как правильнее это реализовать?

страница с 1 checbox

<form action='function.php' method="post">
            <ul>
                <li>
                    <input  type="checkbox" name='pid[]' value="1"/ >Рязанский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="2"/>Спасский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="3"/>Касимовский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="4"/>Клепиковский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="5"/>Кораблинский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="6"/>Михайловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="7"/>Пронский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="8"/>Ряжский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="9"/>Сапожковский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="10"/>Сараевский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="11"/>Сасовский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="12"/>Скопинский</li>
               <li>
                    <input  type="checkbox" name='pid[]' value="13"/>Шацкий</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="14"/>Шиловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="15"/>Старожиловский</li>
                <li>
                    <input  type="checkbox" name='pid[]' value="16"/>Кадомский</li>
                <li>
                    <input class="knopka" type="submit" name="formSubmit" value="Далее"/>
                </li>

            </ul>

            </form>

страница со 2 checbox

 <form action='function.php' method="post">
            <ul>
               <li>
                    <input  type="checkbox" name='pit[]' value="1"/>Технический профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="2"/>Естественнонаучный профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="3"/>Социально-экономический профиль</li>
                <li>
                    <input  type="checkbox" name='pit[]' value="4"/>Гуманитарный профиль</li>
                <li>
                    <input class="knopka" type="submit" name="formSubmit" value="Далее"  />
                </li>
            </ul>
            </form>

обработчик function.php

<?php
header("Content-Type: text/html; charset=utf-8");
require_once 'connect.php';
ini_set('display_errors','On'); 
error_reporting(E_ALL); 
global $massiv;
global $massivv;
global $aDoor;
global $array;
global $arrray;
if (isset($_POST['pid'])) { $aDoor = $_POST['pid'];}
if (isset($_POST['pit'])) { $aDooor = $_POST['pit'];}
   //выборка регионов
  if(empty($aDoor)) 
  {
        $posts = get_categories();    
  } 
  else
  {
$N = count($aDoor);
      for($i=0; $i < $N; $i++)
    {
       $array[] .= $aDoor[$i];
        $massiv = implode(",", $array);     
    }
          $posts = get_categoriess();    
  }
echo ($massiv);
 //выборка профилей
 if(empty($aDooor)) 
{
       $posts = get_categories();    
 } 
  else
 {
$N = count($aDooor);
  for($i=0; $i < $N; $i++)
   {
    $arrray[] .= $aDooor[$i];
    $massivv = implode(",", $arrray); 
    }
          $posts = get_categoriesss();    
 }
print_r ($massivv);

    //Все записи
function get_categories() {
    global $link;   
    $sql =  'SELECT * FROM ссузы';
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuz () {
    global $link;
    $sql = 'SELECT * FROM ссузы';
    $result = mysql_query($link,$sql);
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;     
}
//Записи по регионам  
    function get_categoriess() {
    global $link;
    global $massiv;
    $sql =  "SELECT * FROM `ссузы` WHERE id IN ($massiv)" ;
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuzz () {  
    global $link;
    global $massiv;
    $sql =  "SELECT * FROM `ссузы` WHERE id IN ($massiv)";
    $result = mysql_query($link,$sql);
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;   
}
//Записи по профилям
    function get_categoriesss() {   
    global $link;
    global $massivv;     
    $sql =  "SELECT * FROM `ссузы` WHERE spec IN ($massivv)" ;
    $result = mysqli_query($link, $sql);
    $categories = mysqli_fetch_all($result, MYSQLI_ASSOC);
    return $categories;
}
function get_ssuzzz () {
    global $link;
    global $massivv;  
    $sql =  "SELECT * FROM `ссузы` WHERE spec IN ($massivv)";    
    $result = mysql_query($link,$sql);    
    $posts = mysqli_fetch_all($result,MYSQLI_ASSOC);
    return $posts;
}
?>

здесь выводится нужная мне информация

<?php 
header("Content-Type: text/html; charset=utf-8");
require_once 'connect.php';
require_once 'Function.php';
?>

<htmL>  
<head>
     <title>Список вузов</title>
     <link rel="stylesheet" href="css/vuz.css">
</head>   
<body>
    <?php
         ini_set('display_errors','On'); 
error_reporting(E_ALL);
?>
     <div class="header1">
         <p class="zag">Список ссузов</p>
    </div> 
<?php foreach($posts as $post): ?>
 <div class="product-wrap" >
  <div class="product-item">
    <img src="<?=$post['img']?>">
    <div class="product-buttons">
      <a href="<?=$post['href']?>" class="button">Подробнее</a>
    </div>
  </div>
  <div class="product-title">
    <p><?=$post['Ssuz']?></p>
  </div>
</div>
    <?php endforeach;?>

Answer 1

Подскажите как правильнее это реализовать?

Правильнее начать с именования таблиц и полей в БД.

Для передачи значений выбранных checkbox из одной формы в форму на другой странице можно воспользоваться скрытым полем type="hidden":

index.php

<form action="steps.php" method="post">
  <fieldset>
    <legend>Выберите город</legend>
    <label><input type="checkbox" name="cities[]" value="62" /> Рязань<label>
    <label><input type="checkbox" name="cities[]" value="77" /> Москва<label>
  </fieldset>
  <button type="submit">Далее >></button>
</form>

steps.php

<?php
if (empty($_POST['cities'])) {
  die('Не выбран город.');
}
// Предварительно склеиваем города,
// для вставки в скрытое поле.
$cities = array_map('intval', $_POST['cities']);
$cities = implode(',', $cities);
?>
<form action="complete.php" method="post">
  <fieldset>
    <legend>Выберите район</legend>
    <!--
      Используем скрытое поле.
      Его значение будет передано на следующую страницу.
    -->
    <input type="hidden" name="cities" value="<?= $cities ?>" />
    <label><input type="checkbox" name="districts[]" value="202" /> Восточный</label>
    <label><input type="checkbox" name="districts[]" value="200" /> Центральный</label>
  </fieldset>
  <button type="submit">Далее >></button>
</form>

complete.php

<?php
if (empty($_POST['districts']) or empty($_POST['cities'])) {
  die('Не выбран район или город.');
}
echo '<pre>';
echo 'Выбран список городов: ' . $_POST['cities'], '<br>';
// Склеиваем районы
// для выборки из БД.
$districts = array_map('intval', $_POST['districts']);
$districts = implode(',', $districts);
echo 'Выбран список районов: ' . $districts;
echo '</pre>';

NB Никогда не храните в скрытых полях пароли или другие конфиденциальные данные.

READ ALSO
Как сгруппировать данные при выводе из базы в html?

Как сгруппировать данные при выводе из базы в html?

подскажите как правильно организовать идею:

121
Join 2 коннектов

Join 2 коннектов

Столкнулся с проблемой при выборке данных MySql 56 основная часть данных храниться в одном коннекте и справочники хранятся в другом коннекте...

104
При нажатии кнопки формы ничего не происходит

При нажатии кнопки формы ничего не происходит

PHP html в разных файлахНужно по нажатию кнопки submit выполнить php

110
Вернуть исходное состояние при false

Вернуть исходное состояние при false

Не выведет ничего, тк нет пробела

136