Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [php] Kategorie
bangoo
post
Post #1





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Ma ktoś z was jakiś pomysł jak zrobic kategorie np. artykułów w bazie danych? Niemam pomysłu na algorytm a może ktoś z was już kiedyś to robił.
Z góry dzięki.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 13)
Cienki1980
post
Post #2





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Jedna tabela w bazie danych o mniej więcej takiej strukturze:
id-auto_increment int
parent_id - int
name - varchar

prosty opis:
id- nie trzeba tłumaczyć (IMG:http://forum.php.pl/style_emoticons/default/biggrin.gif)
parent_id - id kategorii nadrzędnej ... dla kategorii głównych jest równe 0
name - nazwa kategorii

Za pomocą takiej tabeli możesz stworzyć drzewiastą strukturę kategorii produktów.
Go to the top of the page
+Quote Post
bangoo
post
Post #3





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Juz myslalem nad tym rozwiązaniem, ale niewiedziałem jak ułożyc tą pętlę. Jeżeli ktoś mógłby pomóc.. (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)
Go to the top of the page
+Quote Post
Cienki1980
post
Post #4





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(bangoo @ 18.03.2007, 16:35:58 ) *
Juz myslalem nad tym rozwiązaniem, ale niewiedziałem jak ułożyc tą pętlę. Jeżeli ktoś mógłby pomóc.. (IMG:http://forum.php.pl/style_emoticons/default/rolleyes.gif)

To może sprecyzuj jaką pętlę (IMG:http://forum.php.pl/style_emoticons/default/questionmark.gif)
Go to the top of the page
+Quote Post
bangoo
post
Post #5





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Żeby wyświetli taki ciąg: Kategoria główna -> Kategoria babcia -> Kategoria matka -> Kategoria A
mając dwie tabele (id, id_parent). Będę musiał utworzyc jakąś pętlę, którap o sprawdzeniu rodzica Kategori A sprawdzi rodzica Kategori matka, a nastepnie rodzica kategorii matka i jezeli rodzic Kategori babcia == 0 to oznacza ze to kategoria główna.
Go to the top of the page
+Quote Post
Cienki1980
post
Post #6





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


  1. <?php
  2. $g=0;
  3. $tmp_id=30; // to jest id aktualnego regionu 
  4. do
  5. {
  6.  $pyt1=mysql_query("select id,id_region,name from region where id='".$tmp_id."'");
  7.  $ile1=mysql_num_rows($pyt1);
  8.  if($ile1>0)
  9.  {
  10. $ans1=mysql_fetch_array($pyt1);
  11. $tab[$g]['id']=$ans1['id'];
  12. $tab[$g]['name']=$ans1['name'];
  13. $tmp_id=$ans1['id_region'];
  14. $g++;
  15.  }
  16.  else
  17. $tmp_id=0;
  18. }
  19. while($tmp_id!=0);
  20.  
  21. echo"<pre>";print_r($tab);echo "</pre>";
  22. ?>

Tu masz przykład z jakiegoś dawnego mojego skryptu, tutaj były odczytywane regiony.

Podając $tmp_id jako id regionu do sprawdzenia w tablicy $tab była cała ścieżka regionów do regionu głównego ( w moim przypadku był tylko jeden taki WORLD )
Go to the top of the page
+Quote Post
bangoo
post
Post #7





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Dobra, mam już to w tablicy, a jak to wyświetlic? (nigdy sie niebawiłem tablicami ;/)
Cytat
Array
(
[0] => Array
(
[id] => 2
[title] => mniejglown
)

[1] => Array
(
[id] => 1
[title] => glowna
)

)


Ten post edytował bangoo 18.03.2007, 17:48:54
Go to the top of the page
+Quote Post
misiek172
post
Post #8





Grupa: Zarejestrowani
Postów: 656
Pomógł: 3
Dołączył: 26.10.2005
Skąd: Częstochowa

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


można równierz do pomocy zobaczyć klase nospor'a "tree (drzewo folderów)".

Ten post edytował misiek172 18.03.2007, 17:47:56
Go to the top of the page
+Quote Post
Cienki1980
post
Post #9





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(bangoo @ 18.03.2007, 17:45:52 ) *
Dobra, mam już to w tablicy, a jak to wyświetlic? (nigdy sie niebawiłem tablicami ;/)


Zaglądamy do manuala i sprawdzamy co robi array_reverse()
Go to the top of the page
+Quote Post
bangoo
post
Post #10





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Jak to wyswietli w taki sposób? - glowny>babcia>matka
Go to the top of the page
+Quote Post
Cienki1980
post
Post #11





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


Cytat(bangoo @ 18.03.2007, 18:07:10 ) *
Jak to wyswietli w taki sposób? - glowny>babcia>matka

Odwróć tablicę za pomocą array_reverse() ... a potem zastosuj pętlę foreach() i odpowiednio sobie to wyświetl .
Go to the top of the page
+Quote Post
bangoo
post
Post #12





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


Ja już to zrobiłem za pomocą do..while ale nie działa do końca
  1. <?php
  2. do
  3. {
  4.  echo $tab[$d]['title'] . ">";
  5. $d++;
  6. }
  7. while($d == $x);
  8. ?>

Tutaj $x to to samo co u Ciebie w skrypcie $g

wynik:
Cytat
do
{
echo $tab[$d]['title'] . ">";
$d++;
}
while($d == $x);


Ten post edytował bangoo 18.03.2007, 18:36:49
Go to the top of the page
+Quote Post
Cienki1980
post
Post #13





Grupa: Przyjaciele php.pl
Postów: 1 590
Pomógł: 40
Dołączył: 11.01.2007
Skąd: Centrum

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


  1. <?php
  2. foreach($tab as $k=>$v)
  3. {
  4.  echo $v['title'].">";
  5. }
  6. ?>


Pisane na szybko i będzie feler bo na końcu będzie znak > ale to już najmniejszy problem.
Go to the top of the page
+Quote Post
bangoo
post
Post #14





Grupa: Zarejestrowani
Postów: 41
Pomógł: 0
Dołączył: 14.03.2007

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


No i to by było chyba na tyle. (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Wielkie dzięki Cienki (IMG:http://forum.php.pl/style_emoticons/default/smile.gif)
Można zamknąc/usunąc.

Ten post edytował bangoo 18.03.2007, 18:48:46
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: 23.10.2026 - 13:52