Paul: und HTML, auslesen aus einem Textfeld

Hi
Ich proigramiere an einem Gaestebuch.
Dort kann man den Text in eine Textbox eingeben. Dies wird dann gespeichert und beim auslesen in eine Tabelle eingefuegt.
Das Problem ist nun folgendes: Wenn ich sagen wir, 200 Zeichen fuer eine Zeile habe, und man gibt 500 ohne Umbruch ein, wird die Tabelle einfach groesser, ohne das ich einfluss darauf habe.
Wie kann ich einen Zeilenumbruch einbauen? Entweder den aus dem Textgfeld oder einen eigenen?
Ich finde es sieht bescheiden aus, wenn durch einen Eintrag das ganze Gaetsebuch 5 Din A3 Seiten lang.

Kann mir da einer helfen?

Danke im vorraus
Paul

  1. Hi Paul,

    Das Problem ist nun folgendes: Wenn ich sagen wir, 200 Zeichen fuer
    eine Zeile habe,

    Du hast üblicherweise gar keine bestimmte Anzahl Zeichen Platz in einer
    Zeile:
    1. Das Browserfenster kann eine beliebige, Dir im Allgemeinen nicht bekannte
       Breite haben.
    2. Texte werden im WWW überwiegend in Proportionalschriften dargestellt,
       so daß die Anzahl der Zeichen einer Zeile insbesondere von den konkreten
       Zeichen abhängen.

    und man gibt 500 ohne Umbruch ein, wird die Tabelle
    einfach groesser, ohne das ich einfluss darauf habe.

    Ja. Das ist so. Wenn es bereits so weit gekommen ist, dann hast Du verloren.

    Wie kann ich einen Zeilenumbruch einbauen?

    Das Problem lautet: _Wo_ kannst Du einen Zeilenumbruch einbauen?
    Aufgrund der oben genannten Argumente hast Du gewisse Schwierigkeiten,
    überhaupt erst mal
    a) zu merken, daß Du das tun willst, und
    b) eine passende Position innerhalb der Zeile auszudeuten.

    Entweder den aus dem Textfeld

    Exakten HTML-Code, bitte. (wrap=?)

    oder einen eigenen?

    Letzteres würde ich bevorzugen.

    Ich finde es sieht bescheiden aus, wenn durch einen Eintrag das
    ganze Gaetsebuch 5 Din A3 Seiten lang.

    Wie kommst Du jetzt auf eine Maßeinheit der Papier-Welt?

    Kann mir da einer helfen?

    Du hast den Inhalt Deiner Einträge als Zeichenketten mit Zeilentrennzeichen
    vorliegen. Du kannst ihn Zeile für Zeile prüfen und dabei eine worst-case-
    abschätzung für die Breite vornehmen (sagen wir mal, Du nimmst den Buchstaben
    M und eine dir vernünftig erscheinende Bildschirmbreite und eine im Normal-
    fall vorkommende Schriftgröße )bedenke, daß auch diese im Browser einstell-
    bar ist, trotz CSS!) und zählst Deine "200 Zeichen" erst mal sauber aus.

    Anschließend prüfst Du für jede Zeile, ob darin eine Zeichenkette enthalten
    ist, welche länger ist als, sagen wir mal: Die Hälfte dieser Zeichenzahl.
    In diese Zeichenkette fügst Du dann an ausgewählten Positionen - etwa jeweils
    nach der maximal erlaubten Zahl von Zeichen - etwas ein, was einen Umbruch
    auslöst. Im einfachsten Falle ein Leerzeichen; alternativ könntest Du ein
    <wbr> verwenden, auch wenn das ggf. kein valides HTML ist.

    Alternativ hast Du natürlich die Möglichkeit, beim Erkennen einer solchen
    Situation das Speichern des Eintrags zurückzuweisen.

    Viele Grüße
          Michael

    1. Hallo,
      wieso machst du bei der Ausgabe im Guestbook nicht einfach eine blinde Tabelle mit x Breite und gibst den Text einfach als Inhalt?
      Also ich machs immer so

      1. Hi
        Genau so mache ich es, doch das ein paar Leute haben rausgefunden, dass wenn man einen sehr langen Text einfuegt, die Breitenangabe ueberschrieben wird.
        Das ist eben das Problem.

        Gibt es keine Moeglichkeit den String zu brechen o.ae.

        Paul

        1. Hallo,

          Genau so mache ich es, doch das ein paar Leute haben rausgefunden, dass wenn man einen sehr langen Text einfuegt, die Breitenangabe ueberschrieben wird.

          Hmmm das verstehe ich jetzt nicht ganz ?
          Ausserdenm wirst du ja wohl ein Limit an Zeichen angegeben haben, oder ? Ich mach das immer bei 5000, mehr als genug.

        2. hi!

          Genau so mache ich es, doch das ein paar Leute haben rausgefunden,
          dass wenn man einen sehr langen Text einfuegt, die Breitenangabe
          ueberschrieben wird.

          Für den Fall empfehle ich das Modul Text::Wrap, das macht genau das
          von dir gewünschte: es splittet Strings in einzelne Zeilen, die nicht
          länger sind als eine vorgegebene Maximal-Länge.

          Mehr Infos zu diesem Modul findest du hier:
            http://www.perldoc.com/perl5.6.1/lib/Text/Wrap.html

          bye, Frank!