Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> PHP/MySQL, Wyświetlanie produktów z **(nad kategorii/drzewa kategorii)
ksenonlogin
post
Post #1





Grupa: Zarejestrowani
Postów: 123
Pomógł: 3
Dołączył: 29.10.2011

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


Witam

Problem wygląda tak:

mam dwie tabele: kategorie oraz przedmiot, wiadomo że w przedmiocie(aukcji) zawierają się klucze o wartości "id_kategoria", jednak tabela przedstawia drzewo kategorii więc produkt jest przypięty do końcówki (kategoria "laptop" zawiera "acer" oaz "samsung" więc Acer inspiron X3 będzie zawierał klucz z "acer" anie z "laptop"), i właśnie tu zaczyna się problem: jak kliknę na link acer to wyświetlę spokojnie acery ale jak kliknę "laptop" to jak mam wyświetlić produkty podkategorii zachowując sortowanie ogólne (np. produkty po czasie rejestracji) - wspomnę iż zagłębienie kategorii jest nieograniczone.

Niżej przedstawiam tabelę oraz funkcję rysującą drzewo kategorii.

Tabela aukcji:
  1. CREATE TABLE IF NOT EXISTS `przedmiot` (
  2. `id_przedmiot` mediumint(8) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `klucz_user_przedmiot` mediumint(8) UNSIGNED DEFAULT NULL,
  4. `klucz_kategoria_przedmiot` mediumint(7) UNSIGNED NOT NULL,
  5. `zdjecie_przedmiot` varchar(60) COLLATE utf8_unicode_ci NOT NULL,
  6. `tytul_przedmiot` varchar(70) COLLATE utf8_unicode_ci NOT NULL,
  7. `krotki_opis_przedmiot` varchar(300) COLLATE utf8_unicode_ci NOT NULL,
  8. `klucz_opis_przedmiot_przedmiot` mediumint(8) UNSIGNED NOT NULL,
  9. `cena_przedmiot` double(10,2) UNSIGNED NOT NULL,
  10. `stan_magazynowy_przedmiot` mediumint(5) UNSIGNED NOT NULL,
  11. `czas_trwania_przedmiot` tinyint(2) UNSIGNED DEFAULT NULL,
  12. `klucz_opcje_dostawy_koszt_przedmiot` mediumint(8) UNSIGNED NOT NULL,
  13. `wysylka_w_ciagu_przedmiot` tinyint(1) UNSIGNED DEFAULT NULL,
  14. `faktura_vat_przedmiot` tinyint(1) UNSIGNED DEFAULT NULL,
  15. `dotadkowe_informacje_przedmiot` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  16. `p_stronaglowna_przedmiot` tinyint(1) UNSIGNED NOT NULL,
  17. `p_stronakategorii_przedmiot` tinyint(1) UNSIGNED NOT NULL,
  18. `p_wyroznienieproduktu_przedmiot` tinyint(1) UNSIGNED NOT NULL,
  19. `p_podswietlenie_przedmiot` tinyint(1) UNSIGNED NOT NULL,
  20. `p_produktwpromocja_przedmiot` double(10,2) UNSIGNED NOT NULL,
  21. `status_przedmiot` tinyint(2) DEFAULT NULL,
  22. `data_rejestracji_przedmiot` datetime NOT NULL,
  23. `data_zakonczenia_przedmiot` datetime DEFAULT NULL,
  24. PRIMARY KEY (`id_przedmiot`),
  25. KEY `krotki_opis_przedmiot_2` (`krotki_opis_przedmiot`),
  26. KEY `tytul_przedmiot_3` (`tytul_przedmiot`),
  27. KEY `krotki_opis_przedmiot_3` (`krotki_opis_przedmiot`),
  28. FULLTEXT KEY `tytul_przedmiot` (`tytul_przedmiot`),
  29. FULLTEXT KEY `krotki_opis_przedmiot` (`krotki_opis_przedmiot`),
  30. FULLTEXT KEY `tytul_przedmiot_2` (`tytul_przedmiot`),
  31. FULLTEXT KEY `tytul_przedmiot_4` (`tytul_przedmiot`),
  32. FULLTEXT KEY `krotki_opis_przedmiot_4` (`krotki_opis_przedmiot`)
  33. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10000586 ;



Tabela kategorie:
  1. CREATE TABLE IF NOT EXISTS `kategoria` (
  2. `id_kategoria` mediumint(7) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `rodzic_kategoria` mediumint(7) UNSIGNED NOT NULL,
  4. `nazwa_kategoria` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,
  5. `tytul_kategoria` varchar(30) COLLATE utf8_unicode_ci DEFAULT NULL,
  6. `meta_description` varchar(700) COLLATE utf8_unicode_ci DEFAULT NULL,
  7. `meta_keywords` varchar(500) COLLATE utf8_unicode_ci DEFAULT NULL,
  8. `przyjazny_url_kategoria` varchar(400) COLLATE utf8_unicode_ci DEFAULT NULL,
  9. `status_kategoria` smallint(5) UNSIGNED NOT NULL,
  10. PRIMARY KEY (`id_kategoria`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=10000228 ;




Funkcja rysująca drzewo:

  1. function view_category_ul_li_tree_root($rodzic_kategoria, $level) { $result = mysql_query("SELECT a.id_kategoria, a.nazwa_kategoria, a.przyjazny_url_kategoria, Deriv1.Count FROM `kategoria` a LEFT OUTER JOIN (SELECT rodzic_kategoria, COUNT(*) AS Count FROM `kategoria` GROUP BY rodzic_kategoria) Deriv1 ON a.id_kategoria = Deriv1.rodzic_kategoria WHERE a.rodzic_kategoria=" . $rodzic_kategoria);
  2.  
  3. while ($row = mysql_fetch_assoc($result)) {
  4.  
  5. if ($row['Count'] > 0) {
  6.  
  7. $ar .= '<li id="id' . $row['id_kategoria'] . '" class="folder"><span><a href="#" onClick="loadPage1(\'./index.php?view=category&action=editcategory&decision=show&type_of_loading=ajax&delete=no&id_category=' . $row['id_kategoria'] . '\');">' . $row['nazwa_kategoria'] . '</a></span>
  8. <ul>'.view_category_ul_li_tree_root($row['id_kategoria'], $level + 1).'</ul></li>';
  9.  
  10. } elseif ($row['Count'] == 0) {
  11. $ar .= '<li class="noLink" id="id' . $row['id_kategoria'] . '"><span><a href="#" onClick="loadPage1(\'./index.php?view=category&action=editcategory&decision=show&type_of_loading=ajax&delete=yes&id_category=' . $row['id_kategoria'] . '\');">' . $row['nazwa_kategoria'] . '</a></span></li>';
  12. }
  13. }
  14. return $ar;
  15. }
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: 24.08.2025 - 02:17