【问题标题】:Echo toppers in a leaderboard using only 1 query仅使用 1 个查询在排行榜中回显排行榜
【发布时间】:2016-12-08 06:45:19
【问题描述】:

我使用下面的 php 代码从 EmployeeTable 中检索前 8 个(连接部分我没有包括在下面,因为它无关紧要):

$q4 = "select top 8 *
from EmployeeTable
order by LevelFieldTotal desc";

$stmt3=sqlsrv_query($conn,$q4);
if($stmt3==false)
{
echo 'error to retrieve info !! <br/>';
die(print_r(sqlsrv_errors(),TRUE));
}
$toprow2=sqlsrv_fetch_array($stmt3);

我想在这个排行榜中呼应前 8 名:https://jsfiddle.net/o20n61eu/4/

我试图在 html 中回应它,但我得到回应的只有最优秀的人。

我如何在排行榜中回显,这样我就可以通过上面的 php 变量看到排行榜中的所有前 8 人,其中包含 top8。

我不想为每个人单独做。我想使用上面的查询,只通过一个查询获取top8并回显它。

html 的一部分,我试图在其中回显 php 变量:(它也在上面的 fiddele 链接中)

<div id="overalllb" class="leadboardcontent" style="display:none">
  <div class="leaderboard">

    <ol>
      <li>
        <mark>
          <?php echo "". $toprow2[ 'EmployeeName'] . ""?>
        </mark>
        <small><?php echo "". $toprow2['Total_points_Rewarded'] .""?></small>
      </li>
      <li>
        <mark>Brandon Barnes1</mark>
        <small>3101</small>
      </li>
      <li>
        <mark>Raymond Knight1</mark>
        <small>2192</small>
      </li>
      <li>
        <mark>Trevor McCormick1</mark>
        <small>2145</small>
      </li>
      <li>
        <mark>Andrew Fox1</mark>
        <small>2103</small>
      </li>
      <li>
        <mark>And1rew Fox1</mark>
        <small>2103</small>
      </li>
      <li>
        <mark>Tre1vor McCormick1</mark>
        <small>2145</small>
      </li>
      <li>
        <mark>Andrew Fox1</mark>
        <small>2103</small>
      </li>

    </ol>
  </div>
</div>

@Magnus 和 @Mayank 建议的解决方案

<div id="overalllb" class="leadboardcontent" style="display:none">
  <div class="leaderboard">

    <ol>
      <li>

        <mark>
          <?php while( $toprow2=s qlsrv_fetch_array( $stmt3) ) { echo $toprow2[ 'overallRank'] . "&nbsp;&nbsp;&nbsp;".$toprow2[ 'EmployeeName'] . "&nbsp;&nbsp;&nbsp;".$toprow2[ 'Total_points_Rewarded']. "<br/>";} ?>
        </mark>

      </li>
    </ol>
  </div>
</div>

请帮助。谢谢。上帝保佑。

【问题讨论】:

  • 如果您查看sqlsrv_fetch_array() 的手册,您会看到一个示例。 (提示:使用while()-loop)。您目前只是从结果中获取第一行。
  • @Magnus Eriksson 我明白了。但如果我这样做,我将不得不更改整个 css。另外,如果您在此处查看 Javscript,我会在单击其中的元素后立即弹出一个窗口。如果我使用您的解决方案,如何将其更改为工作。我在上面的代码中提到了您的解决方案。谢谢很多。上帝保佑。

标签: javascript php html css sql-server


【解决方案1】:

使用这个:

function myFunction() {
    var input, filter, ol, li, a, i;
    input = document.getElementById("search52");
    filter = input.value.toUpperCase();
    ol = document.getElementById("myOL");
    li = ol.getElementsByTagName("li");
    divs=li[0].getElementsByClassName("parent-div");
    for (i = 0; i < divs.length; i++) {
        a = divs[i].getElementsByClassName("name")[0];
        if (a.innerHTML.toUpperCase().indexOf(filter) > -1) {
            divs[i].style.display = "";
        } else {
            divs[i].style.display = "none";
        }
    }
}

【讨论】:

    【解决方案2】:

    检查这一行:

    $stmt3=sqlsrv_query($conn,$q4);
    

    这里$stmt3是一种sql资源类型,你必须迭代它来获取所有数据或使用

    sqlsrv_fetch_array — 以数组形式返回一行

    array sqlsrv_fetch_array ( resource $stmt [, int $fetchType [, int $row [, int $offset ]]] )
    

    以关联数组、数值数组或两者(默认)的形式返回下一个可用的数据行。

    Documentation

    【讨论】:

    • 感谢@Mayank 的输入。但我在这里遇到了弹出窗口的 javascript 的一些问题。我在上面解决了同样的问题。谢谢,无论如何。上帝保佑
    • JS 弹窗出现什么问题?
    • @Mayank。我在这里看到的是,如果你看一下上面的小提琴,当你点击任何员工姓名时,你会看到一个带有附加信息的弹出窗口。M 在这里面临问题,试图带来使用您的解决方案时,它了。感谢所有帮助。
    • 好的,试试看。如果需要帮助,请告诉我
    • 谢谢。你这么说。
    猜你喜欢
    • 2020-05-26
    • 2020-07-11
    • 2013-04-12
    • 2018-07-18
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多