Für jede Tabellenspalte eigene css Eigenschaften

  • 4 Antworten
  • 3774 Aufrufe
*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Für jede Tabellenspalte eigene css Eigenschaften
« am: 09. April 2009, 16:52:41 »
In der Syntax.php das
Code: (php) [Auswählen]

elseif 
($attribute == "tabelle") {
// Tabelleninhalt aufbauen
    $tablecontent = "";
    $j = 0;
    // Tabellenzeilen
    // preg_match_all("/<([^>]*)>/Um", $value, $tablelines);
    // preg_match_all("/(<|<<)([^>]*)(>|>>)/Um", $value, $tablelines);
    preg_match_all("/(<|<<)(.*)(>|>>)/Umsie", $value, $tablelines);
    foreach ($tablelines[0] as $tablematch) {
        // Kopfzeilen
        if (preg_match("/<<([^>]*)/Umsi", $tablematch)) {
        $linecontent = preg_replace('/|/', '</th><th class="contenttable">', $tablelines[2][$j]);
        $linecontent = preg_replace('/&#38;/', '&', $linecontent);
        $linecontent = preg_replace('/&lt;(.*)/', "$1", $linecontent);
        $tablecontent .= "<tr><th class="contenttable">$linecontent</th></tr>";
    }
    // normale Tabellenzeilen
    else {
        // CSS-Klasse immer im Wechsel
        $css = "contenttable1";
        if ($j%== 0)
        $css = "contenttable2";
        // Pipes durch TD-Wechsel ersetzen
        $linecontent = preg_replace('/|/', '</td><td class="'.$css.'">', $tablelines[2][$j]);
        $linecontent = preg_replace('/&#38;/', '&', $linecontent);
        $tablecontent .= "<tr><td class="$css">$linecontent</td></tr>";
        }
        $j++;
    }
$content = str_replace ("$match", "<table class="contenttable" summary="">$tablecontent</table>", $content);
}
 
mit dem Ersetzen
Code: (php) [Auswählen]

elseif 
($attribute == "tabelle" || substr($attribute,0,8) == "tabelle=") {
    // Tabelleninhalt aufbauen
    $tablecontent = "";
    $zelle_nr = 1;
    if(substr($attribute,0,8) == "tabelle=")
        $css_clase = substr($attribute,8,strlen($attribute)-8);
    else
        $css_clase 
= "contenttable";
    // Tabellenzeilen
    preg_match_all("/(&lt;|&lt;&lt;)(.*)(&gt;|&gt;&gt;)/Umsie", $value, $tablelines);
    foreach ($tablelines[2] as $tablematch) {
        if(strstr($tablematch,"&lt;")) {
            $tablematch = str_replace("&lt;","",$tablematch);
            $htmltag = "th";
        }
        else {
            $htmltag = "td";
        }
        $tablezelle = explode("|",$tablematch);
        $tablecontent .= "<tr>";
        foreach ($tablezelle as $zelle) {
            if($htmltag == "th")
                $css = $css_clase;
            else
                $css 
= $css_clase.$zelle_nr;
            $tablecontent .= "<".$htmltag." class="".$css."">$zelle</".$htmltag.">";
            $zelle_nr++;
        }
        $tablecontent .= "</tr>";
        $zelle_nr = 1;
    }
    $content = str_replace ("$match", "<table class="$css_clase" summary="">$tablecontent</table>", $content);
}
 

Für jede Spalte wird nun eine eigene Nummer erzeugt (contenttableNUMMER)
oder mit Eigener Klasse [tabelle=meinKlasse|.....] (meinKlasseNUMMER)

mfg. stefanbe
« Letzte Änderung: 01. Januar 1970, 01:00:00 von Guest »

*

Offline Samson

  • Mitglied
  • 104
Re: Für jede Tabellenspalte eigene css Eigenschaften
« Antwort #1 am: 05. Mai 2010, 20:30:14 »
Der PHP-Code von stefanbe kann ergänzt werden, um zusätzlich auch wieder abwechselnde Zeilen (wie im Original) zu erhalten. Das CSS-Layout für die Zeilen wird in style.css nicht über die Klasse, sondern die ID definiert.
elseif ($attribute == "tabelle" || substr($attribute,0,8) == "tabelle=") {
    // Tabelleninhalt aufbauen
    $tablecontent = "";
    $zelle_nr = 1;
    $j = 0;
    if(substr($attribute,0,8) == "tabelle=")
        $css_clase = substr($attribute,8,strlen($attribute)-8);
    else
        $css_clase = "contenttable";
    // Tabellenzeilen
    preg_match_all("/(&lt;|&lt;&lt;)(.*)(&gt;|&gt;&gt;)/Umsie", $value, $tablelines);
    foreach ($tablelines[2] as $tablematch) {
        if(strstr($tablematch,"&lt;")) {
            $tablematch = str_replace("&lt;","",$tablematch);
            $htmltag = "th";
        }
        else {
            $htmltag = "td";
        }
        $tablezelle = explode("|",$tablematch);
        $tablecontent .= "<tr>";
        // CSS-ID immer im Wechsel für unterschiedliche Zeilen
        $cssid = $css_clase."1";
        if ($j%2 == 0) $cssid = $css_clase."2";
        $j++;
        foreach ($tablezelle as $zelle) {
            $zelle = trim($zelle);
            if($htmltag == "th") {
                $css = $css_clase;
                $tablecontent .= "<".$htmltag." class="".$css."">$zelle</".$htmltag.">";
            }
            else {
                $css = $css_clase.$zelle_nr;
                $tablecontent .= "<".$htmltag." class="".$css."" id="".$cssid."">$zelle</".$htmltag.">";
            }
            $zelle_nr++;
        }
        $tablecontent .= "</tr>";
        $zelle_nr = 1;
    }
    $content = str_replace ("$match", "<table class="$css_clase" summary="">$tablecontent</table>", $content);
}
In style.css kann dann z.B. stehen:
table.tabletn {
border-collapse       : collapse;
margin-top            : 20px;
}

th.tabletn {
vertical-align        : top;
color                 : #FFFF99;
background-color      : #339900;
border                : 2px solid #339900;
padding               : 2px 3px;
font-size             : 17px;
}

#tabletn1 {
vertical-align        : top;
border                : 2px solid #339900;
background-color      : #FFFF99;
padding               : 2px 3px;
font-size             : 17px;
}

#tabletn2 {
vertical-align        : top;
border                : 2px solid #339900;
background-color      : #CCFF66;
padding               : 2px 3px;
font-size             : 17px;
}

td.tabletn1 {
  text-align            : center;
  font-weight           : bold;
}
Der Aufruf erfolgt dann mit
[tabelle=tabletn|...]
« Letzte Änderung: 01. Januar 1970, 01:00:00 von Guest »

*

Offline Thorstn

  • Administrator
  • Mitglied
  • 776
Re: Für jede Tabellenspalte eigene css Eigenschaften
« Antwort #2 am: 18. Januar 2011, 13:44:35 »
Ich bin so fit in PHP...

Sind die oben genannten Ergänzungen in der Syntax.php eigentlich in der 1.12.beta3 schon eingebaut?

Gruß aus Bochum,
Thorsten
« Letzte Änderung: 01. Januar 1970, 01:00:00 von Guest »
www.mad-it.de - Wir lösen keine Probleme. Wir machen sie.
moziloCMS-Layouts auf mozilo-layouts.thorstn.com
webdesign-ruhr.de - Webdesign aus Bochum

*

Offline freakiger

  • Mitglied
  • 118
Re: Für jede Tabellenspalte eigene css Eigenschaften
« Antwort #3 am: 18. Januar 2011, 14:49:14 »
ich glaube: JA!
(hab von php noch keine Ahnung)
die Klassen (siehe Screenshot) müssten zumindest reichen.
« Letzte Änderung: 01. Januar 1970, 01:00:00 von Guest »

*

Offline stefanbe

  • Administrator
  • Mitglied
  • 2237
Re: Für jede Tabellenspalte eigene css Eigenschaften
« Antwort #4 am: 18. Januar 2011, 14:52:07 »
ja ist geht sogar mit eigenem classnamen [table=classname|..........

gruss stefanbe
« Letzte Änderung: 01. Januar 1970, 01:00:00 von Guest »