ugrás a tartalomhoz

Php menü generálása tömbből

geforce9600gt · 2015. Szep. 29. (K), 22.03
Sziasztok

A gondom:

- A <div class="blockHeader">-be a tömbök legelső sorát szeretném berakni(Jelen esetben az Osztályok és a További modulok)), az a div címe, felirata. A divre kattintáskor az lenyílik, és abban van az <ul>, de ez eddig jó.

- A második for ciklusban a linkek sem kapnak jó értéket. A linkek felirata a tömbök második eleme, és a href-be kerülne a harmadik elem.

Tudnátok segíteni?
  1. $MenuConfig = array  
  2. (  
  3.     array  
  4.     (  
  5.         "Osztályok",  
  6.         "Új osztály hozzáadása",  
  7.         "uj-osztaly",  
  8.   
  9.         "Osztályok szerkesztése",  
  10.         "oszatlyok-szerkesztese"  
  11.     ),  
  12.     array  
  13.     (  
  14.         "További modulok",  
  15.         "Konfiguráció",  
  16.         "konfiguracio",  
  17.     )  
  18. );  
  19. for ($row = 0; $row < 2; $row++ )  
  20. {  
  21.     echo '<div class="block bLeft">';  
  22.         echo '<div class="blockHeader">'.$MenuConfig[0][0].'<span class="plusminus" onclick="show_hide_div(this, lista_'.$row.');">-</span> </div>';  
  23.         echo "<ul class='sideNav' id='lista_".$row."' style='display:block'>";  
  24.         for ($col = 0; $col < 2; $col++)  
  25.         {  
  26.             echo '<li><a class="menuitem" href="'.$host.'/'.$admin_folder.'/' . $MenuConfig[$row][$col] .'.php"   
  27.             title="' . $MenuConfig[$row][$col] .'"><b>' . $MenuConfig[$row][$col] .'</b></a></li>';  
  28.         }  
  29.         echo "</ul>";  
  30.     echo "</div>";  
  31. }  
 
1

Ciklus

Poetro · 2015. Szep. 30. (Sze), 01.16
Azt azért ugye tudod, hogy a tömbödből két-két elemet írsz ki? Azaz az első tömbből az első kettőt és a másodikból a második kettőt. Mivel két for ciklusod van, és minkettő pontosan kétszer fut le, így összesen négy (4) elemet írsz ki.

A $MenuConfig[$row][$col] segítségével, mivel az első futás esetén a $row és a $col is 0, ezért az érték előbb "Osztályok" majd, mivel előbb $col változik, ezért "Új osztály hozzáadása" kerül kiírásra.
Ezután a $row változik 1-re a $col pedig 0, ezért a kiírt érték "További modulok", majd a $col változik így "Konfiguráció" kerül kiírásra.

Hasznos lenne előbb csak a $row és a $col párokat kiíratni, és kitalálni, milyen sorrendben szeretnéd őket megkapni.
2

Hát, igazából ugyan olyan

geforce9600gt · 2015. Szep. 30. (Sze), 08.57
Hát, igazából ugyan olyan sorrendben, mint ahogy beírtam a tömbökbe.Csak nem vágom annyira a tömböket.
6

Tombok

Poetro · 2015. Szep. 30. (Sze), 12.29
Akkor szerintem olvass kicsit utana a tomboknek. Van rengeteg hasznos cikk es konyv a temaban. A programozas elsajatitasanak alapveto feltetelei koze tartozik, hogy az ember megismeri, hogyan mukodnek a tombok, mivel minden nyelv reszet kepezik valamilyen formaban.
4

Nem fogok ilyeneket végig

geforce9600gt · 2015. Szep. 30. (Sze), 09.34
Nem fogok ilyeneket végig olvasni ,és a hiba se fog ettől megoldódni.
5

Miért?

Hidvégi Gábor · 2015. Szep. 30. (Sze), 09.37
Miért és miért?
7

rossz a tömböd

szabo.b.gabor · 2015. Szep. 30. (Sze), 15.18
indulj ki ebből
  1. $menuConfig = array(  
  2.     array(  
  3.         'title' => 'Osztályok',  
  4.         'subMenus' => array(  
  5.             array('title' => 'Új osztály hozzáadása''url' => 'uj-osztaly'),  
  6.             array('title' => 'Osztályok szerkesztése''url' => 'osztalyok-szerkesztese')  
  7.         )  
  8.     ),  
  9.     array(  
  10.         'title' => 'További modulok',  
  11.         'subMenus' => array(  
  12.             array('title' => 'Konfiguráció''url' => 'konfiguracio')  
  13.         )  
  14.     )  
  15. );  
és a for helyett használj foreach-et
  1. foreach($menuConfig as $menuPont){  
  2.     echo $menuPont['title'];  
  3.     foreach($menuPont['subMenus'as $subMenu){  
  4.         echo $subMenu['title'],' ',$subMenu['url'];  
  5.     }  
  6. }  
8

Eljutottam idáig:$MenuConfig

geforce9600gt · 2015. Szep. 30. (Sze), 19.21
Eljutottam idáig:
  1. $MenuConfig =   
  2. array(   
  3.  array"Osztályok",   
  4.       array("Új osztály hozzáadása""uj-osztaly"),  
  5.       array("Osztályok szerkesztése""osztalyok-szerkesztese")  
  6.    ),  
  7.    array"Diákok, tanulók",   
  8.       array("Új diák hozzáadása""uj-diak"),  
  9.       array("Diákok szerkesztése""diakok-szerkesztese")  
  10.    ),  
  11.    array"Tananygok",   
  12.       array("Új diák hozzáadása""uj-diak"),  
  13.       array("Diákok szerkesztése""diakok-szerkesztese")  
  14.    ),  
  15.    array"További modulok",  
  16.       array("Admin felhasználók""admin-felhasznalok")  
  17.     )  
  18. );  
  19. for ($row = 0; $row < count($MenuConfig); $row++ )    
  20. {    
  21.   echo '<div class="block bLeft">';    
  22.   echo '<div class="blockHeader">'.$MenuConfig[$row][0].'<span class="plusminus" onclick="show_hide_div(this, lista_'.$row.');">-</span> </div>';  
  23.   echo "<ul class='sideNav' id='lista_".$row."' style='display:block'>";  
  24.   for ($col = 1; $col < count($MenuConfig[$row]); $col++ )    
  25.   {    
  26.     echo '<li><a class="menuitem" href="'.$host.'/'.$admin_folder.'/'.$MenuConfig[$row][$col][1] .'.php?cat='.$row.'">  
  27.     <b>' . $MenuConfig[$row][$col][0] .'</b></a></li>';    
  28.   }    
  29.   echo "</ul>";    
  30.   echo "</div>";    
  31. }  
A tömb elemek még mindíg nem a megfelelő helyre kerülnek, nemjó a sorrend, és van olyan elem, a További modulok, amit ki sem rak.

Plusz az egész ciklusnak valahogy 1-től kellene indulnia, hogy ide: onclick="show_hide_div(this, lista_'.$row.');" ne 0- kerüljön be az elsőhöz, hanem 1, és így tovább.
9

:D

szabo.b.gabor · 2015. Okt. 1. (Cs), 08.06
egyik gyerekkori kedvenc :D
  1. print_r($menuConfig);  
látod, hogy mik az indexek.. ahol 1 kell 0 helyett, ott matekoznod kell..