![]() |
![]() |
![]()
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. |
|
|
![]() |
![]()
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 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 8.10.2025 - 05:12 |