2017-03-08 167 views
0

These are the rows: This is my picture of whats in the rows:对于一个项目,我必须制作日历。日期和月份必须按照时间顺序排列,如名称:(DD-MM-YYYY)。现在我已经在html和php中创建了表格,但是我不知道如何对它进行排序。按日期顺序排列日期和月份php

<?php 
$connection = new mysqli('localhost','root','','calendar'); 

$sql = "SELECT * FROM birthdays"; 

$result = $connection->query($sql); 

$birthdayList = $result->fetch_all(MYSQLI_ASSOC); 
?> 

<!doctype html> 

<html> 
    <head> 
<title>Verjaardagskalender</title> 
    <link href="main.css" rel="stylesheet" type="text/css"> 
</head> 

<body> 
    <table> 

<?php 
    foreach($birthdayList as $birthdays){ 
?> 

<tr> 
<td><?php echo $birthdays['person'];?></td> 
<td><?php echo $birthdays['day'];?></td> 
    <td><?php echo $birthdays['month'];?></td> 
    <td><?php echo $birthdays['year'];?></td> 
</tr> 

<?php               
} 
?> 

</table> 
</body> 
</html> 

回答

0

$sql = "SELECT * FROM birthdays ORDER BY STR_TO_DATE(CONCAT(year, '-', CONCAT(month, '-', date)), '%Y-%m-%d') ASC";

更好的方法是使用组合列日 - YYYY-MM-DD而不是单独服用3列。为此,请执行以下操作:

在mysql数据库中,创建一个DATETIME类型的列。存储完成日期为YYYY-MM-DD

+0

你能告诉我一个例子,我必须把这行代码放在我的代码中吗? –

+0

答复已更新。 –

+0

我收到以下错误: 致命错误:调用第8行C:\ xampp \ htdocs \ calendar \ display.php中的布尔成员函数fetch_all() –

0

我认为在SQL中对此进行排序的最佳方式是对数据进行排序。我的意思是你可以使用SQL命令这种情况。

您可以使用ORDER BY;

SELECT * FROM表名ORDER BY字段名ASC/DESC

(在你的情况,你应该使用ASC(升序))

<?php 
$connection = new mysqli('localhost','root','','calendar'); 

$sql = "SELECT * FROM birthdays ORDER BY birthday_field ASC"; 

$result = $connection->query($sql); 

$birthdayList = $result->fetch_all(MYSQLI_ASSOC); 
?> 

,所以你没让他们有序:)

Regards

+0

仍然得到相同的错误:( 调用第8行 –

+0

C:\ xampp \ htdocs \ calendar \ display.php中的布尔成员函数fetch_all()我错了你,所以我会给你另一个解决方案 –

0

我认为你应该使用一个字段ke ep生日。

不是日,月,年。你保持在1987-12-17一样在表

你的字段类型应该是DATE;

生日=> DATE

,那么你可以通过使用SQL

SELECT * from birtdays ORDER BY birthday ASC 

好,如果你把每一天,一个月,一年拿到责令你想要的东西;你有两个选择来做到这一点;

  1. 使用SQL使用PHP

使用PHP

  • ;使用SQL

    <?php 
    
    // 1987-12-17 
    
    $birth = explode("-",$birthdays['birthday']); 
    $day = $birth[2]; 
    $month = $birth[1]; 
    $year = $birth[0]; 
    
    ?> 
    <td><?php echo $day;?></td> 
    <td><?php echo $month ;?></td> 
    <td><?php echo $year ;?></td> 
    

    ;

    SELECT DAY(birthday) as day, MONTH(birthday) as month, YEAR(birthday) as birthday from birthdays ORDER BY birthday ASC 
    
    再次

    您可以通过使用PHP让他们;

    <td><?php echo $birthdays['day'];?></td> 
    <td><?php echo $birthdays['month'];?></td> 
    <td><?php echo $birthdays['year'];?></td> 
    
  • +0

    我收到以下错误:未定义变量:生日 –

    +0

    您是否更改了表格字段? –