【问题标题】:How can i create a new set of columns to my code below instead of row?如何在下面的代码中创建一组新的列而不是行?
【发布时间】:2016-07-03 20:30:54
【问题描述】:

我正在尝试为我的同事创建一个信息站点,他们可以在其中添加他们拥有的所有信息,这样他们就不需要写下来了。变量 $cam_loc 显示特定设备的位置。当我使用下面的代码而不是每个位置使用一个面板标题时,如果该位置有超过 1 个设备,它会复制该位置。我想创建一个条件来验证该位置是否重复,如果是这样,而不是添加另一个面板标题,它应该在该位置添加另一个包含第二对信息的列。

这是代码:

<?php
$cam = $db->prepare('select * from camere');
$cam->execute();

while ($cams = $cam->fetch(PDO::FETCH_OBJ)) {?>
  <ul class="list" style="list-style: none;">                                                                               
    <div class="panel panel-primary">
      <div class="panel-heading">
        <li><h3 class="panel-title"><?php $cam_loc = $cams->locatie; ?><?php echo $cam_loc;?></h3> </li>
      </div>

      <div class="panel-body">
        <div class="row">
          <div class="col-md-2" align="center">
            <div class="list-group">
              <a class="list-group-item">Model: <strong><?php echo $cams->model; ?></strong></a>
              <a class="list-group-item">Ip Intern: <strong><?php echo $cams->ip_int; ?></strong></a>
              <a class="list-group-item">Ip Extern: <strong><?php echo $cams->ip_ext; ?></strong></a>
              <a class="list-group-item">Port: <strong><?php echo $cams->port; ?></strong></a>
              <a class="list-group-item">User: <strong><?php echo $cams->user; ?></strong></a>
              <a class="list-group-item">Pass: <strong><?php echo $cams->pass; ?></strong></a>
            </div>
          </div>
        </div>
      </div>
    </div>          
  </ul>
<?php } ?>          

【问题讨论】:

  • 听起来应该从数据库中做一些事情,你能SELECT * FROM camere ORDER BY some_location_field吗?
  • 好吧,这无济于事,因为 'locate' 在 'camere' 表中被放置了 2 次,而当我显示它时它也是一样的。可能我需要阅读关系数据库。以为有一个js技巧可以克服这个

标签: javascript php mysql conditional


【解决方案1】:

首先,您需要在 SQL 语句中按标题对结果进行排序,这会将它们组合在一起,然后使用 if 语句来确定当前记录是否与前一个记录具有相同的标题。

<?php
$cam = $db->prepare('select * from camere');
$cam->execute();

$heading = "";

while ($cams = $cam->fetch(PDO::FETCH_OBJ)) {?>
  <ul class="list" style="list-style: none;">                                                                               
    <div class="panel panel-primary">

      <?php $cam_loc = $cams->locatie;

      if ($heading != $cam_loc) { ?>

      <div class="panel-heading">
        <li><h3 class="panel-title"><?php echo $cam_loc; ?></h3> </li>
      </div>

      <?php }
          //Update $heading ready for the next row.
          $heading = $cam_loc;
      } ?>

      <div class="panel-body">
        <div class="row">
          <div class="col-md-2" align="center">
            <div class="list-group">
              <a class="list-group-item">Model: <strong><?php echo $cams->model; ?></strong></a>
              <a class="list-group-item">Ip Intern: <strong><?php echo $cams->ip_int; ?></strong></a>
              <a class="list-group-item">Ip Extern: <strong><?php echo $cams->ip_ext; ?></strong></a>
              <a class="list-group-item">Port: <strong><?php echo $cams->port; ?></strong></a>
              <a class="list-group-item">User: <strong><?php echo $cams->user; ?></strong></a>
              <a class="list-group-item">Pass: <strong><?php echo $cams->pass; ?></strong></a>
            </div>
          </div>
        </div>
      </div>
    </div>          
  </ul>
<?php } ?>        

您可能需要在这些新代码行中稍微移动一些 HTML 标记,以便为您提供所需的布局,但由于它在上面,您不会为每条记录获得一个新标题。

【讨论】:

  • 想法不错,但最后 3 个 div 仍未关闭,每个面板都进入最后一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多