Събиране на числа от цикъл

DeathGuard_

Registered
Здравейте,
отдавна не съм се занимавал с програмиране, но наскоро ми се наложи отново и срещам следната трудност:
Извиквам информация от база данни и я представям с цикъл:
PHP:
$dataot=$_POST['dateot'];
$datado=$_POST['datedo'];
$selectar=mysql_query("SELECT * FROM poseshteniq WHERE (date BETWEEN '$dataot' AND '$datado') ORDER BY id DESC");
    while($raw=mysql_fetch_array($selectar)){
$unpaid = $raw['unpaid'];
echo "Неплатени суми: $unpaid";
}

По този начин ми изкарва неплатени суми за всеки потребител (пациент). Идеята ми е как мога да направя така, че да комбинира всички неплатени суми за дадения период на датите и да го изписва така:
Общо неплатени: 100 лв.
(ако има 10 пациента от цикъла с неплатени суми по 10 лв да не ми ги изписва един по един, а общо).
В по-младите си години помагах усилено на по-младите програмисти, надявам се да получа помощ и аз.
:)
Поздрави.
 
Не ти трябва цикъл за тази цел. Можеш директно да вземеш резултата сумирам от базата данни, ако са записани като числа

SQL:
SELECT SUM(unpaid) as totalUnpaid FROM poseshteniq WHERE (date BETWEEN '$dataot' AND '$datado') ORDER BY id DESC
 
Последно редактирано:
Не ти трябва цикъл за тази цел. Можеш директно да вземеш резултата сумирам от базата данни, ако са записани като числа

SQL:
SELECT SUM(unpaid) as totalUnpaid FROM poseshteniq WHERE (date BETWEEN '$dataot' AND '$datado') ORDER BY id DESC
Сигурно глупави въпроси, но:
1. Ако има дроби в базата данни (11,5 и т.н.) предполагам всички трябва да са с десетични запетаи (тъй като някои при мен са с точки - 11.5) за да ги сметне правилно.
2. Не мога да се ориентирам това "as totalUnpaid" какво се явява?
Благодаря предварително.
 
Оправих се с втория въпрос, но проблемът ми е, че ако сумата не е цяла (11,7 лв) я закръгля на 12 (редът в базата данни е INT). Как може да се коригира?
 
За парични суми използвай decimal(M[,D]) тип. М е броя цифри преди десетичната запетая (зависи какви суми очакваш, не пречи да сложиш и 15 например, което е огромно число), и D ти е броя цифри след десетичната запетая. Стандартно при парични суми е 2, но ако ти трябва по-голяма прецизност винаги можеш да увеличиш.

Ако записваш числа като стринг 11,70лв то тогава е оплескано и ще трябва да правиш малко трикове с PHP.
 
За парични суми използвай decimal(M[,D]) тип. М е броя цифри преди десетичната запетая (зависи какви суми очакваш, не пречи да сложиш и 15 например, което е огромно число), и D ти е броя цифри след десетичната запетая. Стандартно при парични суми е 2, но ако ти трябва по-голяма прецизност винаги можеш да увеличиш.

Ако записваш числа като стринг 11,70лв то тогава е оплескано и ще трябва да правиш малко трикове с PHP.
Благодаря, с decimal стана, но трябваше да направя и една заявка да промени всички суми, въвеждани със запетайки и да ги направи с точки. Вече всичко работи нормално!
Преди се даваха точки на човека, който най-много ти е помогнал, но вече не го виждам като опция, ако я има кажете къде е, за да отбележа. :)
 
Преди се даваха точки на човека, който най-много ти е помогнал, но вече не го виждам като опция, ако я има кажете къде е, за да отбележа. :)
Няма точки, но новия форум брои реакции, които не са от значение така или иначе.
 

Back
Горе