Как отправить выбранную категорию на другую страницу с помощью php без отображения в URL-адресе - PullRequest
0 голосов
/ 08 мая 2020

Здравствуйте, я новичок в веб-разработке. У меня две страницы: 1. show_category. php (Здесь отображаются все категории) 2. список. php (Все продукты этой категории отображаются в таблице) Первая страница отображает категорию из базы данных.

show_category. php:

 <div class="row">
         <?php 
            include 'connection.php';

            $query="SELECT * FROM subcat WHERE pid='1' ";
            $result=mysqli_query($conn,$query);
            while ($rows=mysqli_fetch_array($result)) {
          ?>
        <div class="col-xl-3 col-md-6 mb-4">
          <div class="card border-left-primary shadow h-100 py-2">
            <a href="javascript:$('#myform_id').submit();">
              <form id="myform_id" method="post" role="form" action="listing.php">
                <div class="card-body">
                  <div class="row no-gutters align-items-center">
                    <div class="col mr-2">
                      <!-- <div class="text-xs font-weight-bold text-primary text-uppercase mb-1">Earnings (Monthly)</div> -->
                      <div class="h5 mb-0 font-weight-bold text-gray-800">
                        <p><?php echo $rows['name'];?>
                            <?php echo $rows['id']; ?> 
                        </p>
                      </div>
                    </div>
                  </div>
                </div>
              </form>
            </a>
          </div>
        </div>
         <?php
            }
          ?>    
      </div>

Я что-то пробовал

<a href="javascript:$('#myform_id').submit();">
              <form id="myform_id" method="post" role="form" action="listing.php">
                <div class="card-body">
                  <div class="row no-gutters align-items-center">
                    <div class="col mr-2">
                      <div class="h5 mb-0 font-weight-bold text-gray-800">
                        <p><?php echo $rows['name'];?>
                            <?php echo $rows['id']; ?> 
                            <input type="hidden" name="name" value="<?php echo $rows['name'];?>">
                            <input type="hidden" name="pid" value="<?php echo $rows['id'];?>">
                        </p>
                      </div>
                    </div>
                  </div>
                </div>
              </form>
            </a>

Но это всегда отправляет только первую категорию в листинг. php? Как я могу получить название и идентификатор выбранной категории в листинге. php

объявление. php:

$id=$_POST['id'];$name=$_POST['name'];echo $name;echo $id;

Ответы [ 2 ]

0 голосов
/ 08 мая 2020

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

  1. show_categories. php: L oop через строки подкатегории для создания ссылок с переменными GET
  2. списки. php: возьмите переменные GET и найдите связанные списки

категории. php

include 'connection.php';
$query="SELECT * FROM subcat WHERE pid='1' ";
$result=mysqli_query($conn,$query);
$rows=mysqli_fetch_array($result);

foreach($row as $category) {
    echo "<p><a href=listing.php?id='".$category['id']."'>".$category['name']."</a></p>";
}

список. php

if(isset($_GET['id']} {
     //get your listings from the database with the category id and display them
}

Предполагается, что в вашей таблице списков есть столбец подкатегории с идентификатором категории, с которой он связан.

Альтернатива с POST.

категории. php

include 'connection.php';
$query="SELECT * FROM subcat WHERE pid='1' ";
$result=mysqli_query($conn,$query);
$rows=mysqli_fetch_array($result);

foreach($row as $category) {
    echo "<div><form method='POST' action='listing.php'>";
    echo "<input type='hidden' name='id' value='".$category['id']."'>";
    echo "<input type='hidden' name='name' value='".$category['name']."'>";
    echo "<p onclick='this.closest('form').submit();return false;'>".$category['name']."</p>";
    echo "</form></div>";
}

список. php

if(isset($_POST['id']} {
 //get your listings from the database with the category id and display them
}
0 голосов
/ 08 мая 2020

Вам нужна переменная $ _POST вместо переменной $ _GET.

Итак, внутри вашего while l oop вместо ссылки типа:

href=products.php?cat_id=$id

Что вы можете затем доступ к странице ваших продуктов с помощью $ _GET.

У вас должен быть элемент формы с вводом, скрытым значением $id, а сама форма должна иметь method='POST' и action='products.php'.

Затем выполняется перенаправление на страницу продуктов без добавленного бита в URL-адресе, и вы можете получить к нему доступ с помощью $ _POST

В этом случае вам потребуется отдельный элемент формы для каждого элемента в вашем l oop.

Редактировать

$query="SELECT * FROM subcat WHERE pid='1'";
$result=mysqli_query($conn,$query);
while ($rows=mysqli_fetch_array($result)) {
    echo '<form method="POST" action="listings.php">';
    echo '<input type="hidden" value="'.$row['id'].'" name="id">;
    echo '<input type="submit" value="Go to this ID">';
    echo '</form>';
}

Новая форма для каждого идентификатора внутри while l oop или вы получите только первый.

Затем в ваших списках . php, просто используйте $_POST['id'] для доступа.

...