Autor Zpráva
PHP_Nemaster
Profil
Dobrý den,
mám takový problém: potřebuju spolu sečíst více čísel, ale problém je v tom, že ta čísla se načítají z databáze, tudíž jich může být 5, ale i třeba 16.
Poradíte mi prosím jak to udělat?

Zkusil jsem toto:

while( $i = mysql_fetch_array( $result ) ) {
echo $i['number'] + $i['number']; }


Ale to sečetlo jenom dvě stejná čísla na stejném řádku v databázi.

Předem děkuji za odpověd'
denCo
Profil
vsetky si ich nacitaj z databazy, uloz si ich do premennej, scitaj a mas
a ako konkretne vyzera ta tabulka? a kde mas ulozenie tie cisla?
Vagrant
Profil
Zkus toto:

$soucet=0;
while( $i = mysql_fetch_array( $result ) )
{
$soucet = $soucet+$i['number'];
}
Nox
Profil
To je samozřejmý když sčítáš tu samou proměnnou...a ještě navíc tam je nesmyslně echo, žádný přiřazení

Podle toho co potřebuješ by to mohlo v pohodě jít sečíst rovnou při získávání z DB
select sum(number) from some_table


Jinak ale na toto bys snad mohl přijít sám, neříkej že ne. Udělej si třeba proměnnou mimo ten cyklus a do ní v každým kroku cyklu přičítej tu získanou hodnotu

Něco jako

$total=0;
while($i=mysql_fetch_array($result)) $total += $i["number"];
PHP_Nemaster
Profil
select sum(number) from some_table

No jo, dík. Že jde i tohle jsem úplně zapomněl.
tiso
Profil
PHP_Nemaster: ďalšia možnosť je sčítať si ich v databáze a vrátiť si len súčet. Záleží od toho, čo presne potrebuješ.
PHP_Nemaster
Profil
Ale ono to jaksi nefunguje. :(

Mám tento dotaz:
$points_total = "SELECT SUM( points ) FROM land_build WHERE playername = '".$name."'; ";
$points_result = mysql_query( $points_total );
$points = mysql_fetch_array( $points_result );
echo $points['points'];


A píše mi to: "Undefined index points in profile.php on line 394"
Není potřeba tu funkci třeba nějak povolit v my.ini nebo nějak nainstalovat?
AM_
Profil
SELECT SUM(points) AS points FROM ...
nebo
echo $points[0].

S minimální snahou jsi na to mohl přijít, stačilo si výsledné pole points vypsat třeba pomocí print_r.
Jinak mysql_fetch_array mi přijde dost neefektivní, používal bych mysql_fetch_assoc nebo mysql_fetch_row, podle toho, jestli chceš mít výsledné pole indexované čísly nebo názvy sloupců (fetch_array vyplivne obojí, takže pole je 2x tak velké,protože všechny informace obsahuje 2x)
tiso
Profil
PHP_Nemaster: vraciaš si
SELECT points -> $points['points']
SELECT SUM(points) -> $points['SUM(points)']
SELECT SUM(points) AS points_sum -> $points['points_sum']
Nox
Profil
nebo použij mysql_result

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: