【问题标题】:how can i dynamically generate different bootstrap tabs with php如何使用 php 动态生成不同的引导选项卡
【发布时间】:2018-01-05 16:16:08
【问题描述】:

我想为每个帖子生成不同的引导导航选项卡,并且选项卡列表会有所不同,基本上基于某些条件。有些帖子可能有 3 个标签,有些帖子可能有 2 个标签,但至少应该有 1 个标签。像下图

我面临的每个帖子第一个选项卡类的问题应该是 .active - 我无法为同一个帖子的其余选项卡维护。每个帖子和不同选项卡内容的下一个选项卡 ID 无法正确同步。它被重复了。另请注意查询是完美的。只是逻辑问题

代码结构如下:

 <ul class="nav nav-tabs">
    <?php  
        $qu= "sql query for generating all tabs with some condition";
        $rr=mysqli_query($conn,$qu);
        while($tab1 =mysqli_fetch_array($rr)){ 
    ?>
       <li class=""><a data-toggle="tab" href="#<?php echo $tab1['field_name']; ?>"><?php echo $tab1['field_name'];?></a></li>
           // class active problem
    <?php } ?>  
    
  </ul>

  <div class="tab-content">
      <?php 
        $qu= "sql query for generating all tabs with some condition"; //again i run same query of above
        $rr=mysqli_query($conn,$qu);
        while($tab1 =mysqli_fetch_array($rr)) { 
      ?>
      <div id="<?php echo $tab1['field_name']; " class="tab-pane fade in active">  //here also fade in active
         <table> 
           <thead
            <tr> all rows </tr>
          </thead
           <?php  
                $qu1= "sql query for generating result";
                $resout = mysqli_query($conn, $qu1);
                if(mysqli_num_rows($resout) > 0){  
                while($row2 =mysqli_fetch_array($resout)){
           ?>
          <tbody
            <tr> <td><?php echo $row2['field_name'];?></td>  </tr>
          </tbody>
             <?php 
                } 
                   }
                else {
                       echo 'No result Found';
                   } 
             ?>
         </table>

       </div>
    </div>
     <?php } ?> <!-- End of the While Loop -->
 </div>

请告诉我如何解决这个逻辑,以便每个帖子的所有选项卡都应该正确出现在第一个带有 .active 类的选项卡上。如果问题无法清楚理解,请发表评论。我会换行。因为我需要这个帮助。

【问题讨论】:

  • 为了达到您的要求,您可以引入一个带有计数器值的变量。这可以在 while 循环开始之前引入,并且应该在循环结束时增加 1。然后使用if 条件检查计数器的值。如果是1,则回显active类,else留空。

标签: php


【解决方案1】:

你可以试试这个方法

<?php $tab_array = array(array( 'name' => 'Section A' , 'html' => 'HTML DATA OF Section A' ) , array( 'name' => 'Section B' ,  'html' => 'HTML DATA OF Section B' )); ?>

<ul class="nav nav-tabs">
    <?php foreach($tab_array as $key => $tab){  ?>
        <?php if($key==0){ ?>
            <li class="active"><a data-toggle="tab" href="#section<?php echo $key; ?>"><?php echo $tab['name']; ?></a></li>
        <?php }else{ ?>
             <li><a data-toggle="tab" href="#sectionB<?php echo $key; ?>"><?php echo $tab['name']; ?></a></li>
        <?php } ?>
    <?php } ?>
</ul>


<div class="tab-content">

    <?php foreach($tab_array as $key => $tab){  ?>
        <?php if($key==0){ ?>
            <div id="section<?php echo $key; ?>" class="tab-pane fade in active">
                <?php echo $tab['html']; ?>
            </div>
        <?php }else{ ?>
             <div id="section<?php echo $key; ?>" class="tab-pane fade in">
                <?php echo $tab['html']; ?>
            </div>
        <?php } ?>
    <?php } ?>     


 </div>

【讨论】:

    【解决方案2】:

    有很多方法可以实现这一点。例如,您可以在 while 循环外设置一个值为 1 的变量。

    $flag = 1;
    

    然后在while循环中,在第一次迭代中,

    if($flag == 1){
        print('<li class="active">');
        $flag = 0;
    }
    else{
        print('<li>');
    }
    

    此外,您应该考虑更好地构建代码。首先在一个单独的文件中获取所有数据,然后将其传递给您的 HTML 模板。

    【讨论】:

      【解决方案3】:
      <ul class="nav nav-tabs">
          <?php  
              $qu= "sql query for generating all tabs with some condition";
              $rr=mysqli_query($conn,$qu);
              $num = 0;
              while($tab1 =mysqli_fetch_array($rr)){ 
          ?>
             <li <?php if($num == 0){ ?> class="active" <?php }else{?> class="" <?php }?>><a data-toggle="tab" href="#<?php echo $tab1['field_name']; ?>"><?php echo $tab1['field_name'];?></a></li>
      
          <?php
          $num++;
          } ?>  
      
        </ul>
      
        <div class="tab-content">
            <?php 
              $qu= "sql query for generating all tabs with some condition"; //again i run same query of above
              $rr=mysqli_query($conn,$qu);
              $num = 0;
              while($tab1 =mysqli_fetch_array($rr)) { 
      
            ?>
            <div id="<?php echo $tab1['field_name']; ?>" <?php if($num == 0){ ?> class="tab-pane fade in active" <?php }else{?> class="tab-pane fade in" <?php }?> >  
               <table> 
                 <thead>
                  <tr> all rows </tr>
                </thead>
                 <?php  
                      $qu1= "sql query for generating result";
                      $resout = mysqli_query($conn, $qu1);
                      if(mysqli_num_rows($resout) > 0){  
                      while($row2 =mysqli_fetch_array($resout)){
                 ?>
                <tbody>
                  <tr> <td><?php echo $row2['field_name'];?></td>  </tr>
                </tbody>
                   <?php 
                      } 
                         }
                      else {
                             echo 'No result Found';
                         } 
                   ?>
               </table>
      
             </div>
      
           <?php 
           $num++;
           } ?> <!-- End of the While Loop -->
           </div>
       </div>
      

      虽然我不明白这个问题,但我相信它会帮助活动。

      检查一下我已经解决了活动问题

      【讨论】:

        猜你喜欢
        • 2020-09-07
        • 2013-12-06
        • 1970-01-01
        • 2016-02-07
        • 2021-05-24
        • 2011-05-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多