Fuchur: var mit mehrzeiligem Inhalt speichern?

Hallo Leute,
wie kann ich einem var einen mehrzeiligen Wert zuweisen?

Ich will eine Zitatfunktion für mein Forum umsetzen. Per php lese ich einen Text aus meiner mysql-tabelle aus und will diese jetzt in ein Textfeld eintragen lassen.

Habe also einen insert-funktion... leider ist aber der Text aus der mysql-tabelle (auch wenn ich zB \n und <br> lösche in mehrerein zeilen angelegt. Was kann ich dagegen unternehmen?

*Fuchur*

  1. Hi,

    wie kann ich einem var einen mehrzeiligen Wert zuweisen?

    indem Du die im jeweiligen Kontext gültige Repräsentation des Begriffes "Zeilenwechsel" abspeicherst. Das könnte beispielsweise "<br/>", "\n", "\r\n" oder auch "¶" sein.

    leider ist aber der Text aus der mysql-tabelle (auch wenn ich zB \n und <br> lösche in mehrerein zeilen angelegt. Was kann ich dagegen unternehmen?

    Wo immer die Daten her kommen, was immer da noch für Techniken eingesetzt werden: Es muss einfach nur gültiger JavaScript-Code erzeugt werden. Überlege Dir an dieser Stelle also, wie der JavaScript-Code auszusehen hat, den Du haben möchtest.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:° br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hallo Fuchur,

    wie kann ich einem var einen mehrzeiligen Wert zuweisen?

    Garnicht, _eine_ Variable ist skalar. Du kannst in deren Inhalt allerdings Zeichen(folgen) mit der Bedeutung "Newline" unterbringen.

    Ich will eine Zitatfunktion für mein Forum umsetzen. Per php lese ich einen Text aus meiner mysql-tabelle aus und will diese jetzt in ein Textfeld eintragen lassen.

    Du weißt, dass PHP auf dem Server ausgeführt wird. Warum lässt du nicht PHP das Formular ausgeben?

    Habe also einen insert-funktion... leider ist aber der Text aus der mysql-tabelle (auch wenn ich zB \n und <br> lösche in mehrerein zeilen angelegt. Was kann ich dagegen unternehmen?

    Die entsprechenden Umbruchzeichen(kettten) entfernen. Hierbei hilft dir die Forumssuche, resp. das Archiv.

    Grüße aus Barsinghausen,
    Fabian

    --
    "It's easier not to be wise" - < http://www.fabian-transchel.de/kultur/philosophie/ialone/>
  3. function insertzitat(myField){
         var zitattext = '<?PHP echo $firsttext; ?>';
         if (document.selection) {
      myField.focus();
      sel = document.selection.createRange();
      sel.text = zitattext;
         }
         else{
     if (myField.selectionStart || myField.selectionStart == '0') {                var startPos = myField.selectionStart;
           var endPos = myField.selectionEnd;
           Field.value = myField.value.substring(0, startPos)
      + zitattext
      + myField.value.substring(endPos, myField.value.length);
     } else {
           myField.value += zitattext;
     }
         }
    }

    Das ist mein Javascript + php-Script.
    $firsttext ist der Text den ich aus der mysql_tabelle bekomme mit dieser Funktion auf den Mysql-Text angewendet:

    zurueck($text){
       $text = str_replace("<br />","<-´",$text);
       $text = str_replace("<br>","<-´",$text);
       $text = str_replace("¶", "<-´", $text);
       $text = str_replace("\n", "<-´", $text);
       return $text;
    }

    Tja... und jetzt ist meine Frage warum das ganze nicht funktioniert.
    Ich bekomme als Scriptfehler, dass mein Stringliteral nicht abgeschlossen würde: "unterminated string literal" und zwar da, wo ich die var definieren möchte. ICh ersetze die \n usw durch so ne art Enterzeichen, weil ichs später wenn ichs wieder in die mysql-tabelle eintrage in ein \n zurückverwandeln will.

    *Fuchur*

    PS: Und damits komplett ist: Das ist zB ein Text den ich als zitat haben möchte:

    "Testtext.

    Texttext.
    Testertext.

    Text."

    PPSS: Ich hatte es zuerst so, dass der Text einfach in das Formular eingetragen wurde, funktionierte auch, nur kriegen dass dann halt alle, auch die die eigentlich gar nicht zitieren wollen und bei längeren Einträgen kann das ganz schön nervig sein.
    Einzige möglichkeit wäre ein zweiter Button fürs antworten mit quote,
    nur passt das leider nicht wirklich in mein design.

    1. Hi,

      function insertzitat(myField){
           var zitattext = '<?PHP echo $firsttext; ?>';

      Gut, das Problem ist klar: Javascript erlaubt keine Zeilenumbrüche innerhalb von konstanten Strings. Wenn PHP ausgeführt wird hast Du ja mit Deinem Beispiel:

        
      var zitattext = '"Testtext.  
        
      Texttext.  
      Testertext.  
        
      Text."';  
      
      

      Die Idee, das bereits in PHP zu erledigen ist auch nciht verkehrt.

      Das ist mein Javascript + php-Script.
      $firsttext ist der Text den ich aus der mysql_tabelle bekomme mit dieser Funktion auf den Mysql-Text angewendet:

      zurueck($text){
         $text = str_replace("<br />","<-´",$text);

      Sehr schön. Und wie hältst Du es z.B. mit '''?
      (BTW: das '<' in '<-' muß normalerweise escaped werden also z.B.: '&lt;' und die Spielerei mit dem Absatzzeichen würde ich auch entfernen. Ich würde auch noch '\r' entfernen)

      Sollte aber trotzdem funktionieren, der Fehler scheint also wohl an anderer Stelle zu liegen.

      Bist Du Dir sicher, das es wirklich _direkt_

        
      $firsttext = zurueck($text_aus_MySQLDB);  
      
      

      ist? Oder ist da noch irgendetwas zwischen?

      Einzige möglichkeit wäre ein zweiter Button fürs antworten mit quote,
      nur passt das leider nicht wirklich in mein design.

      Dann ändere doch das Design? >;->

      so short

      Christoph Zurnieden