Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Lista wszystkich podkategori
Teamon
post
Post #1





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.09.2006

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


Skrypt dostaje (int)categoryId. Ma za zadanie wyswietlic wszystkie produkty w tej kategori oraz jej wszystkich podkategoriach.

Metoda obiektu Category

Kod

public function getSubIds()
  {
    $sIDs = array();
    if(($sub = $this->getSubcategories()) != null)
    {
      foreach($sub as $s)
      {
        $sIDs = array_merge($sIDs, $s->getSubIds());
      }
    }
    else
    {
      $sIDs[] = $this->getId();
    }
    return $sIDs;
  }


gdzie getSubcategories() robie zapytanie sql po parent_id.

Potem nastepuje tylko zamiana listy ID na "WHERE category_id=X OR category_id=Y OR ..."

Pytanie czy da sie to jakos uproscic/zrobic szybciej.
Ilość kategori tak jak na allegro.


Osobną sprawa jest liczenie ilosci produktow w danej kategorii (i wszystkich jej podkategoriach). Czy liczyc to tak normalnie za kazdym razem czy moze dodac kolumne product_num do tabeli categories i modyfikowac ja przy zmianach produktow?

Ten post edytował Teamon 26.12.2007, 22:56:12
Go to the top of the page
+Quote Post
domis86
post
Post #2





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


Cytat(Teamon @ 26.12.2007, 22:46:24 ) *
...
Potem nastepuje tylko zamiana listy ID na "WHERE category_id=X OR category_id=Y OR ..."

Pytanie czy da sie to jakos uproscic/zrobic szybciej.

zamiast tego mozesz zrobic tak:

  1. WHERE category_id IN (X,Y,Z.....)


lub w ogole nie pobierac ideków podkategorii i zrobic joina
Nie wiem jaka masz strukture bazy to ci go teraz nie napisze.
Go to the top of the page
+Quote Post
Teamon
post
Post #3





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.09.2006

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


category: id, name, parent_id
product: id, name .... , category_id

Hm... czyli przy pobieraniu podkategori pobierac od razu produkty tak?
Go to the top of the page
+Quote Post
domis86
post
Post #4





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


  1. dane: x - id kategorii
  2.  
  3. SELECT p.id,p.name FROM products AS p INNER JOIN category AS c ON p.category_id = c.id WHERE c.id = 'x' OR c.parent_id = 'x'

(IMG:http://forum.php.pl/style_emoticons/default/czarodziej.gif)

Mozesz tez pobrac przy tym od razu kategorie, ale chyba lepiej osobno. Chociaz zalezy (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)

Ten post edytował domis86 27.12.2007, 12:34:58
Go to the top of the page
+Quote Post
Teamon
post
Post #5





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.09.2006

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


Hm.. tak sie zastanawiam, bo produkty moga byc jedynie w kategori najnizszego poziomu.

A jakis pomysly co do liczenia ilosci produktow w danej kategori?
Go to the top of the page
+Quote Post
domis86
post
Post #6





Grupa: Zarejestrowani
Postów: 255
Pomógł: 5
Dołączył: 20.03.2007
Skąd: Kraków

Ostrzeżenie: (30%)
XX---


Cytat(Teamon @ 27.12.2007, 13:54:45 ) *
A jakis pomysly co do liczenia ilosci produktow w danej kategori?


  1. SELECT COUNT(p.id) AS sume FROM products AS p WHERE p.category_id = 'x' OR p.category_id WHERE c.id = 'x' OR c.parent_id


albo jak bez subkategorii to:

  1. SELECT COUNT(p.id) AS sume FROM products AS p WHERE p.category_id = 'x'


Ten post edytował domis86 27.12.2007, 14:02:15
Go to the top of the page
+Quote Post
Teamon
post
Post #7





Grupa: Zarejestrowani
Postów: 45
Pomógł: 0
Dołączył: 18.09.2006

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


Ale z subkategoriami i subkategoriami subkategorii i ich subkategoriami.
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: 24.08.2025 - 21:30