首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建跳转菜单以跳转到不同类别,而无需拆分MySQL查询

问创建跳转菜单以跳转到不同类别,而无需拆分MySQL查询
EN

Stack Overflow用户
提问于 2017-12-05 17:05:59
回答 1查看 57关注 0票数 0

我有一个简单的MySQL表,它存储四个字段-类别、标题、描述、图像以及每个行的唯一ID。

我使用“按类别排序”,通过一个查询在页面上显示所有这些内容。

代码语言:javascript
复制
SELECT
RESOLUTIONS.CATEGORY,
RESOLUTIONS.ID,
RESOLUTIONS.TITLE,
RESOLUTIONS.DESCRIPTION,
RESOLUTIONS.IMAGE
FROM
RESOLUTIONS
ORDER BY
RESOLUTIONS.CATEGORY 

我想要创建一个跳转菜单,它将跳到页面上每个类别的第一行。这可以使用php吗?我知道如何创建跳转菜单,该菜单跳到div的ID锚点,但如何在重复区域中创建唯一标识符(可以跳转到)?

这是我现在的重复代码..。

代码语言:javascript
复制
<?php
while(!$DETAILS->atEnd()) {
?>   
 <div class="row g-my-10 g-color-black">
    <?php if($DETAILS->getColumnVal("IMAGE")!= "") { ?>
    <div class="col-md-9">
        <h2><?php echo($DETAILS->getColumnVal("TITLE")); ?></h2>
        <?php echo($DETAILS->getColumnVal("DESCRIPTION")); ?>
    </div>
    <div class="col-md-3"><img src="images/<?php echo($DETAILS->getColumnVal("IMAGE")); ?>" class="img-fluid"></div>
    <? } else { ?>
    <div class="col-md-12">
        <h2><?php echo($DETAILS->getColumnVal("TITLE")); ?></h2>
        <?php echo($DETAILS->getColumnVal("DESCRIPTION")); ?>
    </div>
    <?php } ?>
  </div>

 <?php

    $DETAILS->moveNext();
}
$DETAILS->moveFirst(); //return RS to first record
?>
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-12-05 19:21:10

在每次迭代中,检查类别是否与前面的类别不同,并创建一个锚。

代码语言:javascript
复制
<?php
// set any initial value that does not match an empty category (if you have them)
$lastCategory = false;

while(!$DETAILS->atEnd()) {

 <div class="row g-my-10 g-color-black">
<?php
    // this category is different than the last: create anchor
    if ($lastCategory !== $DETAILS->getColumnVal("CATEGORY")) {
        echo '<a name="category-' . $DETAILS->getColumnVal("CATEGORY") . '"></a>';
        // set the compare-value to the current category
        $lastCategory = $DETAILS->getColumnVal("CATEGORY");
    }
?>
    <?php if($DETAILS->getColumnVal("IMAGE")!= "") { ?>
    <div class="col-md-9">
        <h2><?php echo($DETAILS->getColumnVal("TITLE")); ?></h2>
        <?php echo($DETAILS->getColumnVal("DESCRIPTION")); ?>
    </div>
    <div class="col-md-3"><img src="images/<?php echo($DETAILS->getColumnVal("IMAGE")); ?>" class="img-fluid"></div>
    <? } else { ?>
    <div class="col-md-12">
        <h2><?php echo($DETAILS->getColumnVal("TITLE")); ?></h2>
        <?php echo($DETAILS->getColumnVal("DESCRIPTION")); ?>
    </div>
    <?php } ?>
  </div>

 <?php

    $DETAILS->moveNext();
}
$DETAILS->moveFirst(); //return RS to first record
?>

注意:根据您的网格系统(这是引导吗?),您可能必须在列中甚至<h2>中放置锚。您也可能希望重构标题/描述列的生成,这样您就不会重复自己了。有点像

代码语言:javascript
复制
<?php
    if ($DETAILS->getColumnVal("IMAGE")!= "") {
        $cols = '9';
    } else {
        $cols = '12';
    }
?>
<div class="col-md-<?php echo $cols ?>">
    <h2><?php echo($DETAILS->getColumnVal("TITLE")); ?></h2>
    <?php echo($DETAILS->getColumnVal("DESCRIPTION")); ?>
</div>
<?php
    if ($DETAILS->getColumnVal("IMAGE")!= "") {
?>
<div class="col-md-3"><img src="images/<?php echo($DETAILS->getColumnVal("IMAGE")); ?>" class="img-fluid"></div>
<?php
    }
?>

还请注意,根据PSR-1,您应该使用<?php或回送快捷方式<?=,而不仅仅是<?

我知道这是个人选择,也取决于您的文件主要包含什么(HTML或PHP),但我个人更喜欢回显HTML代码片段而不是打开和关闭PHP标记,因为我发现它更容易阅读(性能优势也很小)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47658974

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档