【问题标题】:PHP MYSQL - Search and Sort Query ResultsPHP MYSQL - 搜索和排序查询结果
【发布时间】:2017-08-20 05:40:23
【问题描述】:

希望有人可以在这里提供帮助。

我正在创建一个站点,该站点将列出赛马技巧,这些技巧是使用 PHP 脚本从 MySQL 数据库中提取的。我已经成功地创建了包含五列(ID、RaceDate、Location、RaceTime 和 Horse)的数据库,并且我创建了一些脚本来查询 RaceDate 列并且只显示与当前日期匹配的行。见下文:

<?php
    $db_host = 'xxxxx'; // Server Name
    $db_user = 'xxxxx'; // Username
    $db_pass = 'xxxxx'; // Password
    $db_name = 'xxxxx'; // Database Name

    $conn = mysqli_connect($db_host, $db_user, $db_pass, $db_name);
        if (!$conn) {
            die ('Failed to connect to MySQL: ' . mysqli_connect_error());  
        }

    $sql = 'SELECT * FROM Horses WHERE Date(RaceDate) = Date(NOW())';
    $result = $conn->query($sql);

?>

然后,我的页面下方还有另一位 php,它回显要筛选的数据,格式为漂亮的表格。

<?php
    if ($result->num_rows > 0) {
        while($row = $result->fetch_assoc()) {
            echo '<tr>
                <td>'.$row['Location'].'</td>
                <td>'.$row['RaceTime'].'</td>
                <td>'.$row['Horse'].'</td>
            </tr>';
        }
    } else {
        echo '0 results';
    }
        $conn->close();
?>

这一切都很好,但会在一个大列表中吐出所有内容。我真正想做的是根据比赛地点将结果分开。

因此,例如,@ location1、5 @ location2 和 5 @ location3 可能有 5 场比赛。而不是一个接一个地列出 15 场比赛,我希望它分成 3 个组/表。有没有办法搜索我的查询数据的 Location 列并确定列出了哪些赛马场,然后将数据回显到屏幕?

e.g IF Location = Wolverhampton
        THEN echo to table 1
    ELSE IF Location = Ayr
        THEN echo to table 2
    ELSE IF Location = Llos Fas
        THEN echo to table 3
    (etc, if more Locations exist)

【问题讨论】:

    标签: php mysql database


    【解决方案1】:

    我的评论只是复杂的事情,这是更简单的方法。

    while($row = $result->fetch_assoc()) {
         if($row['Location'] === 'location1')
         {
            echo '<tr>
                <td>'.$row['Location'].'</td>
                <td>'.$row['RaceTime'].'</td>
                <td>'.$row['Horse'].'</td>
            </tr>';
         }else if($row['Location'] === 'location2')
         {
            echo '<tr>
                <td>'.$row['Location'].'</td>
                <td>'.$row['RaceTime'].'</td>
                <td>'.$row['Horse'].'</td>
            </tr>';
         }else if($row['Location'] === 'location3')
         {
            echo '<tr>
                <td>'.$row['Location'].'</td>
                <td>'.$row['RaceTime'].'</td>
                <td>'.$row['Horse'].'</td>
            </tr>';
         }
         // And so on....
    }
    

    【讨论】:

    • 谢谢,但这似乎不起作用。每次 if/else if 循环时,它都会在条目之前添加“位置”。类似的东西:例如LOCATION1 Location1 13:30 Horse1 LOCATION1 Location1 14:00 Horse2 LOCATION1 Location1 14:30 Horse3 LOCATION2 Location2 15:30 Horse4 等即使我取出 Location $row,它仍然在每个条目之前添加位置。不过,您的代码有所帮助 - 我觉得我比以前更接近解决这个问题了。
    • 现在试试,我开始用不同的方式写答案,然后想办法让它更简单,但我忘了删除几行。
    • 谢谢。我认为这或多或少可以满足我的需要。 :)
    猜你喜欢
    • 2018-01-28
    • 1970-01-01
    • 2012-03-24
    • 2013-12-18
    • 2014-03-20
    • 1970-01-01
    • 1970-01-01
    • 2014-11-25
    • 2021-04-06
    相关资源
    最近更新 更多