【问题标题】:Populating an HTML table with MySQL data, linked by calendar date用 MySQL 数据填充 HTML 表,按日历日期链接
【发布时间】:2014-05-02 02:10:12
【问题描述】:

我正在使用下面的代码生成一个简单的 HTML 表格,用于显示接下来的 90 个日历日。在这个简单的表格中,每一天都是一行。

$now = time();
echo "<table>";
for ($i=0;$i<90;$i++)
{
   $thisDate = date("d/m/Y",$now + ($i*86400));
   echo "<tr><td>".$thisDate."</td></tr>\n";
}
echo "</table>";

另外,我有一个包含以下字段的 MySQL 表:

event           varchar(1000)   
datescheduled   date    

如何在上述 HTML 表中创建第二列,包含 MySQL 表中的“事件”,按日期匹配?

【问题讨论】:

    标签: php html mysql


    【解决方案1】:

    这可以通过多种方式解决。考虑这个例子:

    PHP

    <?php
    $con = mysqli_connect("localhost","dbuser","dbpass","database");
    $query = mysqli_query($con, "SELECT * FROM event");
    
    // First build the array of events, put the dates in keys, then the values as events
    $events = array();
    while($result = mysqli_fetch_assoc($query)) {
        $events[$result['datescheduled']] = $result['event'];
    }
    
    ?>
    

    // Structure should be something like this:
    Array
    (
        [2014-05-02] => Day of lorem
        [2014-06-02] => Day of ipsum
        [2014-07-02] => Day of days
    )
    

    HTML

    <!-- the compare selected values on the current loop, check its keys -->
    
    <?php $now = time(); ?>
    <table border="1" cellpadding="10">
    <?php for($i=0;$i<90;$i++): ?>
        <?php $thisDate = date("Y-m-d", $now + ($i*86400)); ?>
        <tr>
            <td><?php echo $thisDate; ?></td>
            <td><?php echo array_key_exists($thisDate, $events) ? $events[$thisDate] : ''; ?></td>
    </tr>
    <?php endfor; ?>
    </table>
    

    【讨论】:

      【解决方案2】:
      $now = time();
      echo "<table>";
      for ($i=0;$i<90;$i++)
      {
         $thisDate = date("d/m/Y",$now + ($i*86400));
         echo "<tr><td>".$thisDate."</td>";
         $result_set = mysql_query("SELECT event FROM eventTable WHERE datescheduled = STR_TO_DATE('{$thisDate}','%d/%m/%Y')'",$connection);
         $result = mysql_fetch_assoc($result_set);
         echo "<td>{$result['event']}</td></tr>\n";
      
      }
      echo "</table>";
      

      值得注意的是,根据日期的存储方式,您将需要在 mysql 中使用字符串到日期函数。

      编辑:如果您需要进一步的牵手,这里是为您完成的 STR_TO_DATE 函数。

      STR_TO_DATE('{$thisDate}','%d/%m/%Y')
      

      我已经编辑了上面的代码以反映这一点,以免让您的大脑感到紧张。

      甚至扔了一些表格和输出的屏幕截图,只是因为你的评论有点笨。凭借 5 年的经验,我原以为您会知道如何回应这样的简单表格,或者至少在有人试图帮助您时有一点共同的礼貌。

      【讨论】:

      • $connection 是什么意思?
      • 要连接到一个mysql数据库,你必须建立一个连接,然后在执行查询时调用这个连接。 $connection 是您应该将连接存储到的变量。您应该查看 PHP 手册中的 mysql_connection() 和 mysql_query() 函数,以更好地了解它们的工作原理:)
      • 我已经知道连接到数据库大约 5 年了。哈哈。您提供的这段代码不能满足我的要求。
      • 如果您甚至不了解 $connection 变量在查询调用中的位置,显然不会。此代码完全按照您的要求执行。它在数据库中查询与您正在输出的表中的当前日期相对应的事件,并将事件字段放在 HTML 表的第二列中。如果这不是您想要的,请改写您的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-13
      • 2011-06-06
      • 1970-01-01
      • 2021-08-03
      • 2014-02-09
      • 1970-01-01
      相关资源
      最近更新 更多