Mulitdimensionaler Array aufbauen und auslesen

In diesem Forum kann man Fragen zur Programmierung stellen, die bei der Entwicklung von Mods für phpBB 3.0.x oder dem Modifizieren des eigenen Forums auftauchen.
Forumsregeln
phpBB 3.0 hat das Ende seiner Lebenszeit überschritten
phpBB 3.0 wird nicht mehr aktiv unterstützt. Insbesondere werden - auch bei Sicherheitslücken - keine Patches mehr bereitgestellt. Der Einsatz von phpBB 3.0 erfolgt daher auf eigene Gefahr. Wir empfehlen einen Umstieg auf die neuste phpBB-Version, welches aktiv weiterentwickelt wird und für welches regelmäßig Updates zur Verfügung gestellt werden.
Antworten
bolzi78
Mitglied
Beiträge: 3
Registriert: 06.05.2010 21:25

Mulitdimensionaler Array aufbauen und auslesen

Beitrag 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
Benutzeravatar
Frank1604
Ehemaliges Teammitglied
Beiträge: 2106
Registriert: 07.11.2007 09:25
Wohnort: Einhausen
Kontaktdaten:

Re: Mulitdimensionaler Array aufbauen und auslesen

Beitrag 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 --> 
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
bolzi78
Mitglied
Beiträge: 3
Registriert: 06.05.2010 21:25

Re: Mulitdimensionaler Array aufbauen und auslesen

Beitrag 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
Benutzeravatar
Frank1604
Ehemaliges Teammitglied
Beiträge: 2106
Registriert: 07.11.2007 09:25
Wohnort: Einhausen
Kontaktdaten:

Re: Mulitdimensionaler Array aufbauen und auslesen

Beitrag 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 --> 
Gruß, Frank
Meine Meinung steht fest. Bitte verwirrt mich nicht mit Tatsachen!
bolzi78
Mitglied
Beiträge: 3
Registriert: 06.05.2010 21:25

Re: Mulitdimensionaler Array aufbauen und auslesen

Beitrag 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
Antworten

Zurück zu „[3.0.x] Mod Bastelstube“