Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Skrypt kategori:
wozniak
post
Post #1





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Witam napisałem skrypt kategori i nie wiem jak zrobic ze jak sie usunie główna kategorie to usuwaja sie jej wszystkie podkategorie?
Skrypt:
  1. <? 
  2.  
  3. function wszystkie(){ ?> <table border=\"0\" width=\"442\">
  4.  <?php  
  5. {  
  6.  $zapytanie = sql(&#092;"SELECT * FROM kategorie WHERE nalezy='0'\"); 
  7.  while ($rekord = mysql_fetch_array($zapytanie)) 
  8. {  
  9.  $id = $rekord['id'];
  10.  $nazwa = $rekord['nazwa'];
  11.  $nazlezy = $rekord['nazlezy'];
  12.  $foto = $rekord['foto'];
  13.  
  14.  
  15. echo&#092;" <tr>
  16. <td height=&#092;"21\" width=\"19\"><img src=\"images/folder.gif\"></td>
  17. <td height=&#092;"21\" width=\"358\"><a href=\"index.php?wlacz=kategorie&co=kat&id=$id\">$nazwa</a></td>
  18. <td height=&#092;"21\" width=\"16\"><img src=\"images/edytuj.png\"></td>
  19. <td height=&#092;"21\" width=\"16\"><a href=\"index.php?wlacz=kategorie&co=usun_kat&id=$id\"><img border=\"0\" src=\"images/usun.png\"></a></td>
  20. </tr>&#092;";
  21.  
  22.  
  23. }
  24. } print(&#092;"</table>\");
  25. echo&#092;"<table><tr><td><BR><a href=\"index.php?wlacz=kategorie&co=Dodaj_kat\">dodaj kategorie</a></td></tr></table>\";
  26. }
  27.  
  28.  
  29. function kat($id){ ?> <table border=\"0\" width=\"442\" height=\"84\">
  30.  <?php  
  31. {  
  32.  $zapytanie = sql(&#092;"SELECT * FROM kategorie WHERE nalezy='$id'\"); 
  33.  while ($rekord = mysql_fetch_array($zapytanie)) 
  34. {  
  35.  $id = $rekord['id'];
  36.  $nazwa = $rekord['nazwa'];
  37.  $nazlezy = $rekord['nazlezy'];
  38.  $foto = $rekord['foto'];
  39.  
  40.  
  41. echo&#092;" <tr>
  42. <td height=&#092;"21\" width=\"19\"><img src=\"images/folder.gif\"></td>
  43. <td height=&#092;"21\" width=\"358\"><a href=\"index.php?wlacz=kategorie&co=kat&id=$id\">$nazwa</a></td>
  44. <td height=&#092;"21\" width=\"16\"><img src=\"images/edytuj.png\"></td>
  45. <td height=&#092;"21\" width=\"16\"><a href=\"index.php?wlacz=kategorie&co=usun_kat&id=$id\"><img border=\"0\" src=\"images/usun.png\"></a></td>
  46. </tr>&#092;";
  47.  
  48.  
  49.  
  50. }  
  51. } 
  52.  
  53.  
  54. if (isset($id)) { $der=&#092;"&id=$id\"; } echo\"<BR><a href=\"index.php?wlacz=kategorie&co=Dodaj_kat$der\">dodaj kategorie</a>\";
  55. print(&#092;"</table>\");
  56. }
  57.  function Dodaj_kat($id){ 
  58.  
  59.  if (isset($id)) { $der=&#092;"&id=$id\"; }
  60.  echo&#092;"<form method=\"post\" enctype=\"multipart/form-data\" action=\"index.php?wlacz=kategorie&co=dodaj_kat_tak$der\">
  61. <p>Nazwa: <input type=&#092;"text\" name=\"nazwa\" size=\"20\"><br>
  62. <br>
  63. <input type=&#092;"submit\" value=\"Dodaj\"></p>
  64. </form>&#092;";
  65.  } 
  66. function dodaj_kat_tak($id,$nazwa){
  67.  
  68.  if (!isset($id)) {$id=&#092;"0\";}
  69. $query = sql(&#092;"INSERT INTO kategorie SET nalezy='$id', nazwa='$nazwa', foto='$foto';\"); 
  70. print(&#092;" Kategoria zostala Dodana\");
  71. print(&#092;"<BR> <a href=\"index.php?wlacz=kategorie\">Wroc</a>\");  
  72.  
  73. }
  74. function usun_kat($id){
  75.  
  76. {  
  77.  $zapytanie = sql(&#092;"SELECT * FROM kategorie WHERE id='$id'\"); 
  78.  while ($rekord = mysql_fetch_array($zapytanie)) 
  79. {  
  80.  
  81.  $nazwa = $rekord['nazwa'];
  82.  $nazlezy = $rekord['nazlezy'];
  83.  $foto = $rekord['foto'];
  84. echo&#092;"Napewno chcesz usunac kategorie : <i>$nazwa</i>?<BR><a href=\"index.php?wlacz=kategorie&co=usun_kat_tak&id=$id\">TAK</a> | <a href=\"index.php\">NIE</a>\";
  85. }
  86.  
  87.  }
  88.  } 
  89.  function usun_kat_tak($id) {
  90. $zapytanie = sql(&#092;"DELETE FROM kategorie WHERE id='$id';\"); 
  91. print(&#092;" Kategoria zostala usunieta\");
  92. print(&#092;"<BR> <a href=\"index.php?wlacz=kategorie\">Wroc</a>\");
  93.  } 
  94.  switch ($co) {
  95.  
  96. default:
  97. wszystkie();
  98. break;
  99.  
  100. case &#092;"usun_kat\":
  101. usun_kat($id);
  102. break;
  103.  
  104. case &#092;"usun_kat_tak\":
  105. usun_kat_tak($id);
  106. break;
  107.  
  108. case &#092;"dodaj\":
  109. dodaj();
  110. break;
  111.  
  112. case &#092;"zapisz\":
  113. zapisz($nazwa);
  114. break;
  115.  
  116. case &#092;"kat\":
  117. kat($id);
  118. break;
  119.  
  120. case &#092;"Dodaj_kat\":
  121.  dodaj_kat($id);
  122. break;
  123.  
  124. case &#092;"dodaj_kat_tak\":
  125.  dodaj_kat_tak($id,$nazwa);
  126. break;
  127. }
  128. ?>


My sql:
  1. CREATE TABLE `kategorie` (
  2. `id` int(255) NOT NULL AUTO_INCREMENT,
  3. `nazwa` varchar(255) NOT NULL DEFAULT '',
  4. `foto` varchar(255) NOT NULL DEFAULT '',
  5. `nalezy` varchar(255) NOT NULL DEFAULT '0',
  6. PRIMARY KEY (`id`)
  7. ) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=8 ;
  8.  
  9. --
  10. -- Zrzut danych tabeli `kategorie`
  11. --
  12.  
  13. INSERT
  14. INTO `kategorie` VALUES (1, 'Akcesoria', '', '0');
  15. INSERT
  16. INTO `kategorie` VALUES (2, 'Chłodzenie', '', '0');
  17. INSERT
  18. INTO `kategorie` VALUES (3, 'Chłodzenie H2O', '', '0');
  19. INSERT
  20. INTO `kategorie` VALUES (4, 'Obudowy', '', '0');
  21. INSERT
  22. INTO `kategorie` VALUES (5, 'Okablowanie', '', '0');
  23. INSERT
  24. INTO `kategorie` VALUES (6, 'Okna', '', '0');
  25. INSERT
  26. INTO `kategorie` VALUES (7, 'Oświetlenie', '', '0');
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




glowna i podrzedne:
"delete from kategorie where id=$id or nalezy=$id"


Cytat
CREATE TABLE `kategorie` (
`id` int(255) NOT NULL auto_increment,
`nazwa` varchar(255) NOT NULL default '',
`foto` varchar(255) NOT NULL default '',
`nalezy` varchar(255) NOT NULL default '0',
PRIMARY KEY (`id`)
) TYPE=MyISAM

Coś tu chyba namieszales:
1) id int(255) duzo cos. wystarczy 11
2) nalezy varchar(255). powinno być tez int (11). domyslam się ze nalezy to odnosi sie do id, wiec musi byc ten sam typ


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #3





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Dizeki wielkie w sumie było to łatwe ale jakos na to nie wpadłem;) a co w ogole sądzisz o tym systemie?A jak jakas kategoria nie bedzie miala podkategori to wyskoczy bład?

Dodałem:
Ale jak bedzie taki układ
-kategoria1
- Podkat1
-Podkat2
-Podkat3

To podkategoria 1,2 i 3 sie nie usunie

Ten post edytował wozniak 24.03.2005, 10:27:17
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Cytat
a co w ogole sądzisz o tym systemie?

Strasznie chaotyczny tek kod, przynajmniej jak dla mnie i jakoś się w niego nie zagłębiam. Odpowiedziałem tylko na Twoje pytanie (do tego trzeba bylo znac tylko pola w tabeli tongue.gif )

Cytat
To podkategoria 1,2 i 3 sie nie usunie

A czemu się nie usunie? Jeśli będą miały wpisane nalezy odpowiednie to się usunie. Chyba że nie zrozumialem o co Ci chodzi.

Cytat
A jak jakas kategoria nie bedzie miala podkategori to wyskoczy bład?

A niby czemu?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #5





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Zobacz
kategoria1 ma id 1
Podkat1 ma nalezy 1 i swoje id 2
podkat2 ma nalezy 2 i swoje id 3

I teraz jak usune kat1 to te dwie podkategorie nie usuna sie nie?
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




No nie. Myslałem że można tylko jedną podkategorię robić.
Tych zagnieżdżen podkategorii może być dowolna ilość?


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #7





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


tak
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




oki, napisalem szybki skrypcik do pobierania wszystkich podkategorii wlącznie z kategorią szukaną. W rezultacie w tablicy $all będą wszystkie id kategori do usunięcia.
  1. <?php
  2.  
  3. $kat[0]['id']=1;
  4. $kat[0]['nalezy']=0;
  5. $kat[1]['id']=2;
  6. $kat[1]['nalezy']=1;
  7. $kat[2]['id']=3;
  8. $kat[2]['nalezy']=2;
  9.  
  10. $all=array();
  11. function GetAll($id,$kat,&$all)
  12. {
  13.     foreach ($kat as $k)
  14.     {
  15.         if ($k['nalezy']==$id)
  16.         {
  17.             $all[]=$k['id'];
  18.             GetAll($k['id'],$kat,$all);
  19.         }
  20.     }
  21. }
  22. $id=1;//kategoria do usunięcia
  23. GetAll($id,$kat,$all);
  24. $all[]=$id;
  25.  
  26. ?>


oczywiście pod tablicę $kat należy wstawić tablicę w wyniku zapytania:
select id,nalezy from kategorie

Mając już tablicę $all piszesz:
'delete from kategorie where id in ('.implode(',',$all).')'

Ten post edytował nospor 24.03.2005, 11:14:46


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #9





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


To jak bedzie duzo podkategori to on je usunie?Chyba nie. bede musiał sam pisac : $kat[0]['id']=1;
$kat[0]['nalezy']=0;
$kat[1]['id']=2;
$kat[1]['nalezy']=1;
$kat[2]['id']=3;
$kat[2]['nalezy']=2; tak?

Ten post edytował wozniak 24.03.2005, 11:21:05
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




Nie, ten skrypt wyszukuje wszystkie podkategorie. Mając wszystkie podkategorie możesz je usunąć. Jedyną rzecz jaką musisz zrobić to zbudować to tablicę. A ją budujesz poprzez pobranie kolejnych rekordów z resultatu zapytania.

  1. <?php
  2.  
  3. $zapytanie = sql(&#092;"SELECT id,nalezy FROM kategorie\"); 
  4. while ($rekord = mysql_fetch_array($zapytanie)) 
  5. {
  6. $kat['id']=$rekord['id'];
  7. $kat['nalezy']=$rekord['nalezy'];
  8. }  
  9.  
  10. ?>

ten kod pisalem z palca, więc może być jakiś drobny bląd


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #11





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


Cos chyba zle zrobiłem zobacz:
  1. <?php include(&#092;"../polacz.php\");
  2.  
  3. $zapytanie = sql(&#092;"SELECT id,nalezy FROM kategorie\"); 
  4. while ($rekord = mysql_fetch_array($zapytanie)) 
  5. {
  6. $kat['id']=$rekord['id'];
  7. $kat['nalezy']=$rekord['nalezy'];
  8. }  
  9.  
  10. ?><?php
  11.  
  12. $kat[0]['id']=1;
  13. $kat[0]['nalezy']=0;
  14. $kat[1]['id']=2;
  15. $kat[1]['nalezy']=1;
  16. $kat[2]['id']=3;
  17. $kat[2]['nalezy']=2;
  18.  
  19. $all=array();
  20. function GetAll($id,$kat,&$all)
  21. {
  22. foreach ($kat as $k)
  23. {
  24. if ($k['nalezy']==$id)
  25. {
  26. $all[]=$k['id'];
  27. GetAll($k['id'],$kat,$all);
  28. }
  29. }
  30. }
  31. $id=1;
  32. GetAll($id,$kat,$all);
  33. $all[]=$id;
  34.  
  35. ?> <?php
  36. $query = sql('delete from kategorie where id in ('.implode(',',$all)) 
  37.  
  38. ?>
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 557
Pomógł: 6315
Dołączył: 27.12.2004




oj myslalme ze jestes bardziej domyslny (trochę myślisz). Nie chcę się czepiać,ale chyba się pomyliłem (wybacz).
Skoro juz w pętli pobierasz tablicę $kat, to nie przypisuj jej potem ręcznie wartości. Ja je przypisałem, aby w skrypcie, który testuję mieć jakąś tablicę.

Pobierasz gdzieś tablicę $kat:
  1. <?php
  2.  
  3. $zapytanie = sql(&#092;"SELECT id,nalezy FROM kategorie\"); 
  4. while ($rekord = mysql_fetch_array($zapytanie)) 
  5. {
  6. $kat['id']=$rekord['id'];
  7. $kat['nalezy']=$rekord['nalezy'];
  8. }
  9.  
  10. ?>

No i już jest.
Teraz funkcja do pobierania podkategorii:
  1. <?php
  2.  
  3. function GetAll($id,$kat,&$all)
  4. {
  5. foreach ($kat as $k)
  6. {
  7. if ($k['nalezy']==$id)
  8. {
  9. $all[]=$k['id'];
  10. GetAll($k['id'],$kat,$all);
  11. }
  12. }
  13. }
  14.  
  15. ?>


Teraz jest funkcja, która dla danego id wykasuje kategorię z podkategoriami:
  1. <?php
  2.  
  3. function RemoveCategory($id)
  4. {
  5. $all=array();
  6. GetAll($id,$kat,$all);
  7. $all[]=$id;
  8. $query = sql('delete from kategorie where id in ('.implode(',',$all));
  9. }
  10.  
  11. ?>

Tu pojawia się funkcja sql(....). Zakładam, że jest to jakaś twoja funkcja, która wykonuje zapytanie. (sam ją podałeś w pierwszym poście)


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
wozniak
post
Post #13





Grupa: Zarejestrowani
Postów: 278
Pomógł: 0
Dołączył: 21.11.2003

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


ok, dzieki za skrypt;)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 07:09