Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Nielimitowana Ilosc Kategorii.
telepawel
post
Post #1





Grupa: Zarejestrowani
Postów: 81
Pomógł: 0
Dołączył: 11.05.2003

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


Witam,

Od 2 godzin siedze na rozwiazaniem dla systemu katalogow php + mysql.

Mam zapisane kategorie w bazie mysql w postaci
1_2_3 (np zupy w proszku grzybowe)
1 (zupy wszystkie)
1_4 (zupy o smaku owocow lesnych)
2_3 (warzywa zielone)
2 (warzywa wszystkie)
jako ID.

Kazdy znak _ to przejscie do podkategorii.
I teraz jak to zrobic aby skrypt wyslwietlal dane kategorie wg. glebokosci ?
Prawidlowo powinno byc:
1 (zupy wszystkie)
-> 1_2_3 (np zupy w proszku grzybowe)
-> 1_4 (zupy o smaku owocow lesnych)
2 (warzywa wszystkie)
2_3 (warzywa zielone)
itd.

Prosze o pomoc poniewaz jestem w martwym punkcie.

Pozdrawiam
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Thaal
post
Post #2





Grupa: Zarejestrowani
Postów: 31
Pomógł: 0
Dołączył: 1.06.2003

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


witam...

własnie niedawno bawiłem się czymś podobnym i spłodziłem takie coś

założenie: nie jest określona głębokość podkategorii

  1. <?
  2.  
  3. class menu
  4. {
  5. private $link;
  6. private $stos = array();
  7.  
  8. function __construct()
  9. {
  10. global $_GET;
  11. $this -> link = mysql_connect('127.0.0.1', 'user', 'pssw') or die ('nie mozna polaczyz z baza danych');
  12. mysql_select_db('menu');
  13. if(!isset($_GET['id']))
  14. {
  15.  $this -> stos1(0);
  16. } else {
  17.  $this -> stos1($_GET['id']);
  18. }
  19. }
  20.  
  21. function make_menu()
  22. {
  23. $c = count($this -> stos);
  24. $arr = array();
  25. if($c == 1)
  26. {
  27.  $arr = $this -> pomocnicza($this -> stos[$c - 1], $c - 1);
  28. } else {
  29. for($i = 0; $i < $c; $i++)
  30. {
  31. if($i == 0)
  32. {
  33. $a = $this -> pomocnicza($this -> stos[$i], $i);
  34. } else {
  35. $b = $this -> pomocnicza($this -> stos[$i], $i);
  36. $a = $this -> tablice($b, $a, $this -> stos[$i - 1]);
  37. }
  38. }
  39. $arr = $a;
  40. }
  41. $c = count($arr);
  42. for($i = 0; $i < $c; $i++)
  43. {
  44. echo &#092;"<a href=\"index.php?id=\".$arr[$i][0].\"\">\".$arr[$i][0].\"</a> poziom:\".$arr[$i][5].\"<br>\";
  45. }
  46.  
  47. }
  48.  
  49. function pomocnicza($var, $i)
  50. {
  51. $zap = &#092;"SELECT * FROM menu WHERE id_parent = '\".$var.\"' AND visible = '1';\";
  52. $wyn = mysql_query($zap);
  53. while($line = mysql_fetch_array($wyn))
  54. {
  55. $line[] = $i;
  56. $a[] = $line;
  57. }
  58. return $a;
  59. }
  60.  
  61. function tablice($var1, $var2, $var3)
  62. {
  63. $a = array();
  64. for($i = 0; $i < count($var1); $i++)
  65. {
  66. $a[] = $var1[$i];
  67. if($var1[$i][0] == $var3)
  68. {
  69. for($j = 0; $j < count($var2); $j++)
  70. {
  71. $a[] = $var2[$j];
  72. }
  73. }
  74. }
  75. return $a;
  76. }
  77.  
  78. function stos1($var)
  79. {
  80. if($var == '0')
  81. {
  82. $this -> stos[] = $var;
  83. $this -> make_menu();
  84. } else {
  85. $this -> stos[] = $var;
  86. $this -> get_parent($var);
  87. }
  88. }
  89.  
  90. function get_parent($var)
  91. {
  92. $zap = &#092;"SELECT id_parent FROM menu WHERE id = '\".$var.\"';\";
  93. $l = mysql_query($zap);
  94. $line = mysql_fetch_array($l);
  95. $this -> stos1($line[id_parent]);
  96. }
  97. }
  98. ?>


i struktura bazy:

  1. CREATE TABLE `menu` (
  2. `id` int(4) NOT NULL AUTO_INCREMENT,
  3. `id_parent` int(4) NOT NULL DEFAULT '0',
  4. `visible` enum('0','1') NOT NULL DEFAULT '0',
  5. `text` varchar(100) NOT NULL DEFAULT '',
  6. `val` varchar(100) NOT NULL DEFAULT '',
  7. PRIMARY KEY (`id`)
  8. )



nie testowalem tego za bardzo więc nie wiem czy na 100 % jest to poprawne (a raczej na 100 % wiem że się wysypie w kilku przypadkach) tak więc jak znajdę czas to to jeszcze przerobię, popoprawiam itede itepe... sugestie mile widziane

Ten post edytował Thaal 4.11.2004, 16:21:16
Go to the top of the page
+Quote Post

Posty w temacie
- telepawel   Nielimitowana Ilosc Kategorii.   20.07.2004, 17:19:23
- - invx   z tego co zrozumialem po prostu zastosuj do katego...   20.07.2004, 17:36:25
- - hwao   Moze sie przyda: http://amnesty.scene.pl/~szacool/...   20.07.2004, 17:44:19
- - telepawel   hwao...DZIEKUJE BARDZO!! Teraz wyglada to...   20.07.2004, 18:01:14
- - orson   witam ... mozesz tez zastosowac system ktory jest...   20.07.2004, 22:23:19
- - Pianandrill   Z drzewkami się aktualnie ścieram. Podoa mi się ar...   14.10.2004, 00:15:56
- - orson   witam ... [pod]kategorie usuwaja sie same: [SQL] ...   14.10.2004, 09:44:14
- - a79rtur   pozwólcie ze sie wtrące w skrypcie z ksiazki mam ...   14.10.2004, 11:18:19
- - Vengeance   no ok spoko sposob orson tylko po co ta liczba prz...   14.10.2004, 14:06:48
- - orson   witam ... to jest copy and paste z php ... [SQL]...   14.10.2004, 14:46:01
- - Vengeance   to czy final czy nie to akurat dla mnie malo wazne...   14.10.2004, 15:16:10
- - Pianandrill   Wydaje mi się, że mimo wszystko jest to zbyt skomp...   15.10.2004, 02:38:20
- - orson   witam ... hmm ... nie wiem jaki masz problem z pr...   15.10.2004, 08:34:00
- - Vengeance   hmm no cos tam naskrobalem. Poniewaz jest to moje ...   19.10.2004, 13:30:22
- - orson   witam ... jestem aktualnie zupelnie bez czasu wie...   19.10.2004, 21:13:03
- - Vengeance   no więc: klasa Trees: + działanie: http://vengean...   20.10.2004, 17:38:00
- - nediam   no dobra a jak w takim razie dodac jakis elment do...   23.10.2004, 15:01:07
- - bendi   Mielismy taka dyskusje na WebHelpie, http://forum....   25.10.2004, 11:26:32
- - orson   witam ... nie mialem za duzo czasu zeby sie jej p...   28.10.2004, 19:40:12
- - nediam   Cytat(orson @ 2004-10-28 20:40:12)po swietach...   28.10.2004, 21:15:09
- - Vengeance   Jeśli chodzi o to, aby do testowego drzewka które ...   28.10.2004, 21:20:26
- - orson   Cytat(nediam @ 2004-10-28 21:15:09)a kto powi...   28.10.2004, 23:26:42
- - Vengeance   tak jak mówiłem sama obłsuga drzewek działa wszędz...   30.10.2004, 18:59:38
- - herbatniczek   ccześć, jestem w trakcie tworzenia sklpeu komputer...   3.11.2004, 16:00:01
- - orson   witam ... Cytatkarty A to liczba 1. Zaś A.A.D.A to...   4.11.2004, 09:00:59
- - Thaal   witam... własnie niedawno bawiłem się czymś podob...   4.11.2004, 11:01:41
- - Vengeance   a ja mam pytanie czy wiesz ile to zapytan generuje   4.11.2004, 15:57:11
- - Thaal   Cytat(Vengeance @ 2004-11-04 16:57:11)a ja ma...   4.11.2004, 16:29:28
- - orson   witam ... po przemysleniu dzis problemu z produkt...   4.11.2004, 22:12:18
- - nediam   Vengeance: twoj sposob nie dziala chyba tak jak po...   14.11.2004, 20:30:59
- - Vengeance   o dzieki za cynk. jak znajde chwile checi to to sp...   14.11.2004, 20:39:45
- - orson   witam ... Vengeance poszedl na latwizne i uzyl pr...   14.11.2004, 22:03:52
- - nediam   orson: o to wlasnie chodzilo thx ale mam taki maly...   15.11.2004, 14:24:41
- - orson   witam ... Cytatczy nie powinno byc : a dziala ja...   15.11.2004, 15:13:30
- - nediam   orson nie wiem o co ci chodzi bo to co napisalem j...   15.11.2004, 21:24:05
- - orson   witam ... pamietam ze mialem z tym problem ... wy...   15.11.2004, 22:00:05
- - Vengeance   ok poprawiłem. "dobra" ( bo rozwojowa :]...   15.11.2004, 22:39:47


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: 8.10.2025 - 10:21