Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Codeigniter listanje menija i podmenija iz dve razlicite tabele

PHP
  • 13 odgovora
  • 4.692 pregleda

Najnovija ↓

Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 16:46 · pre 134 meseca #1
Imam dve tabele, menu i submenu

Tabela menu: id_menu, menu_name

1, Menu 1
2, Menu 2
3, Menu 3

Tabela submenu; id_sub, id_menu, sub_name

1,1, Sub 1.1
2,1, Sub 1.2
3,1, Sub 1.3
4,2, Sub 2.1
5,3, Sub 3.1
6,3, Sub 3.2

Kako da napisem model, contoler i view da bih dobio listu na sledeci nacin:

Menu 1
Sub 1.1
Sub 1.2
Sub 1.3
Menu 2
Sub 2.1
Menu 3
Sub 3.1
Sub 3.2

Hvala unapred
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 17:56 · pre 134 meseca #2
Iz dokumentacije:

Code (php):

$this->db->select('*');
$this->db->from('blogs');
$this->db->join('comments', 'comments.id = blogs.id');
$this->db->order_by('title DESC, name ASC');
$query = $this->db->get();
 


Pretpostavljam ovako nekako:

Code (php):

$this->db->select('menu_name, sub_name');
$this->db->from('menu');
$this->db->join('submenu', 'submenu.id_menu = menu.id_menu');
$this->db->order_by('id_menu ASC, id_sub ASC');
$query = $this->db->get();
 
Potpis
-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 18:11 · pre 134 meseca #4
Jesi li prelistao dokumentaciju?

Controller.
View.
Model.

Stvar je u tome da ti niko nece pisati kod za dz, vec moras da postavis kod koji ne radi da bi mogao ocekivati pomoc u tom dijelu.

edit:
Pa podijeli s nama koja greska je u pitanju - sta pise.
Potpis
-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 18:16 · pre 134 meseca #5
Model:

Code:

     public function Kategorije()
    {

        $query=$this->db->select('*')      
                        ->from('menu')
                        ->order_by('top','ASC')
                        ->get();
                        
        return $query->result();  
    }


Controller:

Code:

    public function Index()
    {        
        $data['kategorije']=$this->users_mod->Kategorije();
        
        $this->load->view('template/main',$data);
    }



View:
Code:

if(count($kategorije) > 0)   
                    {
                        foreach($kategorije as $row)
                        { 
                          echo "<div class='panel-group panel-meni' id='accordion'>
                            <div class='panel panel-default panel-menija'>
                              <a data-toggle='collapse' data-parent='#accordion' href='#collapse{$row->top}'><div class='panel-heading meni-kategorija'>
                                <h4 class='panel-title lista-kategorija-font'>
                                  {$row->menu_name}
                                </h4>
                              </div></a> 
                                  <div id='collapse{$row->top}' class='panel-collapse collapse collapse podkategorija'>
                                    <div class='panel-body podkategorija'>
                                     
                                        <ul class='lista-kategorija lista-kategorija-font'>
                                            <li>Pod 1</li>
                                            <li>Pod 2</li>
                                            <li>Pod 3</li>
                                        </ul>
                                    
                                    </div>
                                  </div>
                             </div>
                            </div>";        
                                    
                        }
                    } 


E ovaj kod radi i iscitava samo kategorije, a podkategorije ne znam da ubacim, u delu:
Code:

                                        <ul class='lista-kategorija lista-kategorija-font'>
                                            <li>Pod 1</li>
                                            <li>Pod 2</li>
                                            <li>Pod 3</li>
                                        </ul>



Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 19:59 · pre 134 meseca #8
Pa u drugoj poruci imaš odgovor. Ne možeš iz baze selektovati samo meni i očekivati da se submeni sam zalepi za meni :)
Primer, ako imaš $data['meni'], tako uzmi i $data['podmeni'], u jednom selektuj meni, a u drugom podmeni i onda primeni ovo što sam ti gore napisao.
Potpis
https://www.youtube.com/watch?v=3ucPxwp0LOo
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 24.10.2015. u 22:00 · pre 134 meseca #9
Postavljeno u metod da se testira, pa treba odgovarajuce dijelove prebaciti u model (DB related) i view (foreach loop mostly).

Code (php):

public function t()
{
     $sql = "SELECT * FROM `menu`";
     $menu = $this->db->query($sql)->result_array();
         
     foreach ($menu as $k => $v)
     {
          if ($k === 0)
               $ids = $v['id_menu'];
          else
               $ids .= ',' . $v['id_menu'];
     }
         
     $sql = "SELECT * FROM `submenu` WHERE `submenu`.`id_menu` IN (" . $ids . ")";
     $submenu = $this->db->query($sql)->result_array();
         
     $result['ids'] = explode(',',$ids);
     $result['menu'] = $menu;
     $result['submenu'] = $submenu;
         
     foreach ($result['ids'] as $k => $menu_id)
     {
          echo $result['menu'][$k]['menu_name'], "<br>";
               
          foreach ($result['submenu'] as $l => $sub)
          {
               if (isset($result['submenu'][$l]['id_menu']) && $result['submenu'][$l]['id_menu'] === $menu_id)
               {
                    echo $result['submenu'][$l]['sub_name'], "<br>";
               }
          }
     }
}
 
Potpis
-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 25.10.2015. u 18:07 · pre 134 meseca #11
Citat:
Tpojka:
Postavljeno u metod da se testira, pa treba odgovarajuce dijelove prebaciti u model (DB related) i view (foreach loop mostly).

Code (php):

public function t()
{
     $sql = "SELECT * FROM `menu`";
     $menu = $this->db->query($sql)->result_array();
         
     foreach ($menu as $k => $v)
     {
          if ($k === 0)
               $ids = $v['id_menu'];
          else
               $ids .= ',' . $v['id_menu'];
     }
         
     $sql = "SELECT * FROM `submenu` WHERE `submenu`.`id_menu` IN (" . $ids . ")";
     $submenu = $this->db->query($sql)->result_array();
         
     $result['ids'] = explode(',',$ids);
     $result['menu'] = $menu;
     $result['submenu'] = $submenu;
         
     foreach ($result['ids'] as $k => $menu_id)
     {
          echo $result['menu'][$k]['menu_name'], "<br>";
               
          foreach ($result['submenu'] as $l => $sub)
          {
               if (isset($result['submenu'][$l]['id_menu']) && $result['submenu'][$l]['id_menu'] === $menu_id)
               {
                    echo $result['submenu'][$l]['sub_name'], "<br>";
               }
          }
     }
}
 


To je to, ovo sam ubacio u controller i video sam da ga izlistao na strani onako kako sam ja zamislio. Probao sam da u view prebacim sledeci deo:

Code (php):

     foreach ($result['ids'] as $k => $menu_id)
     {
          echo $result['menu'][$k]['menu_name'], "<br>";
               
          foreach ($result['submenu'] as $l => $sub)
          {
               if (isset($result['submenu'][$l]['id_menu']) && $result['submenu'][$l]['id_menu'] === $menu_id)
               {
                    echo $result['submenu'][$l]['sub_name'], "<br>";
               }
          }
     }
 


Ali naravno mi izbacuje gresku da su nepoznate varijable. Sad pokusavam to da dokucim kako da odradim.

P.S. @Panajotov mozda za tebe ove stvari nisu teske jer ih znas pa ti to deluje smesno, kao sto sigurno i za mene deluju neke stvari smesne koje ti mozda ne znas, ali ne treba se smejati drugome. Treba coveka nauciti da peca umesto mu dati ribu, ali mu prvo dati par riba pre nego sto pocne kapirati pecanje.

Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 25.10.2015. u 19:40 · pre 134 meseca #12
Nema besplatnog rucka. :D
Iako je vec sve rijeseno, evo jos malo pojednostavljeno.
U model ide sav dio koda do foreach petlje.
S tim da treba dodati
Code (php):
return (count($result['ids'] >= 1)) ? $result : FALSE;

, a u controller-u treba da se postavlja u varijablu kako vec i stoji.
Je li tako uradjeno?
PHP nije bas copy/paste. Moras da pratis ulazne i izlazne varijable. Tj moras znati sta su ti ulazne varijable i sta se ocekuje kao izlaz.
Greska bi vjerovatno bila to sto se u mom kodu vrse operacije nad $result nizom, a tvoj view fajl vjerovatno ocekuje $kategorije varijablu.
Ajd' sad zabaci i pecaj. Ako ne bude islo, jos malo krpi mrezu.
Potpis
-A Tpojke su Đuro - šta?
-Osnovne jedinice diverzantskih grupa!
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 25.10.2015. u 20:58 · pre 134 meseca #13
@nepoverljiv nisam imao nameru da te vređam, izvini ako si se našao uvređenim nije mi to bila namera. Hteo da ti nagovestim da neke stvari ne možeš da radiš kopi-pejst ili da očekuješ gotovo rešenje. Ono što ti upravo radiš, radio sam i ja, radi verovatno svako ko je nov u tome, a to je da ne razumeš šta se tu zapravo dešava. Kao što je @Trojka rekao, PHP nije baš kopi-pejst. Moraš da naučiš neke osnovne stvari, kao na primer nizove.
Pozdrav
Potpis
https://www.youtube.com/watch?v=3ucPxwp0LOo
Re: Codeigniter listanje menija i podmenija iz dve razlicite tabele 31.10.2015. u 20:24 · pre 134 meseca #14
Juhuuu to je to :D

Model:

Code:

    public function Proba()
    {
         $sql = "SELECT * FROM `menu`";
         $menu = $this->db->query($sql)->result_array();
             
         foreach ($menu as $k => $v)
         {
              if ($k === 0)
                   $ids = $v['id_menu'];
              else
                   $ids .= ',' . $v['id_menu'];
         }
             
         $sql = "SELECT * FROM `submenu` WHERE `submenu`.`id_menu` IN (" . $ids . ")";
         $submenu = $this->db->query($sql)->result_array();
             
         $result['ids'] = explode(',',$ids);
         $result['menu'] = $menu;
         $result['submenu'] = $submenu;
         
         return (count($result['ids'] >= 1)) ? $result : FALSE;  
    }


Controller:

Code:

    public function Index()
    {        
        $data['proba']=$this->users_mod->Proba();

        $this->load->view('template/main',$data);
    }


View:

Code:


     foreach ($result['ids'] as $k => $menu_id)
     {
          echo $result['menu'][$k]['menu_name'], "<br>";
               
          foreach ($result['submenu'] as $l => $sub)
          {
               if (isset($result['submenu'][$l]['id_menu']) && $result['submenu'][$l]['id_menu'] === $menu_id)
               {
                    echo $result['submenu'][$l]['sub_name'], "<br>";
               }
          }
     }
 
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme