2014-01-05 3 views
1

У меня проблема со временем в разделе новостей. Количество времени правильное, но когда это на самом деле pm, он отправил am и наоборот.Проводка обратного времени на php

Вот коды:

insertnews.php

<?php 

$news = $_POST['news']; 

date_default_timezone_set('Asia/Manila'); 
$dateposted = date('Y/m/d h:i:s a', time()); 

$con = mysqli_connect("localhost", "root", "root", "chess"); 

if (mysqli_connect_errno()) { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
} 


mysqli_query($con, "INSERT into news(dateposted,news) values('$dateposted', '$news')"); 

header('location: newslist.php'); 

?> 

newslist.php

<?php 
mysql_connect("localhost", "root", "root") or die(mysql_error()); 
mysql_select_db("chess") or die(mysql_error()); 

$result = mysql_query("SELECT * FROM news") 
or die(mysql_error()); 

$numrows = mysql_num_rows($result); 

if ($numrows == 0) { 
    echo "No news"; 
} else { 
    echo "<table border=1>"; 
    echo "<tr><td><b>Date Posted</b></td><td><b>News</b></td></tr>"; 

    while ($row = mysql_fetch_array($result)) { 
     date_default_timezone_set('Asia/Manila'); 
     $currentDateTime = $row['dateposted']; 
     $newDateTime  = date('Y/m/d h:i:s a', strtotime($currentDateTime)); 
     echo "<tr>" . "<td>" . $newDateTime . "</td> <td>" . $row['news'] . "</td><td><a href='editnews.php?id=" . $row['id'] . "'>Edit</a></td><td><a href='deletenews.php?id=" . $row['id'] . "'>Delete</a></td></tr>"; 


    } 
    echo "</table>"; 
} 

mysql_close(); 
?> 

Я не понимаю, если как я могу решить эту проблему.

+0

'var_dump ($ currentDateTime);' - Что вы получите? –

+0

Чтобы предотвратить [SQL injection] (https://www.owasp.org/index.php/SQL_Injection), перейдите к [подготовленным операторам] (http://bobby-tables.com/php.html). И не лучше ли экономить время как временную метку? Таким образом, вы можете легко настроить отображение даты позже. –

+0

@AmalMurali 'string '2014-01-06 12:02:16' (length = 19) string '2014-01-06 12:01:44' (length = 19) string '2014-01-06 12 : 12: 21 '(длина = 19) строка' 2014-01-06 12:20:54 '(длина = 19) строка' 2014-01-06 12:32:53 '(длина = 19) ' – pingboo23

ответ

0

Попробуйте

$date = new DateTime('now'); 
$date->setTimezone(new DateTimeZone('Asia/Manila')); 
echo $date->format('Y/m/d h:i:s a'); 

удалить эту строку

date_default_timezone_set('Asia/Manila'); 

здесь

while ($row = mysql_fetch_array($result)) { 
     date_default_timezone_set('Asia/Manila'); //don't need this line anymore 
     $currentDateTime = $row['dateposted']; 
     $newDateTime  = date('Y/m/d h:i:s a', strtotime($currentDateTime)); 
     echo "<tr>" . "<td>" . $newDateTime . "</td> <td>" . $row['news'] . "</td><td><a href='editnews.php?id=" . $row['id'] . "'>Edit</a></td><td><a href='deletenews.php?id=" . $row['id'] . "'>Delete</a></td></tr>"; 
} 
+0

Привет. Я попробовал ваш код, но все тот же. – pingboo23

Смежные вопросы