Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> drzewko sumowanie wartości dzieci
misiek172
post
Post #1





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


Mam głupi logiczny problem, męczę się juz 4 godzine i nic, juz prawie mam i znowu do pkt wyjścia...

chodzi o to, że np mam drzewko:

but1
.|- but2
.|.....|-but5
.|-but3
.|.....|-but6
.|.....|-but7
.|-but4
.......|-but8
.......|-but9
.............|-but10

teoretycznie powinno to wygladac tak:
but1 = but5 + but6+ but7 + but8 + but10
but2 = but5
but3 = but6 + but7
but4 = but9
but8 = but9

czyli zawsze najniższego dziecka wartość ma być zsumowana.
czyli sprawdza czy dane dziecko, ma jeszcze dziecko, jeśli nie to dodaje jego sumę, jeśli ma to sumę dzieci (jesli nie maja tez dzieci), no i to jest bardzo poplątane i nie mogę sobie poradzić za holere.

Porszę o pomoc, i z góry dziękuje, Łukasz.

albo nie... ja dosłownie BŁAGAM o pomoc, juz mam depresje jak patrzę na to...

Ten post edytował misiek172 30.01.2007, 17:48:39
Go to the top of the page
+Quote Post
Cienki1980
post
Post #2





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

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


Że tak się zapytam o dwie rzeczy :

but4=but8+but10 << nie powino być tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
but9=but10 << nie powinno być tak (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)

I w jakiej postaci masz te dane (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif) W jakiejs wielowymiarowej tablicy czy jakoś inaczej. Kiedyś pisałem podobną funkcję szukająca po wielowymiarowej tablicy i wykonujące działania na danych z poszczególnych poziomach.
Go to the top of the page
+Quote Post
misiek172
post
Post #3





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


masz racje jeśli chodzi o but 4i but9, pomiło mi się ;P

a dane mam w bazie MySQL, jest to drzewko folderów oparte na klasie NoSpora.

Wygląda tak: ID, ID_PARENT, NAZWA, MAG

i ID_PARENT określa id rodzica, nazwa to nazwa ;P a właśnie MAG ma sumować
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





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

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


Na szybko przerabiane z mojej funkcji. Przy moich kilku testach wyszło chyba poprawnie.
  1. <?php
  2. function getIDS($main_id,$text)
  3. {
  4.  $pyt1=mysql_query("select * from test where id_parent='".$main_id."'");
  5.  $ile1=mysql_num_rows($pyt1);
  6.  if($ile1>0)
  7.  {
  8. for($f=0;$f<$ile1;$f++)
  9. {
  10.  $tmp_w=mysql_fetch_array($pyt1);
  11.  $text=getIDS($tmp_w['id'],$text);
  12. }
  13.  }
  14.  else
  15.  {
  16. $pyt2=mysql_query("select * from test where id='".$main_id."'");
  17. $wiersz2=mysql_fetch_array($pyt2);
  18. $text+=$wiersz2['sum'];
  19.  }
  20.  return $text;
  21. }
  22.  
  23. $sum=0;
  24.  
  25. $first_id=4;//pierwsze id od ktorego chcesz zaczac zliczanie.
  26. echo getIDS($first_id,$sum);
  27. ?>


Sprawdź czy zadziała.
Go to the top of the page
+Quote Post
misiek172
post
Post #5





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


próbuję go przerobić pod mój skrypt ale nie zlicza.. i coś mi tu nie gra, mianowicie to w tym ELSE. Dlatego, iż według tego jeśli znajdzie wiersz to daje jego sume i koniec dalszych nie szuka... jeśli dobrze zrozumiałęm.

luzik chodzi, udało mi się to optymalizować do mojego skryptu (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Dziękuje, i jeszcze THX normalnie mam u Ciebie dług wdzięczności.

Ten post edytował misiek172 31.01.2007, 17:24:25
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
luzik chodzi, udało mi się to optymalizować ale długo się wczytują wartości
skeszuj sobie i bedzie git. Przeciez nie musisz za kazdym razem ich wyliczac na nowo.
Go to the top of the page
+Quote Post

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: 2.10.2025 - 18:29