Kai: Textarea, Zeilenumbrüche, Anzahl Buchstaben und der Output

Hi,

Ein User kann über ein HTML-Formular einen Text in eine Textarea eingeben.

Ich habe 2 Plätze, wo später dieser Text ausgegeben werden kann.

Eine davon sieht nett aus, die andere ist eher ein Behelf.
-----------------------------------------------------------------

Also würde ich gerne "nachmessen". Passt der Text in das schöne Feld, dann nehm ich das.

Passt der Text dort nicht hinein, nehm ich ein Feld, wo ich theoretisch unendlich viel Platz habe.
------------------------------------------------------------------

Der schöne Platz hat Raum für 3 Zeilen je maximal ca. 100 Zeichen (ab dann autom. Zeilenumbruch).

Weiterhin würde ich gerne, falls nur 2 der 3 Zeilen in Anspruch genommen werden würden, gerne in Zeile 1 eine Leerezeile einbauen.

Wie gehe ich am besten vor?

Schönen Gruß, Kai

  1. Moin,

    Wie gehe ich am besten vor?

    Pass auf: Du berechnest, was der User eingegeben hat, und dann folgendermaßen:

    Passt der Text in das schöne Feld, dann nehm ich das.
    Passt der Text dort nicht hinein, nehm ich ein Feld, wo ich theoretisch unendlich viel Platz habe.

    Wo ist das Problem?

    Weiterhin würde ich gerne, falls nur 2 der 3 Zeilen in Anspruch genommen werden würden, gerne in Zeile 1 eine Leerezeile einbauen.

    Du willst in eine Zeile eine Leerzeile einbauen?

    Grüße Marco

    1. Also würde ich gerne "nachmessen". Passt der Text in das schöne Feld, dann nehm ich das.

      [...]

      Wie gehe ich am besten vor?

      Pass auf: Du berechnest, was der User eingegeben hat, und dann folgendermaßen:

      Sehr hilfreich.

      Frager: Mein Autokühler ist defekt, ich würde ihn gerne austauschen, wie gehe ich vor?

      Mr.Unknown: Pass auf: Du baust den alten Kühler aus und den neuen ein.

      Frager: Na danke.

      1. Om nah hoo pez nyeetz, Kai!

        Frager: Mein Autokühler ist defekt, ich würde ihn gerne austauschen, wie gehe ich vor?

        Mr.Unknown: Pass auf: Du baust den alten Kühler aus und den neuen ein.

        Frager: Na danke.

        Ja, das mag vielleicht daran liegen, dass aus deiner Beschreibung noch kein Problem hervorgeht. Es fehlt einfach viel drumrum

        • Wie werden die Daten verarbeitet?
        • Wie ausgegeben?
        • Was sind die "Plätze"?

        das Nachmessen könnte einfach ein Zählen der Zeichen sein. In PHP etwa strlen().

        Matthias

        --
        1/z ist kein Blatt Papier.

        1. Hallo,

          Frager: Na danke.
          Ja, das mag vielleicht daran liegen, dass aus deiner Beschreibung noch kein Problem hervorgeht. Es fehlt einfach viel drumrum.

          so isses.

          das Nachmessen könnte einfach ein Zählen der Zeichen sein. In PHP etwa strlen().

          Ich denke vor allem, PHP ist hier kein geeigneter Ansatz. Eine serverseitige Technik kann nicht ermitteln, wieviel Platz ein bestimmtes Element auf dem Ausgabemedium des Clients einnimmt, weil das von vielen Faktoren abhängt, die der Server nicht kennt. Man kann also höchstens aufgrund von Erfahrungswerten schätzen - das *kann* gutgehen,muss aber nicht.

          Stattdessen wäre hier IMO Javascript die geeignete Technik. Damit kann ich auf clientseitige Gegebenheiten reagieren und Eigenschaften eines Elements (wie etwa seine Größe) abfragen und beeinflussen.

          Ciao,
           Martin

          --
          Wer morgens zerknittert aufsteht, hat den ganzen Tag Gelegenheit, sich zu entfalten.
          Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
          1. Ja, das mag vielleicht daran liegen, dass aus deiner Beschreibung noch kein Problem hervorgeht. Es fehlt einfach viel drumrum.

            so isses.

            Einverstanden.
            Aber dann hätte mir Mr. Unknown das anstelle seiner Antwort schreiben dürfen, denn das wußte ich ja nicht.

            Ok.

            Der Platz wird in einem per fpdf generierten PDF bereit gestellt. Schriftart und Größe bestimme ich selber. Somit dürfte richtig sein,dass es immer noch ein  bisschen auf "Schätzen" hinaus läuft, aber wenn man eine kleine platzmäßige Sicherheitsreserve einbaut, sollte das schon gehen.

            Mein bisheriger Ansatz,

              
            $string = $_POST['text_aus_textarea'];  
            echo ($string."<br>"); // Kontrollausgabe  
            echo strlen($string); // Kontrollausgabe  
            echo("<br>");  
            $eingabe = explode("\n", $string);  
            // Hier könnte ich über count() prüfen, ob mehr als 3 Zeilen vorhanden sind. Und falls nicht, dann  
            foreach ($eingabe AS $zeile) {  
            echo strlen($zeile).":".$zeile."<br>"; // Hier dann prüfen, ob so viele Zeichen in der Zeile sind, dass fpdf automatisch die Zeile bricht.  
            }  
            echo("<br>");  
            $zeilenumbrueche = count($eingabe);  
            echo $zeilenumbrueche." Zeilen";  
            
            

            Damit fange ich aber bisher noch gar nicht irgendwelche fiesen Sonderfälle ab. So z.b., wenn eine Zeile so aussieht

            Zeile: fhj wf qwf qwf jdfhghghhguhgpwejiurefjfoöjdfshduhvfuashfupehuhv

            Denn dann bricht sie z.b. nach dem 4 Wort um und verschiebt mir außerdem ein riesiges Zeichenpaket in die nachfolgende Zeile. Sowas bleibt aber unberücksichtigt.

            Wie gehe ich das denn an?

            Gruß, Kai

            1. Hallo,

              Der Platz wird in einem per fpdf generierten PDF bereit gestellt.

              ach, guck an. DAS ist zum Beispiel eine entscheidend wichtige Information, die du im Startposting hättest geben sollen. Da sie fehlte, ging natürlich erstmal jeder davon aus, du wolltest den Text auf einer Webseite anzeigen.

              Schriftart und Größe bestimme ich selber. Somit dürfte richtig sein,dass es immer noch ein  bisschen auf "Schätzen" hinaus läuft, aber wenn man eine kleine platzmäßige Sicherheitsreserve einbaut, sollte das schon gehen.

              Ich kenne fpdf nicht selbst. Aber arbeitet das nicht auch box-orientiert? Kann man da nicht die Größe einer generierten Box abfragen, bevor man sie endgültig ins generierte PDF einbaut?

              $string = $_POST['text_aus_textarea'];

              echo ($string."<br>"); // Kontrollausgabe
              echo strlen($string); // Kontrollausgabe
              echo("<br>");
              $eingabe = explode("\n", $string);
              // Hier könnte ich über count() prüfen, ob mehr als 3 Zeilen vorhanden sind. Und falls nicht, dann
              foreach ($eingabe AS $zeile) {
              echo strlen($zeile).":".$zeile."<br>"; // Hier dann prüfen, ob so viele Zeichen in der Zeile sind, dass fpdf automatisch die Zeile bricht.
              }
              echo("<br>");
              $zeilenumbrueche = count($eingabe);
              echo $zeilenumbrueche." Zeilen";

              
              >   
              > Damit fange ich aber bisher noch gar nicht irgendwelche fiesen Sonderfälle ab.  
                
              Richtig, überlange Zeilen ohne Möglichkeit des Umbruchs sind dann ärgerlich. Deswegen mein oben geäußerter Vorschlag, die Größe der entstehenden Boxen während des Generierens zu überprüfen, und dann gg. abzuschneiden.  
                
              Schönes Wochenende,  
               Martin  
              
              -- 
              [Warum](http://community.de.selfhtml.org/zitatesammlung/zitat1208) können wir heute so sicher sagen, dass Gott keine Frau sein kann?  
              Weil dann nach "Es werde Licht" der nächste Satz "Wie sieht denn das hier aus?!" gewesen wäre.  
              Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
              
              1. Ich kenne fpdf nicht selbst. Aber arbeitet das nicht auch box-orientiert? Kann man da nicht die Größe einer generierten Box abfragen, bevor man sie endgültig ins generierte PDF einbaut?

                Das wäre sehr geil. Und ich überlege gerade, ob man das über einen Workaround erreichen könnte.

                Standardmäßig ist das bei fpdf eher umgekehrt. Man bestimmt die Größe der Box selber. Bei Multicells bestimmt man nur die Breite und die Zeilenhöhe, die Gesamthöhe wird natürlich durch die Anzahl der Zeilen generiert.

                Ein Rückgabewert vor Box-Einbau wäre genau, was mir helfen würde.

                Gruß, Kai