Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   [решено] обрезать выход из базы (http://forum.oszone.net/showthread.php?t=189196)

binders 24-10-2010 03:37 1525899

обрезать выход из базы
 
у меня стоит вывод сколько пользователей за сутки пришло такое
PHP код:

$date=date("d.m.Y"); 
 
$sql12=mysql_query("select*from users where date_reg='$date'");  
$row00=mysql_num_rows($sql12); 

а хочу чтоб ещо и время указывалось в профиле пользователя
PHP код:

$date=date("d.m.Y H:i"); 

самый простой способ это завести ещо один столбец в базе и туда прописывать дату регистрации с временем
но и так много столбцов там
мож есть ещо проще решение
или можно както обрезать часы и минуты

Sham 25-10-2010 04:04 1526657

самое простое - это поле timestamp и в запросе форматировать DATE_FORMAT() как надо (MySQL), либо поле int и писать туда unix_timestamp (time()), форматировать date().

binders 25-10-2010 20:35 1527215

решил остановится на unix_timestamp (time()) но как вывести это в echo чтоб в понятном виде ане смесь цифр
как unix_timestamp (time()), форматировать в нормальное время ?

Sham 25-10-2010 20:42 1527220

Цитата:

Цитата binders
как unix_timestamp (time()), форматировать в нормальное время ? »

date - вторым параметром timestamp

dmitryst 25-10-2010 21:15 1527256

binders, вот так, например
echo $today = date("F j, Y, g:i a") . '<br>';
Дальше, я думаю, сообразите :)

binders 26-10-2010 01:03 1527414

не совсем
Цитата:

Цитата dmitryst
echo $today = date("F j, Y, g:i a") . '<br>'; »

вот так правельней
PHP код:

$timestamp time();
    
$date date('d.m.Y H:i'$timestamp);
echo
"$date<br>";
echo
"$timestamp"

как выводить то разобрался а вот как это прикрутить к первому посту не понял ещо

Sham 26-10-2010 06:03 1527493

поле date_reg тогда int (беззнаковое), при вставке в запросе пишем `date_reg` = UNIX_TIMESTAMP()
или вставляем time() из php.

Код:

SELECT
    *
FROM
    `users`
WHERE
    FROM_UNIXTIME(`date_reg`, '%d.%m.%Y') = FROM_UNIXTIME(UNIX_TIMESTAMP(), '%d.%m.%Y')

хотя с обычной датой (с полем timestamp) имхо побыстрее будет.

binders 26-10-2010 08:20 1527536

Цитата:

Цитата Sham
хотя с обычной датой (с полем timestamp) имхо побыстрее будет. »

для кого быстрей ? быстрей скрип онже сайт будет работать или быстрей точней проще код писать ?

Sham 26-10-2010 09:07 1527554

Быстрее будет запрос выполняться (DATE_FORMAT имхо побыстрее FROM_UNIXTIME из-за того, что формат даты компактнее обычного числа unix_timestamp).
Цитата:

Цитата binders
самый простой способ это завести ещо один столбец в базе и туда прописывать дату регистрации с временем »

это самый быстрый способ, если поле будет DATE и с индексом - тогда запросы с проверкой по дате будут самые быстрые (не нужно форматировать, и используется индекс).
это как-бы вопрос выбора, как удобнее и т.д.

dmitryst 26-10-2010 15:13 1527834

Цитата:

Цитата Sham
вставляем time() из php. »

я думаю, так будет удобнее (да и не настолько уж тормознутее). Плюс - можно учесть часовые пояса, перевод времени и прочую хрень (обработав в php, конечно)

binders 27-10-2010 08:46 1528382

идея в том чтоб удалять не активировавшихся пользователей через Х дней

было так
PHP код:

$del12=mysql_query"select * FROM ".DB_USER." WHERE rang = '0' AND date_reg < NOW() - INTERVAL '".$settings['day']."' DAY"); 

сделал два варианта не один не работает
PHP код:

$date=date("d.m.Y H:i"mktime(date("H"), date("i"), date("s"), date("m") , date("d") + 3date("Y")));
  
$del12=mysql_query"select * FROM ".DB_USER." WHERE rang = '0' AND FROM_UNIXTIME(`date_reg`, '%d.%m.%Y %H:%i') < '$date'");
 
$del12=mysql_query"select * FROM ".DB_USER." WHERE rang = '0' AND FROM_UNIXTIME(`date_reg`, '%d.%m.%Y') < FROM_UNIXTIME(UNIX_TIMESTAMP(), '%d.%m.%Y') - INTERVAL '".$settings['day']."' DAY");
while(
$rowdel=mysql_fetch_array($del12)){



где моя ошибка ?

Sham 27-10-2010 11:06 1528470

поле `date_reg` в каком формате?

binders 27-10-2010 22:05 1528987

Цитата:

Цитата Sham
поле `date_reg` в каком формате? »

из базы в UNIXTIME + INT

Sham 28-10-2010 06:45 1529149

а зачем в дату форматировать? Кол-во секунд = дни * 86400.
PHP код:

$del12 mysql_query
("
SELECT
    *
FROM
    "
.DB_USER."
WHERE
    `rang` = '0' AND
    `date_reg` <  "
. ( time() - $settings['day'] * 86400 ) ."
"
);
// если в $settings['day'] кол-во дней 



Время: 22:19.

Время: 22:19.
© OSzone.net 2001-