Voorwaardelijke velden

Hulp nodig bij een modificaties of op zoek naar een MOD? Bekijk ons archief. Support wordt helaas niet meer verleend.
Forumregels

Sinds 1 januari 2009 wordt phpBB2 niet meer ondersteund.
Onderstaande informatie is verouderd en dient uitsluitend als archief.
phpBB2.0.x
Gesloten
Hans Kamp
Berichten: 470
Lid geworden op: 17 jan 2004, 08:39
Locatie: Enschede

Voorwaardelijke velden

Bericht door Hans Kamp » 12 apr 2004, 15:24

Ik zit met het volgende probleem. Hoe kun je (in een lus) voorwaardelijke velden opnemen (afhankelijk van een variabele)?

Ik heb als code:

Code: Selecteer alles

	while( $row = $db->sql_fetchrow($result) )
	{
		$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
		$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

		$name = $row['item_name'];
		$defense = $row['iigdef'];
		$maxdur = $row['max_durability'];
		$curdur = $row['cur_durability'];
		$mindam = $row['min_damage'];
		$maxdam = $row['max_damage'];

		$template->assign_block_vars('items', array(
			'ROW_CLASS' => $row_class,

			'ITEMNAME' => $name,

			'L_DEFENSE' => 'Defense',
			'DEFENSE' => $defense,

			'L_DURABILITY' => 'Durability',
			'MAXDUR' => $maxdur,
			'CURDUR' => $curdur,
			'L_OF' => 'of'));

//			'L_DAMAGE' => 'Damage',
//			'MINDAM' => $mindam,
//			'L_TO' => 'to',
//			'MAXDAM' => $maxdam));

		$template->assign_block_vars('items.' . ($maxdam ? 'damage' : 'nodamage'), array(
			'L_DAMAGE' => 'Damage',
			'MINDAM' => $mindam,
			'L_TO' => 'to',
			'MAXDAM' => $maxdam
			));

		$i = $i + 1;
	}
In de template-file heb ik staan:

Code: Selecteer alles

<!-- BEGIN items -->
<tr>
<td class="{items.ROW_CLASS}" align="left">
	{items.ITEMNAME}<br />

	{items.L_DEFENSE}: {items.DEFENSE}<br />

	<! -- BEGIN damage -->
	{items.damage.L_DAMAGE}: {items.damage.MINDAM} {items.damage.L_TO} {items.damage.MAXDAM}<br />
	<! -- END damage -->
	<! -- BEGIN nodamage -->
	<! -- END nodamage -->

	{items.L_DURABILITY}: {items.CURDUR} {items.L_OF} {items.MAXDUR}

</td>
</tr>
<!-- END items -->
Mijn forum geeft weer:
Short Sword
Defense: 0
:
Durability: 24 of 24
-----
Buckler
Defense: 5
:
Durability: 12 of 12
maar dat is onjuist. Het item Short Sword heeft als damage 2 to 7 maar de Buckler niet. Maar zowel van Short Sword als van Buckler wordt de damage niet weergegeven.

I.p.v. het bovenstaande verwacht ik
Short Sword
Damage: 2 to 7
Durability: 24 of 24
-----
Buckler
Defense: 5
Durability: 12 of 12
Hoe verander ik dat?

Hans Kamp
Berichten: 470
Lid geworden op: 17 jan 2004, 08:39
Locatie: Enschede

Bericht door Hans Kamp » 12 apr 2004, 18:47

Ik heb het op een andere manier opgelost. De regels worden gevuld met tekst of leeggelaten (lege string). In beide worden ze als volgt weergegeven:

Code: Selecteer alles

while( $row = $db->sql_fetchrow($result) )
{
	$row_color = ( !($i % 2) ) ? $theme['td_color1'] : $theme['td_color2'];
	$row_class = ( !($i % 2) ) ? $theme['td_class1'] : $theme['td_class2'];

	$name = $row['item_name'];
	$defense = $row['iigdef'];
	$maxdur = $row['max_durability'];
	$curdur = $row['cur_durability'];
	$mindam = $row['min_damage'];
	$maxdam = $row['max_damage'];

	if ($mindam || $maxdam)
		$l_damage = "Damage: $mindam to $maxdam<br />";
	else
		$l_damage = "";

	if ($defense)
		$l_defense = "Defense: $defense<br />";
	else
		$l_defense = "";

	$template->assign_block_vars('items', array(
		'ROW_CLASS' => $row_class,

		'ITEMNAME' => $name,

		'L_DAMAGE_LINE' => $l_damage,

		'L_DEFENSE_LINE' => $l_defense,

		'L_DURABILITY' => 'Durability',
		'MAXDUR' => $maxdur,
		'CURDUR' => $curdur,
		'L_OF' => 'of'));

		$i = $i + 1;
	}

Gesloten