【问题标题】:Formatting HTML Table from SQL Database从 SQL 数据库格式化 HTML 表
【发布时间】:2016-08-21 20:30:39
【问题描述】:

我的数据库包含来自我当地的交易。因此,每个交易都包含一个位置、deal_id(主键)、它适用的星期几以及交易本身。

理想情况下,我会列出表头的数据:

地点,星期一,星期二,星期三……等等。

每行每个位置只有一个实例。问题是,我还没能做到这一点,到目前为止,它把星期一的交易从第一行的第一个位置开始。然后下一行是每天周二交易的同一个地方,如下所示:

这是我将数据转换为 HTML 表格的 PHP 代码: 我认为错误在我的循环中。不知道如何从一个 $row 切换到下一个

<!DOCTYPE HTML>
<html lang=en>
    <head>
        <title>Ashdeals</title>
        <meta charset = "UTF-8">
        <link rel="stylesheet" type="text/css" href="stylesheet.css">
    </head>
<body>


    <?php 
    //Create Connection
    $mysqli = new MySQLi("localhost", "root", "", "ashdeals");

    $sql = "SELECT * FROM deals";
     // Query Database  
    $result = $mysqli->query($sql);

    //Count the returned rows
    if ($result->num_rows !=0){
    //Turn results into an array   

         echo "<table>
            <tr>
                <th>Location</th>
                <th>Monday</th>
                <th>Tuesday</th>
                <th>Wednesday</th>
                <th>Thursday</th>
                <th>Friday</th>
                <th>Saturday</th>
                <th>Sunday</th>

            </tr>";
         // output data of each row
         while($row = mysqli_fetch_array($result)) {

             $location = $row['location'];
             $deal = $row['deal'];

             echo 
             "<tr>

             <td>" . $location . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             <td>" . $deal . "</td>
             </tr>";
         }
         echo "</table>";
    } else {
         echo "0 results";
    }

    ?>

</body>

</html>

【问题讨论】:

    标签: php sql


    【解决方案1】:

    简单的解决方案:切换案例到每一天。

    编辑:每日优惠。

     <!DOCTYPE HTML>
    <html lang=en>
        <head>
            <title>Ashdeals</title>
            <meta charset = "UTF-8">
            <link rel="stylesheet" type="text/css" href="stylesheet.css">
        </head>
    <body>
    
    
        <?php 
        //Create Connection
        $mysqli = new MySQLi("localhost", "root", "", "ashdeals");
    
        $sql = "SELECT * FROM deals";
         // Query Database  
        $result = $mysqli->query($sql);
    
        //Count the returned rows
        if ($result->num_rows !=0){
        //Turn results into an array   
    
             echo "<table>
                <tr>
                    <th>Location</th>
                    <th>Monday</th>
                    <th>Tuesday</th>
                    <th>Wednesday</th>
                    <th>Thursday</th>
                    <th>Friday</th>
                    <th>Saturday</th>
                    <th>Sunday</th>
    
                </tr>";
             // output data of each row
             while($row = mysqli_fetch_array($result)) {
                 $location = $row['location'];
                 $deal = $row['deal'];
                 $day = $row['day'];
                 $moDeal = ""; // Monday Deal variable. 
                 $tuDeal = ""; // Tuesday Deal variable. 
                 $weDeal = ""; // Wednesday Deal variable. 
                 $thDeal = ""; // Thursday Deal variable. 
                 $frDeal = ""; // Friday Deal variable. 
                 $saDeal = ""; // Saturday Deal variable. 
                 $suDeal = ""; // Sunday Deal variable. 
                 switch ($day) {
                     case 'Mo':
                         $moDeal = $deal; 
                         break;
                     case 'Tu':
                         $tuDeal = $deal;
                         break;
                     case 'We':
                         $weDeal = $deal; 
                         break;
                     case 'Th':
                         $thDeal = $deal; 
                         break;
                     case 'Fr':
                         $frDeal = $deal;
                         break;
                     case 'Sa':
                         $saDeal = $deal; 
                         break;
                     case 'Su':
                         $suDeal = $deal; 
                         break;                 
                     default:
                         # In case some daily deal: 
                        $moDeal = $deal; 
                        $tuDeal = $deal; 
                        $weDeal = $deal; 
                        $thDeal = $deal; 
                        $frDeal = $deal; 
                        $saDeal = $deal; 
                        $suDeal = $deal; 
                         break;
                 }
                 echo 
                 "<tr>
                 <td>" . $location . "</td>
                 <td>" . $moDeal . "</td>
                 <td>" . $tuDeal . "</td>
                 <td>" . $weDeal . "</td>
                 <td>" . $thDeal . "</td>
                 <td>" . $frDeal . "</td>
                 <td>" . $saDeal . "</td>
                 <td>" . $suDeal . "</td>
                 </tr>";
    
             }
             echo "</table>";
        } else {
             echo "0 results";
        }
    
        ?>
    
    </body>
    
    </html>
    

    【讨论】:

    • 好主意,但是这给了我星期一的优惠,然后是星期二的一排,当我希望在第一排给定位置的所有每日优惠时。我应该以不同的方式设置我的数据库以使其更简单吗?
    • 嗯,在'day'行添加随机字符串,告诉这是每日交易,然后在默认情况下将交易添加到所有变量中,我将在编辑中显示。
    • 现在,如果您在日期行中添加字符串“Daily”,则切换案例运行默认案例。那么所有的变量都会得到 $deal 的值。祝你好运
    • 抱歉,我对您添加字符串“Daily”的意思有点困惑?我到底需要在哪里添加它?
    • 对方回答的代码?我做到了,并且该代码和您的代码都给出了相同的结果。
    【解决方案2】:

    只需循环:

    $dayArray = ['Monday', 'Tuesday' ..... 'Sunday'];
    while($row = mysqli_fetch_array($result)) {
    
        echo "<tr>";
    
        echo "<td>" . $row['locationField'] . "</td>";
    
        foreach ($dayArray as $dayField) {
            if ($dayField == $row['dealDayField'] ) {
                echo "<td>" . $row['dealField'] . "</td>";
            }
            else {
                echo "<td></td>";
            }
        }
        echo "</tr>";
    }
    
    echo "</table>";
    

    无需分配 $valueX 并且可以回显 $row[] 但为了清楚起见,此处显示。

    【讨论】:

    • 我明白了,但是我的 'field1' 和 'field2' 都是我数据库中的 'deal' 字段。如何区分周一交易和周二交易等?
    猜你喜欢
    • 2019-11-18
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-04
    • 2019-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多