Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Grupowanie wyników z tablicy wg drugiej tablicy
Cienki1980
post
Post #1





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Witam.

Mam chyba dość prosty problem, ale nie mogę wymyślić niczego konkretnego.

Sytuacja jest taka. Wyciągam z bazy danych wiersze z danymi ( łączonych kilka tabel ) ale wynik zawsze wygląda tak samo ( taka sama ilość pól i takie same typy danych ).
Kod
[0] => Array
        (
            [id] => 155
            [id_user] => 1
            [id_job] => 19
            [type] => 1
            [data] => 1186092000
            [jed_proc] => 30
            [jed_min] => 3
            [pracownik_nazwa] => Admin Admin
            [dzial_nazwa] => dzial
            [dzial_id] => dzial
            [pracownik_id] => 1
            [job_nazwa] => projekt
            [job_number] => number
            [job_id] => 19
            [projekt_nazwa] => cienki_projekt
            [projekt_id] => 12
            [brand_nazwa] => cienki
            [brand_id] => 14
            [klient_nazwa] => cienki
            [klient_id] => 13
        )


Do tego dochodzi druga tablica w której podana jest kolejność kolumn wyświetlanych później.
Kod
Array
(
    [0] => klient
    [1] => brand
    [2] => projekt
    [3] => pracownik
)

Kolejność kolumn może się zmieniać. I teraz jest problem.

Należy zsumować wartości jed_min w przypadku gdy dana kolumna ( dany id odpowiadający wartości z tablicy z kolumnami ) z następnego wiersza jest taka sama. W wyniku chciałbym otrzymać tablicę która pozwoli na wyświetlenie takiego efektu ( dla takiej kolejności kolumn jak podana wyżej ):
Kod
klient 1 | brand1 | projekt1 | pracownikA | wartosc z jed_min
           |             |              | pracownikB| wartosc z jed_min
          |              |suma dla projekt 1      | suma dwoch powyzszych
          |              |projekt2  |pracownikA|wartosc z jed_min
         |               |suma dla projekt 2       | wartosc powyzsza
          | suma dla brand1                        | suma wszystkich powyższych
suma dla klient1                                     |suma wszystkich powyższych
.
.
.

i tak dalej i tak dalej.

Wiem, że zamotełem trochę, ale jeżeli ktoś się zainteresuje to z chęcią wyjaśnie dokładniej.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
phpion
post
Post #2





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Hmmm może zrób tak: wyniki z bazy wybieraj posortowane wg pola 'klient'. Wtedy będziesz miał dane nie pomieszane pod względem klienta. W PHP w pętli lecisz po wszystkich rekordach wyciągniętych przez zapytanie. Tworzysz jakąś zmienna tymczasową np. $lastClient która przetrzymuje nazwę ostatnio iterowanego klienta. Równocześnie ustawiasz zmienna $sum która sumuje liczby z pola $suma. Jeśli aktualna nazwa jest różna od $lastClient to znaczy, że masz wyświetlić policzoną $sumę, następnie ją wyzerować no i zmienić wartość $lastClient. Jeśli nazwa ta jest równa $lastClient to wyświetlasz wiersz dla rekordu (bez nazwy klienta) i dodajesz do zmiennej $suma wartość pola 'suma'. Ja bym to tak widział.

// wow, nie mam ostrzeżenia (IMG:http://forum.php.pl/style_emoticons/default/cool.gif)

Ten post edytował phpion.com 7.08.2007, 17:11:44
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 8.10.2025 - 05:12