Két egymásba ágyazott blokk (BEGIN)
Szerző
Üzenet
Jár még erre valaki, aki tudna nekem segíteni?
Nagyon jól jönne a segítség, mert egyszerűen nem tudok tovább lépni vele.
Lefagytam, pedig még nincs is olyan hideg.
Nem tudom, hogy miért, de két blokkot nem tudok egymásba ágyazni.
Két lekérdezésből kellene egy kiiratást készíteni
Bár a két lekérdezés nagyon hasonlít egymásra, de lényeges tartalmi különbségek vannak benne.
Ezekből kellene nekem ezt kihozni:
A foreach lenne a kézenfekvő megoldás, de valamit módszeresen vagy elnézek, vagy kihagyom, van nem veszem észre a hibát. Vagy hibát dob, vagy a belső blokkban nem kapok semmilyen adatot.
HELP!
Nagyon jól jönne a segítség, mert egyszerűen nem tudok tovább lépni vele.
Lefagytam, pedig még nincs is olyan hideg.
Nem tudom, hogy miért, de két blokkot nem tudok egymásba ágyazni.
Két lekérdezésből kellene egy kiiratást készíteni
Kód:
$sql = 'SELECT * FROM ' . VALAMI_TABLE . ' WHERE eksz_kod = 0';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$gyikos_list[] = (int) $row['eksz_id'];
$rowset[$row['eksz_id']] = array(
'eksz_id' => $row['eksz_id'],
'eksz_osz1' => $row['eksz_osz1'],
);
}
$db->sql_freeresult($result);
for ($i = 0, $end = sizeof($gyikos_list); $i < $end; ++$i)
{
$row =& $rowset[$gyikos_list[$i]];
$template->assign_block_vars('ekszrow', array(
'EKSZ_ID' => $row['eksz_id'],
'EKSZ_OSZ1' => $row['eksz_osz1'],
));
unset($rowset[$gyikos_list[$i]]);
}
$sql = 'SELECT * FROM ' . VALAMI_TABLE . ' WHERE eksz_kod > 0';
$result = $db->sql_query($sql);
while ($row = $db->sql_fetchrow($result))
{
$gyikos_list[] = (int) $row['eksz_id'];
$rowset[$row['eksz_id']] = array(
'eksz_alkod' => $row['eksz_alkod'],
'eksz_oli1' => $row['eksz_oli1'],
);
}
$db->sql_freeresult($result);
for ($i = 0, $end = sizeof($gyikos_list); $i < $end; ++$i)
{
$row =& $rowset[$gyikos_list[$i]];
$template->assign_block_vars('ekszalrow', array(
'EKSZ_ALKOD' => $row['eksz_alkod'],
'EKSZ_OLI1' => $row['eksz_oli1'],
));
unset($rowset[$gyikos_list[$i]]);
}
Bár a két lekérdezés nagyon hasonlít egymásra, de lényeges tartalmi különbségek vannak benne.
Ezekből kellene nekem ezt kihozni:
Kód:
<div>
<ul>
<!-- BEGIN ekszrow -->
<li><a href="valami"><span>{ekszrow.EKSZ_OSZ1}</span></a>
<div>
<ul>
<!-- BEGIN ekszalrow -->
<li><a href="valami"><span>{ekszrow.ekszalrow.EKSZ_OLI1}</span></a></li>
<!-- END ekszalrow -->
</ul>
</div>
</li>
<!-- END ekszrow -->
</ul>
</div>
A foreach lenne a kézenfekvő megoldás, de valamit módszeresen vagy elnézek, vagy kihagyom, van nem veszem észre a hibát. Vagy hibát dob, vagy a belső blokkban nem kapok semmilyen adatot.
HELP!
Nem vagyok biztos benne, de talán
_________________
<M>
$template->assign_block_vars('ekszrow.ekszalrow', array(...
megoldást jelenthet. Valamiért ez rémlik, de nem igazán néztem utána, talán egy próbát megér.
_________________
<M>
Az még önmagában kevés szerintem, mert még előtte egy tömbbe kell hozni a két blokkot.
ELVILEG (??) valahogy így kellene kinéznie:
Arra már rájöttem, hogy eleve nem volt jó az eredeti elképzelésem, mert egy ugyanazon adatbázis táblánál ez a módszer így nem járható.
De két különböző adatbázis tábla esetén sem akaródzik nekem működni.
Végül is megoldottam egyetlen adatbázis táblával, pár új oszloppal, meg egy kis matekkal.
A program sem lett sokkal nagyobb, a megjelenítő fájl is csak 7 sorral, de a lényeg, hogy úgy jelenik meg, ahogy azt szerettem volna.
Ettől függetlenül azért bosszant, hogy mit nem csinálok jól, vagy mit rontok el módszeresen, vagy mit hagyok mindig ki.
ELVILEG (??) valahogy így kellene kinéznie:
Kód:
$almenu_data = array();
$blokknev_data = array();
$blokknev_sql = 'SELECT * FROM ' . AKARMI_TABLE . ' WHERE valami = annyi';
$blokknev_result = $db->sql_query($blokknev_sql);
while ($blokknev_row = $db->sql_fetchrow($blokknev_result))
{
$almenu_sql = 'SELECT * FROM ' . MASIK_TABLE . ' WHERE mezonev = valamennyi';
$almenu_result = $db->sql_query($almenu_sql);
while ($almenu_row = $db->sql_fetchrow($almenu_result))
{
$almenu_data[] = array(
'almenu_id' => $almenu_row['almenu_id'],
'.........' => $almenu_row['.........'],
..........
);
}
$db->sql_freeresult($almenu_result);
$blokknev_data[] = array(
'blokknev_id' => $blokknev_row['blokknev_id'],
'...........' => $blokknev_row['...........'],
............
'almenukod' => $almenu_data,
);
}
$db->sql_freeresult($blokknev_result);
foreach ($blokknev_data as $blokknev)
{
$template->assign_block_vars('blokknev_row', array(
'BLOKKNEV_ID' => $bloknev['blokknev_id'],
'...........' => $bloknev['...........'],
........
));
foreach ($blokknev['almenukod'] as $almenu)
{
$template->assign_block_vars('blokknev_row.almenu_row', array(
'ALMENU_ID' => $almenu['almenu_id'],
'.........' => $almenu['.........'],
........
));
}
}
Arra már rájöttem, hogy eleve nem volt jó az eredeti elképzelésem, mert egy ugyanazon adatbázis táblánál ez a módszer így nem járható.
De két különböző adatbázis tábla esetén sem akaródzik nekem működni.
Végül is megoldottam egyetlen adatbázis táblával, pár új oszloppal, meg egy kis matekkal.
A program sem lett sokkal nagyobb, a megjelenítő fájl is csak 7 sorral, de a lényeg, hogy úgy jelenik meg, ahogy azt szerettem volna.
Ettől függetlenül azért bosszant, hogy mit nem csinálok jól, vagy mit rontok el módszeresen, vagy mit hagyok mindig ki.
Nem készíthetsz új témákat ebben a fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.
Nem válaszolhatsz egy témára ebben a fórumban.
Nem módosíthatod a hozzászólásaidat a fórumban.
Nem törölheted a hozzászólásaidat a fórumban.
Nem szavazhatsz ebben fórumban.