PHP Forum

PHP Forum (http://www.selfphp.de/forum/index.php)
-   MySQLi/PDO/(MySQL) (http://www.selfphp.de/forum/forumdisplay.php?f=22)
-   -   ausgabe in mehreren Spalten (Schachbrett) (http://www.selfphp.de/forum/showthread.php?t=20059)

vamp 17.08.2008 23:31:45

ausgabe in mehreren Spalten (Schachbrett)
 
Hallo zusammen,

ich habe ein Problem und hoffe, dass ihr mir helfen könnte...

Zur Vorgeschichte:
Ich bastel an einer Webseite mit einem Templatesystem, so dass ich den Code vom Design komplett trennen kann...

Ich möchte nun eine Datenbankabfrage in einer Tabelle darstellen, allerdings in 4 Spalten also als eine art Schachbrett...

Ich habe einen Codeschnipsel im Internet gefunden der ansich sehr gut funktioniert,
der allerdings immernoch html tags enthält und das stört mich ein bisschen.

der code sieht wie folgt aus:

PHP-Code:

<?
    $result = mysql_query("SELECT * FROM " . TABLE_AVATARE . "");
    if (mysql_num_rows($result) !== 0) {

        $i=1;
        while($row2 = mysql_fetch_array($result)) {

            $color = ($i % 2) ? "#000000" : "#ffffff";

            if ($avatar_count==4) {
                $avatare .= "<tr>";
                $avatar_count = 0;
            }

                $template->variable(array(
                    "AVATAR_FILE" =>     $row2["avatar_datei"],
                    "BACKGROUND" =>     $color,
                    "AVATARPIC" =>         $row2["avatar_datei"],
                ));

                $avatare .= $template->parse("user/avatar_bit.tpl");

            $avatar_count++;

            if ($avatar_count==4) {
                $avatare .= "</tr>"; 
            }
            $avatare .= "</td>";
        $i++;
        }

        $anzahl = $i - 1;
        if ($anzahl % 4 != 0) {

            while($anzahl % 4 != 0){
                $color = ($anzahl % 2) ? "alt2" : "alt1";

                    $template->variable(array("AVATAR_FILE" => $row2["avatar_datei"], "BACKGROUND" => $color,));

                    $avatare .= $template->parse("user/avatar_empty_bit.tpl");

            $anzahl++;
            }
        }
    } 
        
?>

Funktioniert auch alles so wie ich es mir vorstelle....

mich stören allerdings die übrigen < td> und < tr > tags... den rest habe ich bereits in die tpl (html) dateien ($template->parse("user/avatar_empty_bit.tpl");) "ausgelagert.


kennt vielleicht einer eine Möglichkeit wo man php Code komplett von html trennen kann.

also kurz zusammengefasst:
- eine tabelle
- 4 spalten nebeneinander
- kein html im php code


Vielen Dank schon mal für eure hilfe !!!

Viele grüße
Markus

DokuLeseHemmung 18.08.2008 06:38:29

AW: ausgabe in mehreren Spalten (Schachbrett)
 
Zitat:

kennt vielleicht einer eine Möglichkeit wo man php Code komplett von html trennen kann.
Nein, kenne ich nicht!
Wozu auch?
Siehe: http://www.bastian-frank.de/site/fro...t.php?idart=47

cortex 18.08.2008 09:53:55

Trennung logik / anzeige
 
da gibt's eine reihe von möglichkeiten / ansätzen; theoretische grundlagen bei der wikipedia:

http://de.wikipedia.org/wiki/MVC
http://de.wikipedia.org/wiki/Template_Engine

die sache mit template engines in HTML/php ist jedoch ein glaubenskrieg wie DokuLeseHemmung schon andeutet.

du musst dein beispiel-skript im prinzip in zwei skripte aufteilen:

1. logik: hier findet die eigentliche "berechnung" statt: sql-abfrage und auswertung des ergebnisses. zusammenstellung der ausgabe-daten und speicherung in einem geeigneten container. übergabe des containers an die ausgabe.

2. ausgabe: enthält das HTML-markup und platzhalter für die ausgabe-daten, die aus dem übergebenen container extrahiert werden.

wenn die ausgabe weitestgehend "frei" von php ist, hast du die sache gut gemacht. das klappt allerdings (mit vertretbarem aufwand) nicht immer; manche ausgaben werden durch eine schleife generiert (template engines machen das auch nicht anders, eben nur in ihrer eigenen syntax).

cx

cortex 18.08.2008 10:57:32

Template-Kritik
 
Zitat:

Zitat von DokuLeseHemmung (Beitrag 119756)

treffend beschrieben... ähnliche gedanken gingen mir auch irgendwann einmal durch den kopf. letztendlich leisten template engines wir smarty in erster linie die bereitstellung einer einheitlichen schnittstelle für die arbeit im team. ansonsten habe ich (für mich) festgestellt, dass man eher vom regen in die traufe kommt:

- man muss sich mit der syntax der engine vertraut machen
- man kann sich erst einmal nur im rahmen der engine-features bewegen
- man vertraut den kompetenzen anderer coder, vor allem in belangen der sicherheit
- man nimmt erhebliche performance-einbuszen in kauf (preg_xxx)

cx


Alle Zeitangaben in WEZ +2. Es ist jetzt 14:59:49 Uhr.

Powered by vBulletin® Version 3.8.3 (Deutsch)
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.