whitelord
15.02.2009 - 20:00
Есть несколько вопросов: как удалять те записи в таблице которым больше 24 часов? И второе - как то криво считается сумма массива $ar (если запись у этого логина одна - считает ее два раза, если несколько - считает только первые несколько значений) помогите пожалуйста разобраться.
PS: В таблице today есть поля id (AI), login, money, time (datetime в который вставляется CURRENT_TIMESTAMP)
PHP |
<?php $t=mysql_query ("DELETE FROM today WHERE UNIX_TIMESTAMP() - UNIX_TIMESTAMP(time) > 3200") or die ("Can't delete old sess"); $re = mysql_query ("SELECT money FROM today WHERE login='$login'") or die ("не могу выбрать результат"); $ar = mysql_fetch_array ($re); if (!$ar) { printf ('<DIV id="prize"> Выиграно за сегодня: </div> <DIV id="gm"> 0 gm </div>');} else {?> <DIV id="prize"> Выиграно за сегодня: </div> <DIV id="gm"> <?php echo array_sum($ar) ?> gm </div> <?php } |
Спустя 1 час, 48 минут, 37 секунд (15.02.2009 - 20:49) lawbreaker написал(а):
не заю
могу только одно подметить
не так
PHP |
$re = mysql_query ("SELECT money FROM today WHERE login='$login'") or die ("не могу выбрать результат"); |
а так
PHP |
$re = mysql_query ("SELECT money FROM today WHERE login='".$login."'") or die ("не могу выбрать результат"); |
Спустя 12 минут, 39 секунд (15.02.2009 - 21:02) LoneCat написал(а):
Цитата (lawbreaker @ 15.02.2009 - 21:49) |
не заю
могу только одно подметить не так
PHP | $re = mysql_query ("SELECT money FROM today WHERE login='$login'") or die ("не могу выбрать результат"); |
а так
PHP | $re = mysql_query ("SELECT money FROM today WHERE login='".$login."'") or die ("не могу выбрать результат"); |
|
А разница? В двойных кавычках переменные как раз подставляются.
Спустя 21 минута, 35 секунд (15.02.2009 - 21:23) Viking написал(а):
$ar = mysql_fetch_array ($re); считывает только первую строчку результата выборки, в данном случае одно значение, но в двух видах - с числовым и ассоциативным индексом, по этму и получается два значения. Чтобы все прочитать нужно обойти все значения циклом, и для использования array_sum придется выбирать их через mysql_fetch_assoc например
а вообще сумму надо считать прямо в запросе
SELECT SUM(money) FROM today WHERE login='$login'
Спустя 18 минут, 38 секунд (15.02.2009 - 21:42) kirik написал(а):
Цитата (whitelord @ 15.02.2009 - 11:00) |
как удалять те записи в таблице которым больше 24 часов? |
Наверное вот так -
SQL |
DELETE FROM `today` WHERE `time` > UNIX_TIMESTAMP() - 86400 |
Цитата (whitelord @ 15.02.2009 - 11:00) |
И второе - как то криво считается сумма массива |
Замени это
PHP |
$re = mysql_query ("SELECT money FROM today WHERE login='$login'") or die ("не могу выбрать результат"); $ar = mysql_fetch_array ($re); |
на это -
PHP |
$re = mysql_query ("SELECT SUM(`money`) AS `summ` FROM `today` WHERE `login` = '{$login}'") or die ("не могу выбрать результат"); $ar = mysql_fetch_assoc($re); |
И это
на
PS Viking, опередил