繁体   English   中英

PHP / MySQL类别的帖子

[英]PHP/MySQL categories of posts

我正在尝试创建一个带有类别选择器的区域,并为每个类别显示帖子。 我选择类别,还要从mysql数据库中获取帖子,然后将其显示在php页面上。 我也使用Bootstrap 4。

在这里,我解释了我的问题: 问题说明

我的代码:

<div class="col center_content">
  <div class="categories_buttons">
    <small id="emailHelp" class="form-text text-muted">Choose a category:</small>
    <p>
      <?php
      $category_select = 'SELECT * FROM categories';
      $posts_select = 'SELECT * FROM categories, posts WHERE posts.post_categ_id=categories.categ_id';
      $category_query = $DBcon->query($category_select);
      $category_query2 = $DBcon->query($category_select);
      $posts_query = $DBcon->query($posts_select);
      if(isset($category_query)){
        while($category_row = $category_query->fetch_assoc()){

       ?>
      <button class="btn btn-primary btn-sm" type="button" data-toggle="collapse" data-target="#collapseCategory-<?= $category_row['categ_id'];?>" aria-expanded="false" aria-controls="collapseCategory-<?= $category_row['categ_id']; ?>">
      <?= $category_row['categ_name'] ?>
    </button>
  <?php
  }
}
?>
  </p>
  </div>

  <div class="clasa_cu_probleme">
    <?php
      if(isset($category_query2)){
        while($category_row2 = $category_query2->fetch_assoc()){
          if(isset($posts_query)){
            while($posts_row = $posts_query->fetch_assoc()){

     ?>
    <div class="collapse_div collapse" id="collapseCategory-<?=$category_row2['categ_id'];?>">
      <div class="card card-block">
        <?php echo $posts_row['post_name'];
        ?>
      </div>
    </div>
    <?php
        }
      }
    }
  }
     ?>

  </div>
</div>

您的$posts_query需要针对每个类别进行更新,因此您必须在$category_row2循环的每次迭代中进行更新。 我无法测试该解决方案,但它看起来像这样:

<div class="col center_content">
  <div class="categories_buttons">
    <small id="emailHelp" class="form-text text-muted">Choose a category:</small>
    <p>
      <?php
      $category_select = 'SELECT * FROM categories';

// this is moved to below
//      $posts_select = 'SELECT * FROM categories, posts WHERE posts.post_categ_id=categories.categ_id';
//      $posts_query = $DBcon->query($posts_select);

      $category_query = $DBcon->query($category_select);
      $category_query2 = $DBcon->query($category_select);
      if(isset($category_query)){
        while($category_row = $category_query->fetch_assoc()){

       ?>
      <button class="btn btn-primary btn-sm" type="button" data-toggle="collapse" data-target="#collapseCategory-<?= $category_row['categ_id'];?>" aria-expanded="false" aria-controls="collapseCategory-<?= $category_row['categ_id']; ?>">
      <?= $category_row['categ_name'] ?>
    </button>
  <?php
  }
}
?>
  </p>
  </div>

  <div class="clasa_cu_probleme">
    <?php
      if(isset($category_query2)){
        while($category_row2 = $category_query2->fetch_assoc()){

// This is where it gets updated with the new categ_id, then run the query
              $posts_select = 'SELECT * FROM categories, posts WHERE posts.post_categ_id='.category_row2['categ_id'];
          $posts_query = $DBcon->query($posts_select);

          if(isset($posts_query)){
            while($posts_row = $posts_query->fetch_assoc()){

     ?>
    <div class="collapse_div collapse" id="collapseCategory-<?=$category_row2['categ_id'];?>">
      <div class="card card-block">
        <?php echo $posts_row['post_name'];
        ?>
      </div>
    </div>
    <?php
        }
      }
    }
  }
     ?>

  </div>
</div>

编辑

这是一个更好的解决方案,因为您只需运行一次类别查询:

<div class="col center_content">
  <div class="categories_buttons">
    <small id="emailHelp" class="form-text text-muted">Choose a category:</small>
    <p>
      <?php
      $category_select = 'SELECT * FROM categories';

// this replaces the single query
      $posts_selects = array()


      $category_query = $DBcon->query($category_select);

      if(isset($category_query)){
        while($category_row = $category_query->fetch_assoc()){

// populate an array with page_queries values for later
$posts_selects[] = 'SELECT * FROM categories, posts WHERE posts.post_categ_id='.category_row['categ_id'];

       ?>
      <button class="btn btn-primary btn-sm" type="button" data-toggle="collapse" data-target="#collapseCategory-<?= $category_row['categ_id'];?>" aria-expanded="false" aria-controls="collapseCategory-<?= $category_row['categ_id']; ?>">
      <?= $category_row['categ_name'] ?>
    </button>
  <?php
  }
}
?>
  </p>
  </div>

  <div class="clasa_cu_probleme">
    <?php
      if(count($posts_selects) != 0){
          foreach($posts_selects as $posts_select)

          $posts_query = $DBcon->query($posts_select);

          if(isset($posts_query)){
            while($posts_row = $posts_query->fetch_assoc()){

     ?>
    <div class="collapse_div collapse" id="collapseCategory-<?=$category_row2['categ_id'];?>">
      <div class="card card-block">
        <?php echo $posts_row['post_name'];
        ?>
      </div>
    </div>
    <?php
        }
      }
    }
  }
     ?>

  </div>
</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM