Seite 1 von 1

Zeilenumbruch in HTML aus PHP wird nicht dargestellt

Verfasst: 26.09.2012 13:29
von Nuramon
Huhu ihr.
Ich bastel gerade an etwas, wo ich eine HTML-Tabelle im PHP-Code erzeuge und dann per Template-Variable anzeigen lasse.
Das funktionert soweit auch wie gewünscht,
aber sobald ich den Tabellencode nicht direkt per Template-Variable in den Quelltext setze, sondern den Code per Javascript durch ein OnClick in ein Element per innerHTML einfügen möchte, werden Zeilenumbrüche nicht angezeigt.

Mein Code sieht folgendermaßen aus:

Code: Alles auswählen

    $table = "<table class='test_table' width='500' height='160' style='min-width:500px; max-width:500px; min-height:160px; max-height: 160px;'>
                <tr height='30' tyle='min-height:30px; max-height:30px;'>
                    <th class='test_title' align='center' colspan='3'>
                        " . $test['name'] . "
                    </th>
                </tr>
                <tr height='40' style='min-height:40px; max-height:40px;'>
                    <td align='center' width='60' style='min-width:60px; max-width:60px;'>
                        <img src='" . $phpbb_root_path . "images/tests/" . $test['image'] . "' alt='" . $test['name'] . "' />
                    </td>
                    <td class='test_text' width='390' style='min-width:390px; max-width:390px;'>
                        " . $test['text'] . "
                    </td>
                    <td class='test_points' align='center' width='50' style='min-width:50px; max-width:50px;'>
                        " . $test['points'] . "
                    </td>
                </tr>
                <tr height='20' style='min-height:20px; max-height:20px;'>
                    <td align='center' colspan='3'>" . $rank . "</td>
                </tr>
                <tr height='10' style='min-height:10px; max-height:10px;'>
                    <td align='left' colspan='3'><p class='test_count'>" . $test['count'] . "</p></td>
                </tr>
                <tr height='10' style='min-height:10px; max-height:10px;'>
                    <td align='right' colspan='3'><p class='test_date'>" . date("d.m.Y H:i",$test['time']) . "</p></td>
                </tr>
            </table>";
    // Ersetze alle Enters
    $table = preg_replace("/\r|\n/s", "", $table);
Festgestellt habe ich den Fehler in der Zeile

Code: Alles auswählen

" . $test['text'] . "
Der Text ist teilweise etwas länger als 390 px. Bei der normalen Anzeige wird es wie gesagt auch umgebrochen.

Wenn ich es allerdings mit folgendem Code setze,

Code: Alles auswählen

function setHTMLCode(elementID)
{
    var target = document.getElementById('zielElement');
    var html = "";
    switch(elementID)
    {
        <!-- BEGIN elements -->
            case {elements.ID}:
                html = "{elements.HTML_TABLE}";
                break;
        <!-- BEGINELSE -->
            default:
                html = "Ist leer.";
                break;
        <!-- END -->
    }
   
    target.innerHTML = html;
   
} 
dann ist kein Zeilenumbruch mehr da.
Sonst funktioniert der Code allerdings tadellos.

Kann mir jemand verraten, woran das liegt?
Oder wie ich das ändern kann?
Direkte <br /> möchte ich nur ungern einfügen, der Text wird aus der Datenbank ausgelesen und ich müsste ihn dann entsprechend dort anpassen, was unsauber ist, da ich ihn auch woanders verwende und es in der normalen Tabelle auch geht.