Seite 1 von 2

Variablenübergabe in phpBB-Template

Verfasst: 01.03.2005 07:32
von The real Indigo
Ich habe eine Tabelle im MySQL angelegt die 5 Datensätze hat.


Id Name
1 Name 1
2 Name 2
3 Name 3
4 Name 4
5 Name 5



Mit folgendem Script kann ich die Daten auch ausgeben:


Code: Alles auswählen

<?php 

$abfrage = "SELECT * FROM phpbb_namen"; 
$ergebnis = mysql_query($abfrage) or die("MySQL Datenbank Fehler:" . mysql_errno().": ".mysql_error()); 

echo " 
<table> 
"; 

while ($reihe = mysql_fetch_object($ergebnis)) 
{ 
echo " 
<tr> 
<td> 
$reihe->Id 
</td> 
<td> 
$reihe->Name 
</td> 
</tr> 
"; 
} 

echo " 
</table> 
"; 

?>

Jetzt möchte ich in einem Template die Daten z.B. mit {Daten} ausgeben.

Das soll dann so aussehen

Name 1
Name 2
Name 3
Name 4
Name 5

Jeweils mit Zeilenumbruch nach einem Wert.


Wie krieg ich das hin ???

Verfasst: 01.03.2005 12:59
von Blutgerinsel

Verfasst: 01.03.2005 13:24
von The real Indigo
Danke für den Link...


Für jemand der noch nicht so fit in PHP ist, ist es trotzdem sehr schwer.


Ich habs bis jetzt noch nicht hinbekommen...


Wäre also schön wenn ich noch ein parr Tipps bekommen würde.

Verfasst: 01.03.2005 14:36
von Blutgerinsel
The real Indigo hat geschrieben: Für jemand der noch nicht so fit in PHP ist, ist es trotzdem sehr schwer.
Eher keine allgemeine Programmierlogik hat :wink:
[/quote]

Um mehrere Abschnitte zu wiederholen bedient man sich Templateblöcke
u.A. so

Code: Alles auswählen

<!-- BEGIN irgendwas -->
<tr>
<td>{ID}</td>
<td>{NAME}</td>
</tr>
<!-- END irgendwas -->
und dann
$template->assign_block_vars('irgendwas',array('ID'=>$row['id'],
'NAME'=>$row['name']
));

Um die Beschreibung zu parsen solltest du auf eine fußgesteuerte Schleife zurückgreifen um generell die Beschreibung zu haben

$i=0;
Do
{
if ($i == 0)
//Beschreibung Blöcke anstatt Feld $row['id']......
else
//Datenbankinhalt Blöcke
$i++;
} while( $row=mysql_fetch_assoc($res) );

Das PHPBB Template sollte auch Verschachtelte Blöcke können....Daher könntest du einen Block um den bisherigen Block legen bei dem am Anfang <table> und nachdem Ende des inneren Blockes </table> definiert wird....Diesen Block dann ausserhalb der Schleife übergeben mit einem leeren Array anstatt der Variablen

Verfasst: 01.03.2005 15:35
von The real Indigo
OK, dank dir...


Programmierlogik fehlt mir nicht, aber wer sein Leben lang nur in Basic, Quick Basic, VB6 und VB.Net programmiert hat, der kriegt beim PHP-Syntax einfach nen Kackreiz.

Aber ich versuche mich zu bessern und probiere deine Tipps aus.


Gruß


Indi

Verfasst: 01.03.2005 17:08
von Blutgerinsel
Templates haben nichts mit PHP an sich zu tun :wink:

Sie dienen lediglich dazu den abgefuckten HTML Code aus dem eigentlichen Quelltext rauszuhalten und um noobige Designanpassungen zu erlauben. HTML im Quelltext *würg*

Daher legt man sich da schöne OOP Klassen an die einem dieses Gerümpel erzeugen :wink:

Verfasst: 02.03.2005 19:44
von The real Indigo
Hab obiges jetzt ausprobiert.

Kriegs aber nicht hin, weil ich nicht genau weiss an welcher Stelle in meiner test.php ich das alles einfügen soll.


Hab das ganze jetzt aufgegeben und gemerkt das ich wohl zu blöde dazu bin.

Verfasst: 02.03.2005 23:28
von Blutgerinsel
Zeig mal her was du gemacht hast......

Vielleicht brauchst du nur einen Wink mit dem Zaunpfahl geht doch jedem mal so :wink:

Verfasst: 03.03.2005 08:01
von The real Indigo
Den Code kann ich erstmal nicht posten, weil ich auf der Arbeit bin.


Im Template hab ich einfach deinen Eintrag übernommen.

Nur in der PHP Datei wusste ich gar nicht was ich tun sollte. *snief*

Verfasst: 04.03.2005 07:58
von The real Indigo
Hier nochmal mein Code.


Da ich Abends nie auf phpbb.de drauf kommen, kann ich jetzt erst posten.

Code: Alles auswählen

$abfrage = "SELECT * FROM phpbb_name";
$ergebnis = mysql_query($abfrage) or die("MySQL Datenbank Fehler:" . mysql_errno().": ".mysql_error());
while ($reihe = mysql_fetch_object($ergebnis))
{
$template->assign_block_vars('irgendwas',array('Id'=>$row['Id'],'Name'=>$row['Name']));
}

Im Template hab ich es so mal eingefügt und er schreibt auch 5 mal Test, aber sonst nix.

Code: Alles auswählen

<!-- BEGIN irgendwas --> 
<tr> 
<td>{ID}</td> 
<td>{NAME}</td> 
<td>Test</td>
</tr> 
<!-- END irgendwas -->