Seite 1 von 2

Eigene Seiten mit assoziativem Array

Verfasst: 09.12.2008 08:42
von Fr33z3m4n
Guten Tag,

ich bin neu beim phpBB (nur fals es erleichtert meine Fragen zu verstehen).

Also habe gestern nach Vorlage eine eigene Seite im phpBB3 erstellt.
http://wiki.phpbb.com/Adding_pages

Funktioniert auch soweit, jedoch habe ich es nicht geschafft, eine weitere schleife in der vorhandenen einzupflegen.

Gehen wir mal davon aus, ich habe kategorien als Schleife, und will dann auf der Seite unter den Kategorien die jeweiligen Datensätze anzeigen lassen.

Also muss ich ja erstmal
<!--- BEGIN cat --->

und dann in dessen <!--- BEGIN data --->

doch genau da liegt mein Problem. Wie sage ich phpBB3, das es sich hierbei um eine Schleife handelt ?

Code: Alles auswählen

$template->assign_block_vars('block_name', array(
        'EXAMPLE'        => $row['example'],
        'DEMO'            => $row['demonstration'],
        'DATA' => array('data' => array())
    ));
bringt leider nix, auch weitere andere Tests mit anderen Möglichkeiten hat mich nicht zum Ziel geführt.

Woran liegt das, unterstützt das phpBB3 ?
Ich gehe mal davon aus JA, nur finde derzeit einfach nicht die Lösung.

mfg
Fr33z3m4n

Verfasst: 09.12.2008 09:23
von Miriam
Prinzipielle Funktion der Verschachtelung der Schleifen in einem Template -> Link.

Verfasst: 09.12.2008 09:42
von Fr33z3m4n
genau das was ich gesucht habe.
ich danke dir. :)

Verfasst: 12.12.2008 00:07
von DerPate
Abend,

maln naheliegendes Problem ... die Template-Ausgabe funtionert mit folgender SQL-Abfrage wunderbar ...

Code: Alles auswählen

	$sql = $db->sql_build_query('SELECT', array(
		'SELECT'	=> $sql_array['SELECT'],
		'FROM'		=> $sql_array['FROM'],
		'LEFT_JOIN'	=> $sql_array['LEFT_JOIN'],
		'WHERE'		=> $sql_array['WHERE'],
		'ORDER_BY'	=> $order_by,
	));	

	while ($page_row = $db->sql_fetchrow($page_result))
	{

				$template->assign_block_vars('page_row', array(
					'U_PAGE' 		=> append_sid("{$phpbb_root_path}" . FOLDER . "start.$phpEx", 'dkp=' . $dkp . '&mode=' . ($submode == true ? $mode : 'viewevent') . '&id=' . $page_row['event_id']),
					'PAGE_NAME' 	=> $submode == 'viewevent' ? $page_row['event_desc'] : stripslashes($page_row['event_name']),
					'PAGE_ICON' 	=> $submode == 'viewevent' ? false : dkp_event_icon($page_row['event_icon'], $page_row['event_name'], 26, 'left'),
					'PAGE_TAG' 	=> $submode == 'viewevent' ? false : '(' . stripslashes($page_row['event_tag'] . ')'),
					'PAGE_POOL' 	=> stripslashes($page_row['pool_name']),
					'PAGE_DATE' 	=> $page_row['event_date'])
				);
Da $page_row['pool_name'] nur 4 verschieden Werte enthält möchte ich dafür im template jeweils nen seperaten Block erzeugen ..

http://wiki.phpbb.com/Template.assign_b ... ted_blocks kenn ich, und habs denk ich soweit auch verstanden, aber ich bekomms um verrecken nicht hin die Daten entsprechend in ein Array zu packen :/

Wäre nett wenn wenn mir jmdf weiterhelfen könnte.


Mfg

Verfasst: 12.12.2008 15:41
von Miriam
Wo ist denn genau das Problem dabei?

Verfasst: 12.12.2008 22:00
von DerPate
Hi,

das Problem ist, dass ich es nicht hinbekomme die Daten aus der SQL-Abfrage vernünftig in ein (od. zwei?) Array zu schreiben.

In der while-Schleife steht in etwa

Code: Alles auswählen

$row_reg_ary = array_merge($reg_ary, $reg_ary[ $page_row['region'] ] = array(
					'realm'    => $page_row['realm'],
					'num_guilds'  => $page_row['num_guilds'],
					'realm_id' => $page_row['realm_id']
				));
				
				foreach ($reg_ary AS $region => $reg_detail)
				{
					$template->assign_block_vars('reg_block', array(
						'REGION'			=> $region,
					));
					
					foreach ($reg_ary AS $key => $detail)
					{
						$template->assign_block_vars('reg_block.page_row', array(
							'REALM'				=> $detail['realm'],
							'NUM_GUILDS' 		=> $detail['num_guilds'],
							'U_REALM_LINK' 		=> append_sid("{$phpbb_root_path}" . FOLDER . "realm.$phpEx", 'id=' . $detail['realm_id']),
						));
					}
				}
Das das nicht funktionieren kann seh ich ja selbst, schon allein aufgrund der doppelte Einträge aus $page_row['region'] ... aber ich weiß momentan beim besten Willen nicht wo ich ansetzen muss.

Verfasst: 13.12.2008 00:14
von Miriam
Wie sieht denn das Array aus, mit dem Du anfangst zu arbeiten.

Verfasst: 13.12.2008 13:45
von DerPate
Bin gerade nicht an meinem PC um irgendwas zu kopieren ... am Anfang sollte aber nur $reg_ary = array(); stehen.

Ich vermute mal, dass ich ein 2. Array brauch, welches dann in $reg_ary gepackt wird ... nur wie ist eben die Frage. Werd mal bisschen bei php.net rumstöbern und mir heute Abend mal die ACP-Datein anschauen, vll werd ich ja da fündig.

Gruss

Re: Eigene Seiten mit assoziativem Array

Verfasst: 21.01.2009 20:15
von DerPate
[snip] Hat sich erledigt ...

Re: Eigene Seiten mit assoziativem Array

Verfasst: 24.01.2009 12:30
von jimmartens
Ich würde den Link entfernen, da sich der Browser dabei aufhängt. Denn die Seite wird trotzdem geladen. Am besten kopierst du die Fehlerausgabe in eine txt-Datei und verlinkst darauf.