从MySQL表发布日期信息

时间:2014-05-20 06:47:49

标签: php mysql

我有一个网页,我希望从MySQL数据库中提供事件信息。我有一个PHP函数提供此事件信息,我正在尝试包含事件的日期时间,但我想使用mysql中的date_format函数对其进行格式化。

我目前尝试的PHP功能如下:

function eventbox() {
    $events = mysql_query('SELECT * FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id),'); 
    while($row = mysql_fetch_array($events)) { 
        $loopResult .= ' 
                <div class="eventbox">
                    <div class="eventtitle">'.$row['eventname'].'</div>
                    <div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>  
                    <div class="eventvenue">'.$row['name'].'</div>
                    <div class="tie-inbuttonholder">
                        <button type="button">tie-in</button>
                    </div>
                    <div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div> 
                </div>  
        '; 
    } 
    echo $loopResult;
}

我基本上想要从表中获取DateTime行,并以&#34; 2014年5月19日星期一晚上7点&#34;

的格式显示

如果有人能够阐明这一点以及如何正确完成这项功能,那将会非常有用!

UPDATE /编辑:

所以我在@Prior的帮助下更新了该功能,并且已经获取信息并再次填充页面上除<divs>之外的所有<div class="eventdate">。该功能现在为:

function eventbox() {
$loopResult = "";
$query = mysql_query("SELECT eventname, name, eventicon, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)"); 
while($row = mysql_fetch_array($query)) {
    $loopResult .= ' 
            <div class="eventbox">
                <div class="eventtitle">'.$row['eventname'].'</div>
                <div class="eventdate">'.$row['DATE_FORMAT(eventtime)'].'</div>  
                <div class="eventvenue">'.$row['name'].'</div>
                <div class="tie-inbuttonholder">
                    <button type="button">tie-in</button>
                </div>
                <div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div> 
            </div>  
    '; 
}
echo $loopResult;
}

现在唯一的问题是,当我运行脚本时,我得到了错误代码;

  

注意:未定义的索引:第23行的/var/www/test/test_func.inc.php中的DATE_FORMAT(eventtime)

第23行将是:

<div class="eventdate">'.$row['DATE_FORMAT(eventtime)'].'</div>

我尝试了许多不同的方法来格式化这部分功能,包括 (据说我运行.date_format($row...方法的错误略有不同);

<div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>
<div class="eventdate">'.date_format($row ['eventtime'], '%a %b %dth %Y at %h:%i%p').'</div>
<div class="eventdate">'.date_format($row['eventtime'], 'l M d\t\h Y \a\t g:iA').'</div>
<div class="eventdate">'.$row['DATE_FORMAT(eventtime, 'g:ia \o\n l jS F Y')'].'</div>
etc...

有关我可以采取哪些措施来解决此问题的建议?当我对我的服务器运行SQL查询时,我得到了一个完美的表,并且该函数的所有其他部分都运行良好。

谢谢!

2 个答案:

答案 0 :(得分:0)

您要查找的格式字符串是%a %b %dth %Y at %h:%i%pConsult the Mysql-Manual)。 所以你的整个SQL-Query看起来像这样(我在查询结束时忽略了你的尾随逗号):

SELECT eventname, name, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p`') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)

请注意以下事项:

  1. 您使用错误类型的括号来检索PHP中的数据:它应该是$row ['eventtime']而不是$row ('eventtime')
  2. 函数MySQL在PHP中不推荐使用,请改用MySQLi
  3. 您的整个代码如下所示:

    function eventbox() {
        $loopResult = "";
        $mysqli = ... //Initialize Databaseconenction here
        $query = $mysqli->prepare("SELECT eventname, name, DATE_FORMAT(eventtime, '%a %b %dth %Y at %h:%i%p`') FROM my_db.events LEFT JOIN my_db.venues USING (venue_id) LEFT JOIN my_db.eventtype USING (eventtype_id)"); 
        $query->execute();
        $query->bind_result($eventname, $name, $eventtime);
        while($query->fetch()) {
            $loopResult .= ' 
                    <div class="eventbox">
                        <div class="eventtitle">'.$eventname.'</div>
                        <div class="eventdate">'.$eventtime.'</div>  
                        <div class="eventvenue">'.$name.'</div>
                        <div class="tie-inbuttonholder">
                            <button type="button">tie-in</button>
                        </div>
                        <div class="eventboxicon" class="tie-inbutton">'.$row['eventicon'].'</div> 
                    </div>  
            '; 
        }
        $query->close();
        $mysqli->close();
        echo $loopResult;
    }
    

答案 1 :(得分:0)

我在这里有解决方案,可以使用PHP date_format函数以您想要的格式呈现它。这更容易。并且还使用括号代替括号。

更改此行:

<div class="eventdate">'.date_format($row ('eventtime'), 'g:ia \o\n l jS F Y').'</div>  

为:

 <div class="eventdate">'.date_format($row['eventtime'], 'l M d\t\h Y \a\t g:iA').'</div>