[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Сумма массива
whitelord
Есть несколько вопросов: как удалять те записи в таблице которым больше 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">
                &nbsp;Выиграно за сегодня:
            </div>
            <DIV id="gm">
                 <?php echo array_sum($ar?> gm
                </div>                
            <?php 




Спустя 1 час, 48 минут, 37 секунд (15.02.2009 - 20:49) lawbreaker написал(а):
не заю sad.gif

могу только одно подметить
не так
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)
не заю sad.gif

могу только одно подметить
не так
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);


И это
PHP
echo array_sum($ar)

на
PHP
echo $ar['summ']


PS Viking, опередил smile.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.