Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z kategoriami i subkategoriami...
Yashin
post
Post #1





Grupa: Zarejestrowani
Postów: 33
Pomógł: 0
Dołączył: 2.09.2005

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


Mam sobie tabelkę w bazie danych:

  1. CREATE TABLE `cms_gallery_cats` (
  2. `gallerycat_id` int(16) NOT NULL AUTO_INCREMENT,
  3. `gallerycat_title` varchar(255) NOT NULL DEFAULT '',
  4. `gallerycat_higherid` varchar(16) NOT NULL DEFAULT '0',
  5. PRIMARY KEY (`gallerycat_id`)
  6. ) TYPE=MyISAM AUTO_INCREMENT=1 ;


gallerycat_id = wiadomo
gallerycat_title = chyba
gallerycat_higherid -> id "nadkategorii", jeżeli ma wartość 0 jest najwyższą kategorią

I chce zrobić tak, żeby user mógł wysłać swój obrazek do galerii (dostępny po akceptacji przez admina)... No i doszedłem do pola, w którym można wybrać kategorię wysyłanego obrazka (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif) I mam problem (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Chce żeby to był select, i wyglądał mniej więcej tak:

KATEGORIA 1
..... subkat 1
..... subkat 2
.......... subsubkat 1
..... subkat 3
KATEGORIA 2
..... subkat 1
.......... subsubkat 1
............... subsubsubkat 1
.......... subsubkat 2
..... subkat 2

Na kropki nie patrzeć - w <option> w ich miejsce miałobybyć &nbps;
Nie mam pojęcia jak to zrobić (IMG:http://forum.php.pl/style_emoticons/default/dry.gif)

ktoś pomoże? (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
Z góry dzięki za wszelaką pomoc (IMG:http://forum.php.pl/style_emoticons/default/Rkingsmiley.png)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Kicok
post
Post #2





Grupa: Zarejestrowani
Postów: 1 033
Pomógł: 125
Dołączył: 17.09.2005
Skąd: Żywiec

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


  1. <?php
  2.  
  3. function nazwa($str)
  4. {
  5. $dane = explode('<->', $str);
  6. return(str_repeat('&nbsp;', $dane[1]*2).$dane[0]);
  7. }
  8.  
  9. $kategorie1 = array();
  10. $kategorie2 = array();
  11. $nazwy = array();
  12. $wyzsze = array();
  13.  
  14. $result = mysql_query('SELECT * FROM `cms_gallery_cats` ORDER BY gallerycat_id ASC', $conn_id);
  15. while($row = mysql_fetch_array($result))
  16. //pobieranie danych i ładowanie do 3 tabel
  17. {
  18. array_push($kategorie1, $row['gallerycat_id']);
  19. $nazwy[$row['gallerycat_id']] = $row['gallerycat_title'].'<->'.$row['gallerycat_level'];
  20. $wyzsze[$row['gallerycat_id']] = $row['gallerycat_higherid'];
  21. }
  22. foreach($kategorie1 AS $kategoria)
  23. {
  24. if(!in_array(nazwa($nazwy[$kategoria]), $kategorie2))
  25. //jeżeli nie ma jeszcze tej kategorii...
  26. {
  27. $kategorie2[$kategoria] = nazwa($nazwy[$kategoria]);
  28. //...to ja dodaj...
  29. foreach($wyzsze AS $num => $wyzszy)
  30. {  
  31. if($wyzszy == $kategoria)
  32. //...a jesli ma podkategorie...
  33. $kategorie2[$num] = nazwa($nazwy[$num]);
  34. //...to tez je dodaj, zaraz po kategorii
  35. }
  36. }
  37. }
  38.  
  39.  
  40. // wyswietlanie //
  41. echo('<select name="nazwa">');
  42. foreach($kategorie2 AS $num => $kategoria)
  43. echo('<option value="'.$num.'">'.$kategoria.'</option>');
  44. echo('</select>');
  45.  
  46. ?>


Moja propozycja, ale nie jestem z niej zbytnio zadowolony (gdzież to w takim małym kawałku kodu 4 tablice deklarować (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif) ). Pobiera dane jednym zapytaniem, do pierwszej tablicy ładuje wszystkie kategorie, do drugiej kategorię nadrzędną bierzącej kategorii, do trzeciej nazwę, a czwarta to tablica wynikowa, która jest składana i na końcu wyświetlana.
Najpierw to chciałem zrobić przy pomocy prev() i next() na jednej tablicy, ale nie mogłem znaleść funkcji, która wstawia jakiś element do środka tablicy (tam gdzie obecnie znajduje się kursor), chociaż wydaje mi się że istnieje ;]
Jeśli chcesz mieć odstępy ze spacji to dodaj do tabeli w bazie danych kolumnę gallerycat_level w której będzie przechowywana `głębokość` danej kategorii



PS. Mój pierwszy post na tym forum więc chciałem się przywitać. W php bawię się od dopiero 3 miechów, ale mam nadzieję, że mnie tu wyszkolicie ;]

Ten post edytował Kicok 18.09.2005, 09:21:18
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 - 12:34