Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][SQL][PHP]Załadowanie wartości do tablicy wraz z sumowaniem
Forum PHP.pl > Forum > Przedszkole
HaPe
Witam,
mam taką tabelę w MySQL
  1. liczba klucz
  2. 55 1
  3. 47 1
  4. 66 2
  5. 214 2
  6. 85 3
  7. 2 4
  8. 6 4
  9. 9 4
  10. 5 5
  11. 4 6
  12. 25 7
  13. 85 7
  14. 556 7
  15. 4 8
  16. 5 9

W jaki sposób załadować te dane do tablicy, aby móc się do nich odwoływać w sposób
  1. $tablica['1']
?
Przy czym jeśli dla jednego klucza istnieje kilka liczb, to w tablicy powinny być zsumowane.
Czyli przy odwoływaniu się poprzez
  1. $tablica['1']
powinna wyjść wartość 102, ponieważ 55+47=102.
Mogę liczyć na doradzenie jak się za to zabrać?
c1chy
  1. <?php
  2.  
  3. $tablica=array();
  4. foreach ($wyniki as $wiersz){
  5.  
  6. $tablica[$wiersz['klucz']]+=$wiersz['liczba'];
  7.  
  8. }


$wyniki to lista wyników pobrana z bazy.
HaPe
Mam mały problem, kod niezbyt działa. Na razie próbuję dojść co jest nie tak.
Zapytanie zapisywane do zmiennej wyniki zapisać przez mysql_fetch_assoc czy mysql_fetch_array?
  1. Warning: Illegal string offset 'klucz'
  2. Warning: Illegal string offset 'liczba'
ptq
A może zrób sume podczas wyciągania danych z bazy?

  1. SELECT SUM(`liczba`), `klucz` FROM `tablica` GROUP BY `klucz`


potem aby mieć id jako klucz tablicy:

  1. while ( $result = mysql_fetch_assoc($query) ) {
  2. $output[ $result[ 'klucz' ] ] = $result[ 'liczba' ];
  3. }


Mam nadzieję, że zadziała smile.gif
c1chy
Właściwie to powinieneś powoli zapominać o mysql_ a zobaczyć jak używa się mysqli lub PDO. Jednak jeżeli chcesz używać mysql_ to całość może wyglądać mniej wiecej tak:

  1.  
  2. $sql='zapytanie sql';
  3.  
  4. $result=mysql_query($sql);
  5.  
  6. if (!$result){
  7. }
  8.  
  9. $tablica=array();
  10. while($wiersz=mysql_fetch_assoc($result){
  11. $tablica[$wiersz['klucz']]+=$wiersz['liczba'];
  12. }
  13.  
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.