Войти

Показать полную графическую версию : [решено] обрезать выход из базы


binders
24-10-2010, 03:37
у меня стоит вывод сколько пользователей за сутки пришло такое

$date=date("d.m.Y");
$sql12=mysql_query("select*from users where date_reg='$date'");
$row00=mysql_num_rows($sql12);
а хочу чтоб ещо и время указывалось в профиле пользователя
$date=date("d.m.Y H:i");
самый простой способ это завести ещо один столбец в базе и туда прописывать дату регистрации с временем
но и так много столбцов там
мож есть ещо проще решение
или можно както обрезать часы и минуты

Sham
25-10-2010, 04:04
самое простое - это поле timestamp и в запросе форматировать DATE_FORMAT (http://dev.mysql.com/doc/refman/5.1/en/date-and-time-functions.html#function_date-format)() как надо (MySQL), либо поле int и писать туда unix_timestamp (time()), форматировать date().

binders
25-10-2010, 20:35
решил остановится на unix_timestamp (time()) но как вывести это в echo чтоб в понятном виде ане смесь цифр
как unix_timestamp (time()), форматировать в нормальное время ?

Sham
25-10-2010, 20:42
как unix_timestamp (time()), форматировать в нормальное время ? »
date (http://docs.php.net/manual/ru/function.date.php) - вторым параметром timestamp

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

binders
26-10-2010, 01:03
не совсем echo $today = date("F j, Y, g:i a") . '<br>'; »
вот так правельней
$timestamp = time();
$date = date('d.m.Y H:i', $timestamp);
echo"$date<br>";
echo"$timestamp";

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

Sham
26-10-2010, 06:03
поле 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
хотя с обычной датой (с полем timestamp) имхо побыстрее будет. »
для кого быстрей ? быстрей скрип онже сайт будет работать или быстрей точней проще код писать ?

Sham
26-10-2010, 09:07
Быстрее будет запрос выполняться (DATE_FORMAT имхо побыстрее FROM_UNIXTIME из-за того, что формат даты компактнее обычного числа unix_timestamp).
самый простой способ это завести ещо один столбец в базе и туда прописывать дату регистрации с временем »
это самый быстрый способ, если поле будет DATE и с индексом - тогда запросы с проверкой по дате будут самые быстрые (не нужно форматировать, и используется индекс).
это как-бы вопрос выбора, как удобнее и т.д.

dmitryst
26-10-2010, 15:13
вставляем time() из php. »
я думаю, так будет удобнее (да и не настолько уж тормознутее). Плюс - можно учесть часовые пояса, перевод времени и прочую хрень (обработав в php, конечно)

binders
27-10-2010, 08:46
идея в том чтоб удалять не активировавшихся пользователей через Х дней

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

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

$date=date("d.m.Y H:i", mktime(date("H"), date("i"), date("s"), date("m") , date("d") + 3, date("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
поле `date_reg` в каком формате?

binders
27-10-2010, 22:05
поле `date_reg` в каком формате? »
из базы в UNIXTIME + INT

Sham
28-10-2010, 06:45
а зачем в дату форматировать? Кол-во секунд = дни * 86400.
$del12 = mysql_query
("
SELECT
*
FROM
".DB_USER."
WHERE
`rang` = '0' AND
`date_reg` < ". ( time() - $settings['day'] * 86400 ) ."
");
// если в $settings['day'] кол-во дней




© OSzone.net 2001-2012