Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL]Sumowanie elementów tablicy
Forum PHP.pl > Forum > Przedszkole
mczlowiek
witam
mam tablice:

ID -- Nazwa --- Wartosc
1 ----aaaaaa----10
2 ----aaaaaa----15
3 ----bbbbbb-----25
4 ----aaaaaa-----110
5 ----cccccc-----10
6 ----cccccc ------10
itd

Chce teraz aby wuswietlalo mi na stronie top 3 wartosci, np
1. aaaaaa 1500
2. bbbbbb 300
c. dddddd 150

jak ugryźć takie zapytanie do bazy?
phpion
Pocztaj o funkcjach agregujących w MySQL, a w szczególności o SUM(). Ponadto poczytaj o GROUP BY. Tyle Ci wystarczy.
mczlowiek
  1. <?php
  2. $sql = mysql_query("
  3.                                        SELECT  autor, SUM (profit) as suma
  4.                                        FROM  typy
  5.                                        GROUP BY autor
  6.                                        LIMIT 0,3");
  7.                                while($w = mysql_fetch_array($sql)){
  8.                                    echo('
  9.                                    <li class="lista">'.$w['autor'].' : '.$w['suma'].'</li>
  10.                                    ');                                
  11.                                }
  12. ?>


niestety zwaraca mi błąd:
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /tktbetpl/domains/tktbetpl.twojhost.pl/public_html/glowna.php on line 469

a linia 469 wskazyje na:
  1. <?php
  2. while($w = mysql_fetch_array($sql)){
  3. ?>

co jest nie tak?
nospor
kurde, ile razy nalezy ci mowic ze masz robic tak:
  1. <?php
  2. $sql = 'twoj sql';
  3. $res = mysql_query($sql) or die(mysql_error());
  4. ?>


ps: jakbys nie zalapal to chodzi o te mysql_error()
mczlowiek
FUNCTION SUM does not exist

edit: załapałem o co chodzi winksmiley.jpg
nospor
Cytat
załapałem o co chodzi
tja.... tylko ze juz poraz nty ci to przypominam. jeszcze raz zobacze ze nie masz mysql_error i uczciwie ci mowie ze zarobisz warna z moderką.

co do problemu
nie:SUM (profit)
a: SUM(profit)
mczlowiek
wówczas: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /tktbetpl/domains/tktbetpl.twojhost.pl/public_html/glowna.php on line 475

  1. <?php
  2. mysql_query("set names utf8");
  3.                                $sql = '
  4.                                        SELECT  autor, SUM(profit) as suma
  5.                                        FROM  typy
  6.                                        GROUP BY autor
  7.                                        LIMIT 0,3';
  8.                                $w = mysql_query($sql) or die(mysql_error());
  9.  
  10.                                        
  11.                                        
  12.                                        
  13.                                        
  14.                               [/b][u] while($w = mysql_fetch_array($sql)){[/u][b] <---475
  15.                                    echo('
  16.                                    <li class="lista">'.$w['autor'].' : '.$w['suma'].'</li>
  17.                                    ');                                
  18.                                }
  19. ?>

nospor
$w = mysql_query($sql)
$w = mysql_fetch_array($sql)

pogrubilem ci to i owo... no mysl troche.
mczlowiek
  1. <?php
  2. mysql_query("set names utf8");
  3.                                $sql = '
  4.                                        SELECT  autor, SUM(profit) as suma
  5.                                        FROM  typy
  6.                                        GROUP BY autor
  7.                                        LIMIT 0,3';
  8.                                $res = mysql_query($sql) or die(mysql_error());
  9.                                        
  10.                                while($row = mysql_fetch_array($res)){
  11.                                    echo('
  12.                                    <li class="lista">'.$row['autor'].' : '.$row['suma'].'</li>
  13.                                    ');                                
  14.                                }
  15. ?>

jestem wielki tongue.gif biggrin.gif

aby nie zakladac nowego atematu:
jak posortowac po k.klub?

  1. <?php
  2. mysql_query("set names utf8");
  3.                                $sql = "    SELECT * FROM kluby k  
  4.                                            LEFT JOIN zawodnicy z ON z.id_klubu=k.id_klub WHERE k.id_liga='".$_GET['id_liga']." ORDER BY k.klub'
  5.                                            
  6.                                        UNION
  7.                                            SELECT * FROM kluby k
  8.                                            RIGHT JOIN zawodnicy z ON z.id_klubu=k.id_klub WHERE k.id_liga='".$_GET['id_liga']."'  AND k.id_klub IS NULL        
  9.                                            ";
  10.                                $wynik = mysql_query($sql) or die(mysql_error());
  11. .....
  12. ?>

teraz niby jest ale nie sortuje....
nospor
pewnie ciezko zajrzec do manuala i doczytac co oni na ten temat napisali?

http://dev.mysql.com/doc/refman/5.0/en/union.html
mczlowiek
nie ciężko patrzyłem , ale nie mogę dojsc co jest nie tak
  1. <?php
  2. $sql = "    SELECT * FROM kluby k  
  3.                                            LEFT JOIN zawodnicy z ON z.id_klubu=k.id_klub WHERE k.id_liga='".$_GET['id_liga']." ORDER BY k.klub'
  4.                                            
  5.                                        UNION
  6.                                            SELECT * FROM kluby k
  7.                                            RIGHT JOIN zawodnicy z ON z.id_klubu=k.id_klub WHERE k.id_liga='".$_GET['id_liga']."'  AND k.id_klub IS NULL        
  8.                                            ORDER BY k.klub
  9.                                            ";
  10. ?>

dostaje:
Unknown column 'k.klub' in 'order clause'
choć tak kolumna w bazie istneije

działać działa, ale czy to jest poprawnie zapisane?
  1. <?php
  2. $sql = "   ( SELECT * FROM kluby k  
  3.                                            LEFT JOIN zawodnicy z ON z.id_klubu=k.id_klub
  4.                                            WHERE k.id_liga='".$_GET['id_liga']."' ORDER BY k.klub )                                            
  5.                                        UNION
  6.                                            (SELECT * FROM kluby k
  7.                                            RIGHT JOIN zawodnicy z ON z.id_klubu=k.id_klub
  8.                                            WHERE k.id_liga='".$_GET['id_liga']."'  AND k.id_klub IS NULL        
  9.                                            ORDER BY k.klub)ORDER BY klub
  10.                                            ";
  11. ?>
ddiceman
Niepotrzebnie sortujesz 3 razy zmaiast raz. Wsytarczy

  1. <?php
  2. $sql = "   ( SELECT * FROM kluby k  
  3.                                           LEFT JOIN zawodnicy z ON z.id_klubu=k.id_klub
  4.                                           WHERE k.id_liga='".$_GET['id_liga']."' )                                            
  5.                                       UNION
  6.                                           (SELECT * FROM kluby k
  7.                                           RIGHT JOIN zawodnicy z ON z.id_klubu=k.id_klub
  8.                                           WHERE k.id_liga='".$_GET['id_liga']."'  AND k.id_klub IS NULL
  9.                                            )ORDER BY klub
  10.                                           ";
  11. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.