Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [php/mysql] Sumowanie wyników z tabeli.
alogator
post
Post #1





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Witam - mam prosty kodzik:
  1. <?
  2. $tab = Array();
  3.  
  4. // wykonanie zapytania i...
  5.  
  6. $q = "SELECT imiona FROM osoby";
  7. $q = mysql_query($q);
  8.  
  9. // ...utworzenie tablicy
  10.  
  11. if (mysql_num_rows($q) > 0)
  12. while ($r = mysql_fetch_array($q))
  13. $tab[$r[0]] += 1;
  14.  
  15. // wypisanie danych
  16.  
  17. foreach($tab as $index => $wartosc)
  18. echo $index.": ".$wartosc."<br>n";
  19. ?>


i wyświetla on wartości np
Marta: 2
Piotr : 6
Jan: 4
Jak zrobić aby te wartości które zliczy czy li w tym przypadku 2 i 6 i 4 oznaczyć jako zmienne?
Go to the top of the page
+Quote Post
Cezar708
post
Post #2





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


a nie lepiej zapytanie:

  1. SELECT imiona, count(imiona)
  2. FROM osoby GROUP BY imiona


i od razu masz wynik

Ten post edytował Cezar708 8.05.2007, 14:41:55
Go to the top of the page
+Quote Post
alogator
post
Post #3





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


oczywiście że tak jest łatiwje ale własnie nie oto chodzi w mojej pracy - musze oznaczyc to jako zmienne aby potem móc pracować z tymi danymi jeszcze smile.gif
Go to the top of the page
+Quote Post
Cezar708
post
Post #4





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


Cytat
Jak zrobić aby te wartości które zliczy czy li w tym przypadku 2 i 6 i 4 oznaczyć jako zmienne?


nei rozumiem co to znaczy 'oznaczyc jako zmienne'

czy to chodzi o to, że np
  1. <?php
  2. echo "$Marta, $Piotr, $Jan";
  3. ?>


dalo w wyniku

Kod
2, 6, 4


questionmark.gif
Go to the top of the page
+Quote Post
uli
post
Post #5





Grupa: Zarejestrowani
Postów: 318
Pomógł: 6
Dołączył: 27.01.2005

Ostrzeżenie: (0%)
-----


Cytat(alogator @ 8.05.2007, 13:35:12 ) *
Witam - mam prosty kodzik:
  1. <?
  2. $tab = Array();
  3.  
  4. // wykonanie zapytania i...
  5.  
  6. $q = "SELECT imiona FROM osoby";
  7. $q = mysql_query($q);
  8.  
  9. // ...utworzenie tablicy
  10.  
  11. if (mysql_num_rows($q) > 0)
  12. while ($r = mysql_fetch_array($q))
  13. $tab[$r[0]] += 1;
  14.  
  15. // wypisanie danych
  16.  
  17. foreach($tab as $index => $wartosc)
  18. echo $index.": ".$wartosc."<br>n";
  19. ?>


i wyświetla on wartości np
Marta: 2
Piotr : 6
Jan: 4
Jak zrobić aby te wartości które zliczy czy li w tym przypadku 2 i 6 i 4 oznaczyć jako zmienne?


O to Ci chodzi??

  1. <?
  2. $tab = Array();
  3.  
  4. // wykonanie zapytania i...
  5.  
  6. $q = "SELECT imiona FROM osoby";
  7. $q = mysql_query($q);
  8.  
  9. // ...utworzenie tablicy
  10.  
  11. if (mysql_num_rows($q) > 0)
  12. while ($r = mysql_fetch_array($q))
  13. $tab[$r[0]] += 1;
  14.  
  15. // wypisanie danych
  16. $i =0;
  17. foreach($tab as $index => $wartosc) {
  18. echo $index.": ".$wartosc."<br>n";
  19. $tablica[$i] = $wartosc;
  20. $i++;
  21. }
  22. ?>


--------------------
Prawo Wylera:
Nie ma rzeczy niemożliwych dla kogoś, kto nie musi ich zrobić sam.
Go to the top of the page
+Quote Post
alogator
post
Post #6





Grupa: Zarejestrowani
Postów: 158
Pomógł: 0
Dołączył: 13.11.2006
Skąd: Sosnowiec

Ostrzeżenie: (0%)
-----


Cezar 708 właśnie o coś takiego jak napisałeś
Uli - to daje taki sam wynik jaki uzyskałem wcześniej.
Go to the top of the page
+Quote Post
Cezar708
post
Post #7





Grupa: Zarejestrowani
Postów: 1 116
Pomógł: 119
Dołączył: 10.05.2005
Skąd: Poznań

Ostrzeżenie: (0%)
-----


no teoretycznie to możesz zrobic tak:

  1. <?php
  2. $q = "SELECT imiona, count(imiona)
  3. FROM osoby GROUP BY imiona";
  4.  
  5. $res = mysql_query($q);
  6.  
  7.  
  8. /*
  9.  tu sprawdz czy jak dziala ta funkcja, bo nie pamietam (nie uzywam)
  10.  zakladam ze w wyniku bedzie mniej wiecej :
  11.  $arr = array(
  12.   array('imie'=>'Piotr', 'count'=>2),
  13.   array('imie'=>'Marta', 'count'=>6)
  14. );
  15. a jesli nie... to sobie jakims innym sposobem taka tablice stworz
  16. */
  17.  
  18. $arr = mysql_fetch_all($res,MSQL_ASSOC);
  19.  
  20. foreach ( $arr AS $key => $value ){
  21. $$value['imiona'] = $value['count'];
  22. }
  23.  
  24. echo "Piotr: $Piotr, Marta: $Marta";
  25. ?>


wynikiem powinno być coś takiego:
Kod
Piotr: 2, Marta: 6


... ale baardzo nie polecam takiego rejestrowania zmiennych, wchodzisz na kolejny stopien abstrackji, ktory ardzo ciezko kontrolowac, nie wspomne juz o bezpieczenstwie skryptu.
Dodatkowo nalezy rowniez jakos walidowac kolumne `imiona` bo wywali sie blad gdy na przyklad bedzie spacja pomiedzy nimi lub jakis innny znak, ktory jest niedozwolony w nazwie zmiennej

no ale wynik bedziesz mial taki jaki chcesz
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 06:48