Seite 1 von 1

BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 07.03.2015 18:13
von DerTheo
Hallo Leute,

ich suche einen BBCode bei dem ich Tabellen anlegen kann. Folgende habe ich bereits gefunden:

http://www.4seven.de/forum/6test/viewto ... ?f=7&t=110

und

http://www.phpbb3bbcodes.com/viewtopic.php?t=2002

Zum einen: Mit SIMPLETEXT klappen die BBCodes nicht, TEXT alleine ist doch nicht mehr sicher oder?
Zum anderen: Ist es möglich eine Spalte mit einer Zelle einzufügen und DANEBEN eine zweite Spalte, die aber zwei Zellen besitzt?

[ externes Bild ]

Gibt es genau dafür einen BBCode oder wie kann ich die oben genannten umschreiben, sodass dies möglich ist?

Viele Grüße
Theo

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 08.03.2015 14:43
von Talk19zehn
Hi, vielleicht hilft dir die folgende Anleitung auf der Webseite von HabNurNeFrage erst einmal weiter? Ich könnte mir vorstellen, dass du sie anpassen könntest.
Schau -> http://bild4.bplaced.net/phpbb/viewtopi ... -f=5&p=164

Beitrag hier on Board: viewtopic.php?p=1327112#p1327112

Ein weiterer "Findling": :wink:
http://www.lpi-clan.de/viewtopic.php?t=3320

Grüße

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 08.03.2015 16:06
von regazer
Mit SIMPLETEXT klappen die BBCodes nicht, TEXT alleine ist doch nicht mehr sicher oder?
Es gibt genug BBCodes, die nur mit TEXT funktionieren, allen Warnungen zum Trotz ... :roll:

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 12.03.2015 21:45
von DerTheo
Super, vielen Dank :)

Ich hab folgenden BBCode gefunden:

Code: Alles auswählen

<script type="text/javascript">
    //<![CDATA[

    function tableposting(text) {
     if (typeof(text) == "string") {
      text = text.replace(/<table(.*?)>/ig, "<table class='posttable'>");
      text = text.replace(/<th(.*?)>/ig, "<th>");
      text = text.replace(/<tr(.*?)>/ig, "<tr>");
      text = text.replace(/<td(.*?)>/ig, "<td>");
      text = text.replace(/<thead(.*?)>/ig, "<thead>");
      text = text.replace(/<tfoot(.*?)>/ig, "<tfoot>");
      text = text.replace(/<\/th>/ig, "</th>");
      text = text.replace(/<\/tr>/ig, "</tr>");
      text = text.replace(/<\/td>/ig, "</td>");
      text = text.replace(/<\/thead>/ig, "</thead>");
      text = text.replace(/<\/tfoot>/ig, "</tfoot>");
      text = text.replace(/<\/table>/ig, "</table>");
      text = text.replace(/<br \/>/ig, "");
      }
     return text;
     }
    document.write(tableposting('{TEXT}'));

    css = '.posttable {border-collapse:collapse;width:100%;} .posttable th{padding:4px;background:;} .posttable tr:nth-child(odd){background-color:} .posttable tr:nth-child(even){background-color:;} .posttable td{vertical-align:middle;}',
    head = document.head || document.getElementsByTagName('head')[0],
    style = document.createElement('style');
    style.type = 'text/css';

    if (style.styleSheet){
      style.styleSheet.cssText = css;
    } else {
      style.appendChild(document.createTextNode(css));
    }

    head.appendChild(style);

    //]]>
    </script>
Wie bekomme ich da die horizontalen Trennlinien raus? ich finde es einfach nicht...

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 13.03.2015 11:08
von regazer
Sorry, aber das ist ein reines JavaScript, dessen Funktionaliät und Einsetzbarkeit sich mir so nicht erschließt.

Könntest Du bitte auch mal den Rest, also den wirklichen BBCode, posten ?

So kann ich nämlich nicht prüfen, was Du mit "horizontalen Trennlinien" meinen könntest.

Vielleicht helfen Dir diese Websites bzgl. Tabelleneigenschaften:
http://www.html-world.de/178/tabelleneigenschaften/
http://www.css4you.de/tableproperty.html

Du könntest es vielleicht mit diesen Tabelleneigenschaften probieren border="1" rules="rows"
Das gibt einen äusseren Rahmen und nur horizontale innere Trennlinien.

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 13.03.2015 12:19
von DerTheo
Der ganze BBCode lautet:

BBCode-Benutzung

Code: Alles auswählen

[tabel]{TEXT}[/tabel] 
HTML-Ersetzung

Code: Alles auswählen

<script type="text/javascript">
    //<![CDATA[

    function tableposting(text) {
     if (typeof(text) == "string") {
      text = text.replace(/<table(.*?)>/ig, "<table class='posttable'>");
      text = text.replace(/<th(.*?)>/ig, "<th>");
      text = text.replace(/<tr(.*?)>/ig, "<tr>");
      text = text.replace(/<td(.*?)>/ig, "<td>");
      text = text.replace(/<thead(.*?)>/ig, "<thead>");
      text = text.replace(/<tfoot(.*?)>/ig, "<tfoot>");
      text = text.replace(/<\/th>/ig, "</th>");
      text = text.replace(/<\/tr>/ig, "</tr>");
      text = text.replace(/<\/td>/ig, "</td>");
      text = text.replace(/<\/thead>/ig, "</thead>");
      text = text.replace(/<\/tfoot>/ig, "</tfoot>");
      text = text.replace(/<\/table>/ig, "</table>");
      text = text.replace(/<br \/>/ig, "");
      }
     return text;
     }
    document.write(tableposting('{TEXT}'));

    css = '.posttable {border-collapse:collapse;width:100%;} .posttable th{padding:4px;background:;} .posttable tr:nth-child(odd){background-color:} .posttable tr:nth-child(even){background-color:;} .posttable td{vertical-align:middle;}',
    head = document.head || document.getElementsByTagName('head')[0],
    style = document.createElement('style');
    style.type = 'text/css';

    if (style.styleSheet){
      style.styleSheet.cssText = css;
    } else {
      style.appendChild(document.createTextNode(css));
    }

    head.appendChild(style);

    //]]>
    </script>

Re: BBCode Tabelle - Spalte1: 1Zelle | Spalte 2: 2 Zellen

Verfasst: 13.03.2015 13:34
von regazer
Also, ich habe das jetzt mal testweise ins eins meiner lokalen Foren eingebaut.

Aber ich sehe da gar keine Tabelle, sondern nur den puren eingegebenen Text.

Woher hast Du denn den Source? Ohne Beschreibung sehe ich da leider überhaupt keine Funktionalität. :roll:

Wie es scheint, muß man da ja komplett den ganzen table-typischen HTML-Aufbau selbst einfügen. Das ist doch dann gar keine wirkliche Hilfe.

Es bedeutet aber zugleich, daß Du doch innerhalb Deines selbst eingefügten Tables auch selber dessen Aussehen festlegst, also auch, ob bzw. welche Linien gezeigt werden.

Ich helfe gerne, falls ich kann, sehe hier aber das zugrunde liegende Problem nicht. Ausserdem ist dieser BBCode problematisch. Sobald nämlich innerhalb des eingefügten Textes Anweisungen enthalten sind, die "nicht verstanden werden", erscheinen diese im Klartext und das Layout wird zerknallt. Ich habe das jetzt noch mit mehreren vorgefertigen Table-Beispielen aus dem Internet probiert und fast keins davon (ausser extrem simplen ohne wirklichen Nutzwert) wurde sauber dargestellt.

Nachtrag (viele Stunden später):
Deine Quelle habe ich gefunden. Benutzt man die dort gepostete HTML-Ersetzung, funktioniert auch das CSS. Mit dem, was Du hier gepostet hattest, aber irgendwie nicht so ganz nachvollziehbar. Überprüfe doch bitte mal selbst, was Du anders gemacht hast.

Im Original heißt die CSS-Zeile so:

Code: Alles auswählen

    css = '.posttable {border-collapse:collapse;width:96%;margin:2%;} .posttable th{padding:4px;border:1px solid black;background:lightblue;} .posttable tr:nth-child(odd){background-color:lightgray;} .posttable tr:nth-child(even){background-color:beige;} .posttable td{padding:4px;vertical-align:middle;border:1px solid black;}',
und Du hast das draus gemacht:

Code: Alles auswählen

        css = '.posttable {border-collapse:collapse;width:100%;} .posttable th{padding:4px;background:;} .posttable tr:nth-child(odd){background-color:} .posttable tr:nth-child(even){background-color:;} .posttable td{vertical-align:middle;}',
Daran ist ja prinzipiell nichts auszusetzen, das CSS nach eigenen Wünschen anzupassen, aber background:; bzw. background-color:;geht ja wohl irgendwie nicht. Wenn Du die bestehende Hintergrundfarbe beibehalten willst, nimm "transparent".

Ansonsten frage doch bei weiteren Problemen mal beim Autor unter http://bild4.bplaced.net/phpbb/viewtopi ... e-f=6&t=70 oder vielleicht sogar per eMail. Er ist wirklich sehr hilfsbereit !