Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Neograničen broj kategorija

[es] :: PHP :: Neograničen broj kategorija

[ Pregleda: 1425 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

FoxVanis
IMS-tim (Internet Marketing Studio)
Subotica

Član broj: 89834
Poruke: 95
*.adsl-a-2.sezampro.rs.



+7 Profil

icon Neograničen broj kategorija07.10.2012. u 23:43 - pre 96 meseci
Pozdrav ljudi. Imam jedna problem.
Za početak bih dao strukturu baze za kategorije:

id
idkat (id kategorije)
naziv
seolink
opis
aktivno (1-on, 0-off)

Ne umem uraditi u PHP-u da imam neograničen broj kategorija, podkategorija, podpodkategorija itd...

Hoću upravo ovo:

Kategorija
Podkategorija
Podkategorija
Podkategorija
PodPodkategorija

i tako u nedogled
Web Designer, PHP Developer
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Neograničen broj kategorija08.10.2012. u 00:11 - pre 96 meseci
http://mikehillyer.com/article...ng-hierarchical-data-in-mysql/
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

FoxVanis
IMS-tim (Internet Marketing Studio)
Subotica

Član broj: 89834
Poruke: 95
*.adsl-3.sezampro.rs.



+7 Profil

icon Re: Neograničen broj kategorija09.10.2012. u 07:49 - pre 96 meseci
Hvala ti Gorane. Evo onda mog rešenja pa ko zapne kao ja da ima:

-Prvo se kreira tabela na primer

Code:

CREATE TABLE category(
        category_id INT AUTO_INCREMENT PRIMARY KEY,
        name VARCHAR(20) NOT NULL,
        parent VARCHAR(4) DEFAULT NULL
);

INSERT INTO category VALUES(1,'ELECTRONICS',NULL),(2,'TELEVISIONS',1),(3,'TUBE',2),
        (4,'LCD',2),(5,'PLASMA',2),(6,'PORTABLE ELECTRONICS',1),(7,'MP3 PLAYERS',6),(8,'FLASH',7),
        (9,'CD PLAYERS',6),(10,'2 WAY RADIOS',6);


Tabela izgleda sada ovako:

Code:

SELECT * FROM category ORDER BY category_id;
SELECT * FROM category ORDER BY category_id;
+-------------+----------------------+--------+
| category_id | name                 | parent |
+-------------+----------------------+--------+
|           1 | ELECTRONICS          |   NULL |
|           2 | TELEVISIONS          |      1 |
|           3 | TUBE                 |      2 |
|           4 | LCD                  |      2 |
|           5 | PLASMA               |      2 |
|           6 | PORTABLE ELECTRONICS |      1 |
|           7 | MP3 PLAYERS          |      6 |
|           8 | FLASH                |      7 |
|           9 | CD PLAYERS           |      6 |
|          10 | 2 WAY RADIOS         |      6 |
+-------------+----------------------+--------+


Zatim se izlista veoma jednostavno:

Code:

<?php
/*********************************************
* Created By: Ivijan-Stefan Stipić
* Web Designer, PHP Developer
* Copyright: Free
*********************************************/
    function prikazi_podkategorije($category_id, $nivo) 
    {
            // Izvuci sve povezane podkategorije
            $rezultat = mysql_query("SELECT * FROM  `category` 
                                    WHERE `parent`='".$category_id."' 
                                    ORDER BY  `category`.`category_id` ASC ");
            $broj=mysql_num_rows($rezultat);
            echo '<ul>';
            // prikazi sve povezane podkategorije
            while ($row = mysql_fetch_array($rezultat)) 
            {
                // Ovaj kod možete menjatipo zelji, on prikazuje kompletno stablo
                echo '<li>'.str_repeat('  ',$nivo) . $row['name'].'</li>';
               prikazi_podkategorije($row['category_id'], $nivo+1);
            }
            echo '</ul>';
    }
    // IZLISTAJ GLAVNE KATEGORIJE I SMESTI OSTALE PODKATEGORIJE ISPOD NJIH
    $kategorija_query = mysql_query("SELECT * FROM  `category` 
                                WHERE `parent`='NULL' 
                                ORDER BY  `category`.`category_id` ASC ");
    echo '<ul>';
        while($kategorija=mysql_fetch_array($kategorija_query))
        {
            // Prikazi glavnu kategoriju, ostale podkategorije se automatski generišu
            echo '<li>'.$kategorija['name'];
            prikazi_podkategorije($kategorija['category_id'],1);
            echo'</li>';
        }
    echo '</ul>';
?>


I izgleda ovako:

Code:

ELECTRONICS
---TELEVISIONS
---------TUBE
---------LCD
---------PLASMA
---PORTABLE ELECTRONICS
---------MP3 PLAYERS
---------------FLASH
---------CD PLAYERS
---------2 WAY RADIOS


Uživajte!
Web Designer, PHP Developer
 
Odgovor na temu

[es] :: PHP :: Neograničen broj kategorija

[ Pregleda: 1425 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.