php второй запрос из результатов первого запроса

-2

Я запускаю вкладки начальной загрузки, а на второй вкладке я хочу отображать все другие продукты в этой категории (около 15 записей), ниже запрос возвращает 1 запись, в которой есть идентификатор категории.

Идентификатор категории доступен в продукте, но не уверен, как записать второй запрос для возврата этих записей.

Я повторю его аналогично

echo "<p>Part #: " . $row["partNo"]. " - Name: " . $row["prodName"]. "</p>";

любая помощь будет хорошей.

структура таблицы

tblProducts

  • Я бы
  • PARTNO
  • ProdName
  • categoryID_FK

tblCategories

  • Я бы
  • catName

products.php

<?php include "db_conn.php"; ?>
<?php include "inc_products.php"; ?>  
    <div class="container">
      <h2><?php echo $prodName; ?></h2>
      <ul class="nav nav-tabs">
        <li><a data-toggle="tab" href="#home">Details</a></li>
        <li><a data-toggle="tab" href="#menu1">Categories</a></li>
      </ul>
      <div class="tab-content">
        <div id="home" class="tab-pane fade in active">
          <h3>Product # <?php echo $partNo; ?></h3>
          <p>Description: <?php echo $prodDesc; ?></p>
          <p>Category: <?php echo $catName; ?></p>
          <p>Cost: $<?php echo $unitPrice; ?></p>
          <p>Active: <?php echo ($discontinued == 0) ? "Yes" : "No"; ?></p>
        </div>
        <div id="menu1" class="tab-pane fade">
          <h3>Menu 1</h3>
          <?php echo $outp; ?>
        </div>
        <div id="menu2" class="tab-pane fade">
          <h3>Menu 2</h3>
          <p> </p>
        </div>
        <div id="menu3" class="tab-pane fade">
          <h3>Menu 3</h3>
          <p> </p>
        </div>
      </div>
    </div>

inc_products.php

<?php
  $partNoid = intval($_GET['partNo']);

  $query = "Select Distinct
        *
        From
        tblProducts Inner Join
        tblCategories On tblCategories.id = tblProducts.categoryID_FK Inner Join
        tblSuppliers On tblSuppliers.id = tblProducts.supplierID_FK Inner Join
        users On users.id = tblProducts.userID_FK
        Where partNo = $partNoid";
  $result = $conn->query($query);

  if($result === false) {
  trigger_error('Wrong SQL: ' . $query . ' Error: ' . $conn->error, E_USER_ERROR);
  } else {
    $result->data_seek(0);

        if($rs = $result->fetch_array(MYSQLI_ASSOC)) {

            $partNo = $rs["partNo"];
            $prodName = $rs["prodName"];
            $prodDesc = $rs["prodDesc"];
            $unitPrice = $rs["unitPrice"];
            $catName = $rs["catName"];
            $discontinued = $rs["discontinued"];
            $catID = $rs["categoryID_FK"];
        }
    }
  $result->free();

  $query2 = "Select
    *
    From
    tblProducts Inner Join
    tblCategories On tblCategories.id = tblProducts.categoryID_FK
    Where $partNoid AND tblProducts.categoryID_FK = $catID";
$result2 = $conn->query($query2);

if($result2 === false) {
  trigger_error('Wrong SQL: ' . $query2 . ' Error: ' . $conn->error, E_USER_ERROR);
  } else {
    $result2->data_seek(0);

            while($rs2 = $result2->fetch_array(MYSQLI_ASSOC)) {

                $outp .= $rs2["partNo"] ;
                $outp .= ' - '   . $rs2["prodName"] . '<br>';       
        }
    }
  $result2->free();
$conn->close();

?>

  • 0
    уточнить структуру базы данных и вопрос, пожалуйста
  • 0
    сколько записей возвращает запрос, если вы запустите его в графическом интерфейсе? Ожидаете ли вы более одной записи - я спрашиваю из-за if($rs = $result->fetch_array(MYSQLI_ASSOC)) { в отличие от while( $rs=$result->fetch_array(MYSQLI_ASSOC)) {
Показать ещё 2 комментария

1 ответ

1

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

$secondQuery = "Select Distinct
        *
        From
        tblProducts Inner Join
        tblCategories On tblCategories.id = tblProducts.categoryID_FK
        Where partNo = $partNoid AND tblProducts.catName = $catName";

//this is the same query as before, but now with a filter for category

$allCategoryResults = $conn->query($secondQuery);

//Then just loop through the results, as suggested by RamRaider in the comments.

while($tmp = $allCategoryResults->fetch_assoc()){
    //do whatever with your results
}

Еще лучше было бы использовать идентификатор категории в вашем запросе вместо имени категории, но вы можете легко поменять их, если вы выберете.

  • 0
    почти там, я опубликую то, что у меня сейчас, проблема в том, что он возвращает одну и ту же запись снова и снова.
  • 0
    Я обновил свой ответ - я сделал ошибку - попробуйте изменить fetch_array() на fetch_assoc() в вашем состоянии while.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню