Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Zliczenie elementów w tablicy tworzonej rekursywnie
Forum PHP.pl > Forum > Przedszkole
miedzna
Pobieram rekursywnie z drzewka (tabela zwykła: ID, PID, NAME) wszystkie ID dla danej gałęzi drzewka. Potrzebuje uzyskać liczbę wszystkich dzieci w głąb dla danej gałęzi. Pobieram rekursywnie ID i wrzucam je do tablicy, następnie zliczam tablicę i mi wychodzi wynik: 111111, czyli sześć razy 1, a ja chcę uzyskać liczbę 6, czyli liczbę wszystkich dzieci.

  1. <?php
  2. function IleKrokow($pid) {
  3.  
  4.    $result=mysql_query("SELECT id FROM tabela WHERE pid = ".$pid);
  5.  
  6.    while ( $row = mysql_fetch_array($result) ) {
  7.  
  8.        IleKrokow($row["id"]);
  9.  
  10.        $tabela = array($row["id"]);
  11.  
  12.        echo count($tabela);
  13.  
  14.    }
  15. }
  16. IleKrokow($_GET["Page"]);
  17. ?>
wookieb
Złe podejście do tego drzewa. Użyj drzew left right( lewo prawo)

A u ciebie powinno być coś w ten deseń
  1. <?php
  2. function IleKrokow($pid, &$ile=0) {
  3.  
  4.   $result=mysql_query("SELECT id FROM tabela WHERE pid = ".$pid);
  5.    $ile+=mysql_num_rows($result);
  6.   while ( $row = mysql_fetch_array($result) ) {
  7.  
  8.       IleKrokow($row["id"], $ile);
  9.  
  10.   }
  11. }
  12. IleKrokow($_GET["Page"], $ile);
  13. ?>


Przy dużej czestotliwosci wywoływania tego skryptu lepiej zaopatrzyc twoja tabele w dodatkowe pole "num_childs" dla którego, przy dodawaniu/usuwaniu elementów z drzewa, przyliczałbyś ilość dzieci jeszcze raz.

//EDIT "literówka"
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.