Формат даты вывода в PHP - PullRequest
       5

Формат даты вывода в PHP

0 голосов
/ 12 ноября 2010

Я новичок в PHP и не считаю себя кодером. Я занимаюсь своим первым действием на основе базы данных и у меня возникают проблемы с правильным форматированием выходных данных. Строка, в которой я форматирую дату, кажется, игнорируется. Я делаю что-то невероятно неправильно?

Вот что выводится на странице:

Comment from: Jeremiah
1289594028

here is my comment

Вот код:

<?php

    $name = $_POST['name'];
    $comment = $_POST['comment'];


    if($name && $comment and ereg("^[A-Za-z0-9' -]+$",$name) and ereg("^[A-Za-z0-9' -,.:;()!?&#@'/]+$",$comment))

    {
        mysql_query("insert into pilot_comments (name,comment,date,page) values ('$name', '$comment',NOW(),'challenge1')");
    }

    elseif($_POST['submitted']==1) 

    { 
        echo "<img src='images/structure/commenting_spacer.png' height='1' width='249'>";

        echo "<br /><br /><div style='width:209px; background-color:#ff0000; padding:20px'><span class='white bold fourteen'>Uh oh! You may have:<br /><br />(1) Entered special characters, or <br /><br />(2) Not entered text into both fields.</span><br /><br /><span class='white twelve'>(This helps me fight spam. Thanks for understanding.)</span></div><br /><br />";
    }

?>

<?php

    $result = mysql_query("select name,comment,UNIX_TIMESTAMP(date) from pilot_comments where page='challenge1' order by date desc");

    echo mysql_error();

    $date = date("l, F j, Y \a\t g:i:s \P\S\T",$date);

    while(list($name,$comment,$date) = mysql_fetch_row($result))

    {
        echo "<img src='images/structure/commenting_spacer.png' height='1' width='249'>";

        echo "<div STYLE='word-wrap:break-word;width:249px;left:0px'><span class='twelve gray'><br />Comment from: </span><span class='twelve gray bold'>$name</span></div>";

        echo "<span class='ten light-gray bold'>$date<br /><br /></span>";

        echo "<div STYLE='word-wrap:break-word;width:249px;left:0px'><span class='fourteen green bold'>$comment</span></div><br /><br />";
    }
?>

Ответы [ 3 ]

3 голосов
/ 12 ноября 2010

Переместите эту строку:

$date = date("l, F j, Y \a\t g:i:s \P\S\T",$date);

внутри цикла while (где на каждой итерации создается новый $date, поэтому форматирование теряется):

 while(list($name,$comment,$date) = mysql_fetch_row($result))

    {

     $date = date("l, F j, Y \a\t g:i:s \P\S\T",$date);

     ... rest goes here ...

ByКстати, ваш код уязвим для SQL-инъекций .Вы должны исправить это, прежде чем использовать скрипт в реальном мире, обернув каждое упоминание $_POST в escape-функцию, например:

$name = mysql_real_escape_string($_POST["name"]);
0 голосов
/ 12 ноября 2010

Вам нужно переместить $date = date("l, F j, Y \a\t g:i:s \P\S\T",$date); в цикл while

Вне цикла, значение из базы данных не сохраняется в $date для каждой итерации цикла.

Вам также необходимо изменить UNIX_TIMESTAMP(date) на UNIX_TIMESTAMP(date) as date в запросе, чтобы переменная сохранялась в строке результатов с именем, ожидаемым вашим кодом.

0 голосов
/ 12 ноября 2010

Похоже, вы не отображаете ошибки, потому что с вашим кодом вы должны по крайней мере получить предупреждение для $ date, которое не определено при первом использовании.

Это похоже на вождение без какой-либо приборной панели.

Если вы работаете в среде разработки, убедитесь, что отображаются ошибки (настройка apache display_errors) и высокий уровень ошибок (установите для параметра error_reporting значение -1 для максимального вывода ошибок).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...