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
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 (IMG:http://forum.php.pl/style_emoticons/default/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?
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ść?
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
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
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)
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
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 22.08.2025 - 20:06