Seite 1 von 1

php & MySQL im template

Verfasst: 25.10.2010 13:14
von SiMoeBoe
Hi Leute,

Ich bastel grad an einem Forum für meine Schule, bei der ich einer Gruppe die Möglichkeit geben will, Fragen für Steckbriefe, welche dann an alle User gehen, zu definieren.

Ich habe eine neue Seite integriert, jedoch benötige ich innerhalb der steckbrief_body.html php-Abfragen, um ua eine Tabelle mit den Fragen zur bearbeitung aus einer MySQL Tabelle ausfüllen.
Der verwendete Code hat in einem anderen Projekt und auf einer anderen seite bereits funktioniert.
Ich bekomme das ganz nur nicht in das Template eingebaut.

Da eine .html Seite ja kein php verarbeiten kann, habe ich es in .php geändert und auch die entsprechende Datei zum einbinden angepasst.
Jedoch klappt dies immer noch nicht.
Die Frage ist nurn: kann ich überhaupt php innerhalb des Template verwenden, oder nicht, und wenn, dann wie?

Ich hoffe, dies war einigermaßen verständlich, freue mich auf antwort,
MfG,
SiMoeBoe

Nachtrag: Cache habe ich nach jeder Änderung geleert, daran kann es also nicht liegen :wink:

Re: php & MySQL im template

Verfasst: 25.10.2010 13:33
von Dr.Death
Hi,

Du solltest PHP und HTML trennen.

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

Deine SQL Abfragen gehören also in die PHP Datei und die Ausgabe in die HTML Seite.

Re: php & MySQL im template

Verfasst: 25.10.2010 13:43
von SiMoeBoe
Hallo Dr.Death,
Fänd ich so auch eig am besten, nur leider weiß ich nicht, wie ich dies anstellen soll die Tabelle mit den Daten zu füttern, wenn ich das ganze trenne..
Bisher sieht meine Abfrage zum füllen der Tabelle folgendermaßen aus:

Code: Alles auswählen

<table border="1">
<tr>
<td></td><td>Frage</td><td>Bemerkung</td><td>Ändern</td><td>Löschen</td>
</tr> <?php
$query = "SELECT * FROM sb_fragen ORDER BY id";
$result = mysql_query($query);
$i = 0;
while ($line = mysql_fetch_array($result)) {
  echo "<tr><td><input type='hidden' name='id_tag".$i."' size='3' readonly='readonly' value='".$line[id]."'></td>";
  echo "<td>".$line[frage]."</td>";
  echo "<td>".$line[bemerkung]."</td>";
  echo "<td><input type='submit' name='change' value='&Auml;ndern' onclick='sendewert(aendern+platz+document.neu.id_tag".$i.".value)'></td>";
  echo "<td><input type='submit' name='del' value='L&ouml;schen' onclick='sendewert(loeschen+platz+document.neu.id_tag".$i.".value)'></td></tr>";
  $i++;
}
?>
</table>
Wie bekomme ich die Daten in die html-Seite, wenn die Abfrage woanders stattfindet?
Mit Post/Get wüsste ich nicht, wie ich dies realisieren soll, da ich ja in einer Schleife arbeiten müsste...

In deinem Link steht dazu ja folgendes:

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'],  

    ));  

}  
nur verstehe ich folgende Stelle im Template nich, welche ja anscheinend dazu da ist, das ganze dann auszugeben..:

Code: Alles auswählen

<table class="table1" cellspacing="1">  

    <tr>  

        <th>{L_EXAMPLE}</th>  

        <th>{L_DEMO}</th>  

    </tr>  

    <!-- 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 -->  

</table>  

   
Vielen Dank für Hilfe,
MfG,
SiMoeBoe

Re: php & MySQL im template

Verfasst: 25.10.2010 13:47
von Dr.Death
Schau Dir dazu mal die Template Syntax an:

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

Oder lade Dir mal einen phpBB MOD herunter und schau Dir das an einigen MOD Beispielen an.

Re: php & MySQL im template

Verfasst: 25.10.2010 13:49
von SiMoeBoe
Ah sry, hab meinen Nachtrag (s letzter Beitrag) paralell zu deiner Antwort erstellt :wink:
Okay, ich lese mal.. Denke aber das ist die Richtung in der ich suche
Vielen Dank schonma

Re: php & MySQL im template

Verfasst: 25.10.2010 13:59
von Dr.Death
Mal ebenso hingepinselt ( ungetestet )

PHP Teil:

Code: Alles auswählen

$query = "SELECT * FROM sb_fragen ORDER BY id";
$result = mysql_query($query);
$i = 0;
while ($line = mysql_fetch_array($result)) 
{
    $template->assign_block_vars('ausgabe', array( 
            'COUNTER'             => $i, 
            'LINE_ID'            => $line['id'],
            'LINE_FRAGE'        => $line['frage'],
            'LINE_BEMERKUNG'    => $line['bemerkung'],
        )); 
  $i++;
} 
Template HTML Teil:

Code: Alles auswählen

<table border="1">
<tr>
<td></td><td>Frage</td><td>Bemerkung</td><td>Ändern</td><td>Löschen</td>
</tr> 
<!-- BEGIN ausgabe -->
    <tr>
        <td>
            <input type='hidden' name='id_tag{COUNTER}' size='3' readonly='readonly' value='{LINE_ID}'>
        </td>
        <td>
            {LINE_FRAGE}
        </td>
        <td>
            {LINE_BEMERKUNG}
        </td>
        <td>
            <input type='submit' name='change' value='&Auml;ndern' onclick='sendewert(aendern+platz+document.neu.id_tag".{COUNTER}.".value)'>
        </td>
        <td>
            <input type='submit' name='del' value='L&ouml;schen' onclick='sendewert(loeschen+platz+document.neu.id_tag".{COUNTER}.".value)'>
        </td>
    </tr>
<!-- END ausgabe -->
</table>