Дата/час конвертиране

emagi

Registered
Направих си система за коментари!Проблема ми е следния:Датата и часа!
Имам съответно name,email,comment и time в колони в таблицата news в базата-данни!За колоната time съм задал ..
Код:
time TIMESTAMP (14)
Като се въведе комантар,и съответно се изведе,но датата е все една и съща:
03 November 2006, Fri, 05:01 am
Вляза ли директно в mysql,чрез select * from news;
стойностите на time са както трябва да са,според времето и датата на въвеждане на коментара!
Така,извеждането(конвертирането на часа/датата) го правя по следния начин:
Код:
$query1 = "select * from news order by time desc limit 3";
 $r = mysql_query($query1) or die ("Can not run query");
while ( $red = mysql_fetch_array($r))
                  {
                        ?>
                        <b><font size="-2">Name </b><?php echo $red["name"]; ?><br>
                        <b>E-mail </b><a href="mailto: <?php echo $red["email"]; ?>"><?php echo $red["email"]; ?></a><br>
                        <?php
                        $vreme = $red["time"];
                        $god = substr( $vreme, 0, 4 );
                        $mes = substr( $vreme, 4, 2 );
                        $den = substr( $vreme, 6, 2 );
                        $chas = substr( $vreme, 8, 2);
                        $min = substr( $vreme, 10, 2);
                        $sek = substr( $vreme, 12, 2 );
                        $new_time = date("d F Y, D, h:i a",mktime ($chas, $min, $sek, $mes, $den, $god));?>
                        <b>Date: </b><?php echo $new_time; ?><br>
                        ..................
:arrow:Някой може ли да поглегне къде ми е грешаката!Това е по образец на едно книга на Софт-Прес!
 
Ето ми я и таблицата news в базата данни:
Код:
mysql> describe news;
+---------+-------------+------+-----+-------------------+----------------+
| Field         | Type        | Null | Key | Default           | Extra          |
+---------+-------------+------+-----+-------------------+----------------+
| id              | int(4)       | NO    | PRI | NULL                                   | auto_increment |
| name        | varchar(40) | YES  |     | NULL              |                |
| email        | varchar(40) | YES  |     | NULL              |                |
| komment | text        | YES  |     | NULL              |                |
| time          | timestamp   | YES  |                                              | CURRENT_TIMESTAM|
+---------+-------------+------+-----+-------------------+----------------+
Извинявам се грозния облик на таблицата!Ето и скрипта(част от него):
Код:
$r = mysql_connect('localhost', 'pavel', '4fc27a') or die (mysql_error());
            $r = mysql_select_db("pavel") or die (mysql_error());
            $query1 = "select * from news order by time desc limit 3";
            $r = mysql_query($query1) or die ("Can not run query");
            while ( $red = mysql_fetch_array($r))
                  {
                        ?>
                        <b><font size="-2">Name </b><?php echo $red["name"]; ?><br>
                        <b>E-mail </b><a href="mailto: <?php echo $red["email"]; ?>"><?php echo $red["email"]; ?></a><br>
                        <?php
                        $time = time();
                        $data=date("d.m.Y H:i",$time);
                        ?>
                        <b>Date: </b><?php echo $new_time; ?><br>
                        <b>Comment: </b><?php echo $date; ?><hr/>
                        <?php
                        }
Пак съшата работа,дава една и същата дата!
Код:
Date: 03 November 2006, Fri, 05:01 am
 
Нямам къде да пробвам в момента и за да съм сигурен, че няма да те излъжа ползвам урока на Жоро и го конвертирам първо в timestamp и после във формата, който ти искаш.

function date_to_unix($time) {
if (!preg_match('/^(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})$/', $time, $matches)) {
return NULL;
}
return mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
}
$data = $red['time'];
$newdata = date_to_unix($data);
$final = date("d F Y, D, h:i a",$newdata);
echo $final;
 
Да му се невиди,пак ми дава следното:
Name Anonymous
E-mail wed
Date: 03 November 2006, Fri, 05:02 am
Comment: wed Name Anonymous
-----------------------------------------
E-mail 11111111111
Date: 03 November 2006, Fri, 05:01 am
Comment: 1111111111111
------------------------------------------
Name Anonymous
E-mail fghds
Date: 03 November 2006, Fri, 05:01 am
Comment: dh
А виж таблицата news:
Код:
mysql> select * from news;
+----+-----------+-------------+---------------+---------------------+
| id | name      | email       | komment       | time                |
+----+-----------+-------------+---------------+---------------------+
|  1 | Anonymous | dddddddddd  | ddddddddddd   | 2007-12-29 16:09:36 |
|  2 | Anonymous | ghe         | eeheh         | 2007-12-29 16:56:03 |
|  3 | Anonymous | fffffffffff | ffffffffffff  | 2007-12-29 16:56:11 |
|  4 | Anonymous | fghds       | dh            | 2007-12-29 16:57:33 |
|  5 | Anonymous | 11111111111 | 1111111111111 | 2007-12-29 16:57:40 |
+----+-----------+-------------+---------------+---------------------+
5 rows in set (0.00 sec)
 
Значи правя кода така:
<?php
function date_to_unix($time) {
if (!preg_match('/^(\\d{4})-(\\d{2})-(\\d{2}) (\\d{2}):(\\d{2}):(\\d{2})$/', $time, $matches)) {
return NULL;
}
return mktime($matches[4], $matches[5], $matches[6], $matches[2], $matches[3], $matches[1]);
}
$data = "2007-12-29 16:57:33";
$newdata = date_to_unix($data);
$final = date("d F Y, D, h:i a",$newdata);
echo $final;
?>
Пробвай го отделно и виж какво ще ти извади, ако е правилно, значи грешката е някъде в SELECT-a.
 

Back
Горе