meiko: Datenbanktext: 0d0a mit \n ersetzen

Hallo
Ich bin auf der Suche nach Newbie-freundlichen Helfern ;)

Der Text aus der Datenbank den ich ausgeben möchte stammt aus einem <textarea>.
Generell klappt das mit dem Ausgeben (per javascript) ganz gut.
Problem:
Zeilenumbrüche...
Die im Textarea angegebenen(returns) sind hexadezimale 0d0a...
Sobald die ins mouseover kommen ---> ERROR :(
Ich brauche (soviel weiß ich nun schon)
\n, also hex. 5c6e
Wie kann ich die Hexacodes bei der Ausgabe austauschen lassen?
Habe schon ein paar erlesene Sachen ausprobiert, ohne Erfolg...

Ich würde mich über eine verständliche Erklärung sehr freuen.
---------------------------------

<?
require('config.inc.php');
?>
<html>
<head>
<SCRIPT language=JavaScript><!--
function infos(text)
{
dwtext.innerText=text;
}
--></SCRIPT>
</head>
<body>
Text:<DIV id=dwtext>-</DIV>
<?
mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Couldn't connect to MySQL server!");
mysql_select_db($database);
if ($action == "" || $action == "viewall")
{
$result = mysql_query("SELECT * FROM $tablename ORDER BY userid");
while ($data = mysql_fetch_array($result))
{
?>
<a onmouseover="infos('<? echo $data[text];?>');" href="xxx.php">link</a>
<?
}
}
?>
</body>
</html>
-------------------------------
thx for reading :)

  1. Hallo meiko,

    Sobald die ins mouseover kommen ---> ERROR :(

    Der Error kommt also von JavaScript, was ist die Fehlermeldung?

    Wie kann ich die Hexacodes bei der Ausgabe austauschen lassen?

    Solltest du die Daten nicht schon beim Eintraegen formatieren, etwa mit nl2br?

    Habe schon ein paar erlesene Sachen ausprobiert, ohne Erfolg...

    Welche? Mit welchen Ergebnis?

    <SCRIPT language=JavaScript>

    language ist deprecated, type-attribut fehlt

    Text:<DIV id=dwtext>-</DIV>

    Anfuehrungszeichen um die id waere sicher kein Fehler ;)

    <a onmouseover="infos('<? echo $data[text];?>');"

    Wodurch ist $data['text'] denn im HTML-Quelltext ersetzt worden?

    thx for reading :)

    no bother

    Dieter

    1. Der Error kommt also von JavaScript, was ist die Fehlermeldung?

      "nichtabgeschlossene Zeichenfolgekonstante"

      Solltest du die Daten nicht schon beim Eintraegen formatieren,etwa mit nl2br?

      Ich hole den Text ja woanders wieder ins textarea, dort wird es korrekt angezeigt..., nl2br würde doch ein HTML-Umbruch erzeugen, aber ich brauche doch kein <br> sondern ein \n für mein mouseover, oder ?

      Habe schon ein paar erlesene Sachen ausprobiert, ohne Erfolg...

      ...naja, habe ich nicht dokumentiert..., denke es waren auch die falschen Ansätze...

      <SCRIPT language=JavaScript> language ist deprecated, type-attribut fehlt

      hoppla, läuft aber *g*

      Text:<DIV id=dwtext>-</DIV> Anfuehrungszeichen um die id waere sicher kein Fehler ;)

      doch da kommt bei mir nen Fehler... (dwtext is undfined)

      <a onmouseover="infos('<? echo $data[text];?>');"Wodurch ist $data['text'] denn im HTML-Quelltext ersetzt worden?

      onmouseover="infos('1.Zeile\n2.Zeile

      3.Zeile')

      so schauts aus, wenn ich nur 1.Zeile\n2.Zeile ins Textarea schreibe, habe ich 2 Zeilen untereinander, aber wenn ich im Texatrea ein return eingebe kommt der Fehler (siehe oben)

      Danke für die schnelle Antwort :)

      1. Hallo,

        Der Error kommt also von JavaScript, was ist die Fehlermeldung?

        "nichtabgeschlossene Zeichenfolgekonstante"

        nl2br

        Ich wusste nicht, was Du sonst noch damit machst, das ist dan ok

        <SCRIPT language=JavaScript>

        language ist deprecated, type-attribut fehlt

        hoppla, läuft aber *g*

        wird dadurch aber nicht besser. Ich frag mich ausserdem, woher Deine Funktion weiss, wer oder was dwtext ist, da sollte sowas stehen wie document.getElementById('dwtext'), dann waere dwtext auch nicht undefiniert.
        Im Endeffekt laeuft das auf diesen Code raus
        <html>
        <head>
        <script type="text/javascript">
        function infos(text)
        {
          document.getElementById('dwtext').innerHTML = text;
        }
        </script>
        </head>
        <body>
        text:<div id="dwtext">-</div>

        <a href="foo.htm" onmouseover="infos('zeile1\nzeile2\n');">link</a>
        </body>
        </html>
        So funktionierts, ist korrektes HTML, korrektes JavaScript und hat nichts mit den Zeilenumbruechen zu tun.

        Dieter

    2. Nachtrag:
      Nochmal hallo Dieter ;)

      Text:<DIV id=dwtext>-</DIV>
      Anfuehrungszeichen um die id waere sicher kein Fehler ;)

      <DIV id="dwtext">-</DIV>
      so ist es korrekt und so kommt natürlich kein Fehler... :)

  2. <?
    require('config.inc.php');
    ?>
    <html>
    <head>

    <SCRIPT type="text/javascript"><!--
    function infos(userid,text) {
    document.getElementById('dwuserid').innerHTML = userid;
    document.getElementById('dwtext').innerHTML = text;
    }
    --></SCRIPT>

    </head>

    <body>

    User:<DIV id="dwuserid">-</DIV>
    Text:<DIV id="dwtext">- </DIV>

    <?mysql_connect($sqlhost,$sqluser,$sqlpass) OR DIE( "Couldn't connect to MySQL server!");
    mysql_select_db($database);
    if ($action == "" || $action == "viewall"){$result = mysql_query("SELECT * FROM $tablename ORDER BY userid");
    while ($data = mysql_fetch_array($result))
    {
    ?>

    <a onmouseover="infos('<? echo $data[userid]; ?>','<? $text = $data[comment];
    $text = ereg_replace("(\r\n|\n|\r)", "<br>",$text); echo $text; ?>');"href="admin/admin.php?action=edit&userid=<? echo $data[userid]; ?>;return true">link</a><?}}?>

    </body>
    </html>

    So jetzt läufts ;)
    hiermit habe ich es hinbekommen:

    <? $text = $data[comment];
    $text = ereg_replace("(\r\n|\n|\r)", "<br>",$text); echo $text; ?>

    Dadurch werden die Zeilenumbrüche des Textareas durch <br> ersetzt.
    Danke an Dieter für die innerhtml geschichte ;)
    bye

    1. Hallo Meiko,

      freut mich, dass das jetzt hinhaut, was Dein replace anbetrifft, verweise ich noch auf einen Beitrag von Christian Kruse im PHP Manual

      $txt = preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$txt);

      zu finden unter http://www.php.net/manual/en/function.nl2br.php im unteren Drittel.

      Dieter

      1. freut mich, dass das jetzt hinhaut, was Dein replace anbetrifft, verweise ich noch auf einen Beitrag von Christian Kruse im PHP Manual

        $txt = preg_replace("/(\015\012)|(\015)|(\012)/","<br />",$txt);

        OH :)
        Stimmt, das ist besser weil sicherer !
        THX Dieter...