【问题标题】:PHP MySQL auto-numbering rows with a dependency and add as columnPHP MySQL自动编号具有依赖关系的行并添加为列
【发布时间】:2018-05-01 20:24:14
【问题描述】:

关于我的 discgolf 评分系统的问题。

我有一个 HTML 表,其中填充了来自 MySQL 查询的数据。 像这样:

$uke_resultat_query = "SELECT * FROM Sammenlagt WHERE Dato='$select_box_value'";
$uke_resultat = mysql_query($uke_resultat_query);

$select_box_value 是具有特定值的选择框中的值。

桌子去

<?php 
while($row = mysql_fetch_array($uke_resultat)){   
echo    "<tr><td>" . $row['Dato'] . "</td>

// Somwhere here i want to add a column that counts player's position...
// 1st place as the number 1 and so forth..
// The column called 'Poeng' will determine the order
// Players with even score will get the same position

            <td>
    <a href=\"/wordpress/teststats?id=". $row["spillerid"]."\">" . $row['Navn'] . "</a>
            </td>
            <td>" . $row['hull1'] . "</td>
            <td>" . $row['hull2'] . "</td>
            <td>" . $row['hull3'] . "</td>
            <td>" . $row['hull4'] . "</td>
            <td>" . $row['hull5'] . "</td>
            <td>" . $row['hull6'] . "</td>
            <td>" . $row['hull7'] . "</td>
            <td>" . $row['hull8'] . "</td>
            <td>" . $row['hull9'] . "</td>
            <td>" . $row['hull10'] ."</td>
            <td>" . $row['hull11'] . "</td>
            <td>" . $row['hull12'] . "</td>
            <td>" . $row['hull13'] . "</td>
            <td>" . $row['hull14'] . "</td>
            <td>" . $row['hull15'] . "</td>
            <td>" . $row['hull16'] . "</td>
            <td>" . $row['hull17'] . "</td>
            <td>" . $row['hull18'] . "</td>
            <td>" . $row['Sammenlagt'] . "</td>
            <td>" . $row['Par'] ."</td>
            <td>" . $row['Poeng'] . "</td></tr>";  
}
?>

我试图在上面代码中的 cmets 中进行解释,但要明确我的问题:
如何添加一个位置列来检查“Poeng”列中的分数并添加记分牌的正确位置? 唯一要添加的规则是,如果两个玩家得分相同,他们将获得相同的位置,例如:

1 Johnny Ace  65 (points)
2 Billy Bogey 63
2 Perry Par   63
4 Bob Birdie  60
etc..

用PHP能做到吗?

【问题讨论】:

    标签: php mysql


    【解决方案1】:

    OP 的解决方案。

    是的,它可以用 PHP 来完成。 将此添加到 while 循环的开头

    $plassering = 0;
    $forrige_sum = 0;
    $hoppet_over= 0;
    
        while($row = mysql_fetch_array($uke_resultat)){   //Creates a loop
    
        if($forrige_sum != $row['Poeng']){
                $plassering += (1 + $hoppet_over);
                $hoppet_over = 0;
        } else {
            $hoppet_over += 1;
        }
            $forrige_sum = $row['Poeng'];
    
    echo    "<tr>
    <td>" . $plassering . "</td>
    <td>
    <a href=\"/wordpress/teststats?id=". $row["spillerid"]."\">"
    . $row['Navn'] . "</a>
    </td>
    <td>" . $row['hull1'] . "</td>
    <td>" . $row['hull2'] . "</td>
    <td>" . $row['hull3'] . "</td>
    
    ........
    

    【讨论】:

      【解决方案2】:

      只需在 SQL 语句中使用 ORDER BY 子句。

      $uke_resultat_query = "SELECT * FROM Sammenlagt WHERE Dato='$select_box_value' ORDER BY Poeng";
      

      使用 ORDER BY,您可以从数据库中获得有序的结果。

      【讨论】:

      • 谢谢,但订购不是问题。我需要按照说明构建一个额外的列。
      • 为什么不能带有序的数据?你所描述的你想要的很容易通过 order by 来实现。如果我们假设不能使用 order by,那么您的问题将变成“从 php 中模拟 order by”
      • 好吧,ORDER 将以正确的顺序获取列表,但除此之外,我还想建立一个显示位置的列,如问题中所述。据我所知,用 php 解决这个问题似乎比 db.xml 中的一些规则设置更容易。如果我错了,请纠正我。
      • 您可以使用 CSS 为列表“编号”。检查这个问题:stackoverflow.com/questions/17012421/auto-number-table-rows
      • 好的,所以 CSS 可以在我想要的表格单元格内添加一个数字。我需要的是我的 MySQL 生成表左侧的一列。此列将标记从第 1 名(获胜者)到记分板上最后一名玩家的得分位置。正如我的问题中所描述的,这个编号有一个规则,这取决于球员的得分。我会改写我的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-10-22
      • 2014-09-06
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多