Seite 1 von 1

Mulitdimensionaler Array aufbauen und auslesen

Verfasst: 13.05.2010 08:52
von bolzi78
Hallo

für eine selbst erstellte Anpassung benötige ich einen Multidimensionalen Array. Ich habe eine Tabelle, die eine variable Anzahl von Spalten und Zeilen.
Dieses Array sollte wie folgt aufgebaut sein:

Array{
Name Max Mustermann
Array{ Spiel1
Spiel2
....
Spieln
}
}


Wie kann ich diesen Array in der .php Datei aufbauen und sichern?

Wie kann ich diesen Array dann im der .html template auslesen?

Aus einem Vorlage habe ich gesehen, dass über die Funktion $template->assign_block_vars eine Blockvariable gesichert wird.
Aber genau was dort geschieht weiss ich nicht.

Ciao bolzi

Re: Mulitdimensionaler Array aufbauen und auslesen

Verfasst: 14.05.2010 08:23
von Frank1604
Schau mal hier, da steht einiges dazu.

http://wiki.phpbb.com/display/MODDOCS/A ... stom+pages

Code: Alles auswählen

/*
 * basic example of the assign block vars for the templates
 * This basically will allow you to easily display a block or array of data in a template
 * this is useful for items such as SQL queries to the database and displaying them in your templates.
 */
foreach ($some_array as  $row)
{
    $template->assign_block_vars('block_name', array(
        'EXAMPLE'       => $row['example'],
        'DEMO'          => $row['demonstration'],
    ));
} 
Und im Template liest du es so wieder aus:

Code: Alles auswählen

    <!-- BEGIN block_name -->
    <tr class="<!-- IF block_name.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
        <td>{block_name.EXAMPLE}</td>
        <td>{block_name.DEMO}</td>
    </tr>
    <!-- END block_name --> 

Re: Mulitdimensionaler Array aufbauen und auslesen

Verfasst: 14.05.2010 22:04
von bolzi78
Hallo Frank

Erstmal danke für deine Antwort.

Diesen Code habe ich auch gefunden, aber er hilft mir nicht ganz so weit, da innerhalb des Funktionsaufruf
müsste nochmals eine Array aufgebaut werden. Geht das mit der Funktion?

Zumindest hab ich es bis jetzt noch nicht hingebracht.

Ciao bolzi

Re: Mulitdimensionaler Array aufbauen und auslesen

Verfasst: 14.05.2010 22:35
von Frank1604
Das kannst beliebig machen, wie du willst. Entweder vorher, oder in der Funktion.

Siehe dazu auch: http://wiki.phpbb.com/display/MODDOCS/T ... ate+syntax

Code: Alles auswählen

while ($topic = $db->sql_fetchrow($result))
{
    $template->assign_block_vars('topic', array(
        'TOPIC_ID' => $topic['topic_id']
    ));
 
    while ($post = $db->sql_fetchrow($result))
    {
        $template->assign_block_vars('topic.post', array(
            'POST_ID' => $post['post_id']
        ));
    }
} 
Auslesen im Template:

Code: Alles auswählen

        <!-- BEGIN topic -->
        <tr class="<!-- IF topic.S_ROW_COUNT is even -->bg1<!-- ELSE -->bg2<!-- ENDIF -->">
            <td>{topic.TOPIC_ID}</td>
                <!-- BEGIN post -->
                    <td>{topic.post.POST_ID}</td>
                <!-- END post -->
        </tr>
        <!-- END topic --> 

Re: Mulitdimensionaler Array aufbauen und auslesen

Verfasst: 17.05.2010 15:22
von bolzi78
Hallo Frank

Gerade hab ich diese Änderung ausprobiert, aber es zeigt mir nur die Namen in der ersten Spalte an, nicht die anderen
Begriffe.

Ebenfalls hab ich ein Problem, dass es für nicht ersichtlich ist, ob Änderungen erkannt wurden? Da ich die Datenermittlung mehrmals
geändert habe, aber keine Änderung an der Ausgabe stattgefunden habe.

Auch ist mir aufgefallen, dass jetzt für diese Seite, kein Eintrag im Ordner cache vorhanden ist?

Bin ich zu blöd hier was zu programmerieren oder sind hier Erweiterungen zu erstellen einfach zu kompliziert gelöst?

Hier mal mein Quellcode:

Datenzusammenstellung:

Code: Alles auswählen

$some_line2 = array(
    array(
        'NAME'         => 'Hansi Glück',
		'GAMERS' => array(
			array( 
				'NAME' 	   => 'Spiel1'
			),
			array( 
				'NAME' 	   => 'Spiel2'
			),
			array( 
				'NAME' 	   => 'Spiel3'
			),
			array( 
				'NAME' 	   => 'Spiel4'
			),
			array( 
				'NAME' 	   => 'Spiel5'
			),
		),
    ),
    array(
        'NAME'         => 'Hansi Franz',
		'GAMERS' => array(
			array( 
				'NAME' 	   => 'Spiel1'
			),
			array( 
				'NAME' 	   => 'Spiel2'
			),
			array( 
				'NAME' 	   => 'Spiel3'
			),
			array( 
				'NAME' 	   => 'Spiel4'
			),
			array( 
				'NAME' 	   => 'Spiel5'
			),
		),
    ),
    array(
        'NAME'         => 'Hansi Pech',
		'GAMERS' => array(
			array( 
				'NAME' 	   => 'Spiel1'
			),
			array( 
				'NAME' 	   => 'Spiel2'
			),
			array( 
				'NAME' 	   => 'Spiel3'
			),
			array( 
				'NAME' 	   => 'Spiel4'
			),
			array( 
				'NAME' 	   => 'Spiel5'
			),
		),
    ),
);

$some_line3 = array(
	array(
		'GNAME'			=> 'Spiel1' 
	),
	array(
		'GNAME'			=> 'Spiel2' 
	),
	array(
		'GNAME'			=> 'Spiel3' 
	),
	array(
		'GNAME'			=> 'Spiel4' 
	),
	array(
		'GNAME'			=> 'Spiel5' 
	),
);

foreach ($some_line2 as $row_line2)
{
    $template->assign_block_vars('block_gamers', 
    array (
        'NAME'        => $row_line2['NAME'],
    ));
    
    foreach ($some_line3 as $row_line3)
    {
    	$template->assign_block_vars('block_gamers.games', 
    	array (
        	'GNAME'        => $row_line3['GNAME'],
    	));	
    }
}
Und hier wird er im Template ausgegeben:

Code: Alles auswählen

    <!-- BEGIN block_gamers -->
    <tr>
    	<td>{block_gamers.NAME}</td>
    	<!-- BEGIN games -->
    	<td>{block_gamers.games.GNAME}</td>
    	<!-- END games -->
    </tr>
    <!-- END block_gamers -->
Vielleicht kannst du mir sagen, woran es liegt.

Danke schon mal.

Ciao bolzi