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?
$MenuConfig = array
(
	array
	(
		"Osztályok",
		"Új osztály hozzáadása",
		"uj-osztaly",

		"Osztályok szerkesztése",
		"oszatlyok-szerkesztese"
	),
	array
	(
		"További modulok",
		"Konfiguráció",
		"konfiguracio",
	)
);
for ($row = 0; $row < 2; $row++ )
{
	echo '<div class="block bLeft">';
		echo '<div class="blockHeader">'.$MenuConfig[0][0].'<span class="plusminus" onclick="show_hide_div(this, lista_'.$row.');">-</span> </div>';
		echo "<ul class='sideNav' id='lista_".$row."' style='display:block'>";
		for ($col = 0; $col < 2; $col++)
		{
			echo '<li><a class="menuitem" href="'.$host.'/'.$admin_folder.'/' . $MenuConfig[$row][$col] .'.php" 
			title="' . $MenuConfig[$row][$col] .'"><b>' . $MenuConfig[$row][$col] .'</b></a></li>';
		}
		echo "</ul>";
	echo "</div>";
}
 
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
$menuConfig = array(
	array(
		'title' => 'Osztályok',
		'subMenus' => array(
			array('title' => 'Új osztály hozzáadása', 'url' => 'uj-osztaly'),
			array('title' => 'Osztályok szerkesztése', 'url' => 'osztalyok-szerkesztese')
		)
	),
	array(
		'title' => 'További modulok',
		'subMenus' => array(
			array('title' => 'Konfiguráció', 'url' => 'konfiguracio')
		)
	)
);
és a for helyett használj foreach-et
foreach($menuConfig as $menuPont){
	echo $menuPont['title'];
	foreach($menuPont['subMenus'] as $subMenu){
		echo $subMenu['title'],' ',$subMenu['url'];
	}
}
8

Eljutottam idáig:$MenuConfig

geforce9600gt · 2015. Szep. 30. (Sze), 19.21
Eljutottam idáig:
$MenuConfig = 
array( 
 array( "Osztályok", 
      array("Új osztály hozzáadása", "uj-osztaly"),
      array("Osztályok szerkesztése", "osztalyok-szerkesztese")
   ),
   array( "Diákok, tanulók", 
      array("Új diák hozzáadása", "uj-diak"),
      array("Diákok szerkesztése", "diakok-szerkesztese")
   ),
   array( "Tananygok", 
      array("Új diák hozzáadása", "uj-diak"),
      array("Diákok szerkesztése", "diakok-szerkesztese")
   ),
   array( "További modulok",
      array("Admin felhasználók", "admin-felhasznalok")
    )
);
for ($row = 0; $row < count($MenuConfig); $row++ )  
{  
  echo '<div class="block bLeft">';  
  echo '<div class="blockHeader">'.$MenuConfig[$row][0].'<span class="plusminus" onclick="show_hide_div(this, lista_'.$row.');">-</span> </div>';
  echo "<ul class='sideNav' id='lista_".$row."' style='display:block'>";
  for ($col = 1; $col < count($MenuConfig[$row]); $col++ )  
  {  
    echo '<li><a class="menuitem" href="'.$host.'/'.$admin_folder.'/'.$MenuConfig[$row][$col][1] .'.php?cat='.$row.'">
	<b>' . $MenuConfig[$row][$col][0] .'</b></a></li>';  
  }  
  echo "</ul>";  
  echo "</div>";  
}
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
print_r($menuConfig);
látod, hogy mik az indexek.. ahol 1 kell 0 helyett, ott matekoznod kell..