Smilie-"Problem"

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Smilie-"Problem"

    Hallo

    ich habe ein Chat-Script, welches auch gut funktioniert!
    Nur jetzt möchte ich auch Smilies einfügen, was aber leider nicht funktioniert.

    Folgender Aufbau:

    <form id="chatfenster" method="post">
    <div id="stream"></div>
    <div id="userliste">
    <h1>User</h1>
    <div id="userstream">
    // hier wird die Liste der User gezeigt

    </div>
    </div>
    //Zeichenkette wird in das Eingabefeld eingefügt
    <img src="biggrin.gif" onclick="insertSmiley(':-D')" />
    <img src="smile.gif" onclick="insertSmiley(':-)')" />
    <img src="bigeek.gif" onclick="insertSmiley(':-o')" />
    <img src="mad.gif" onclick="insertSmiley(':-(')" />
    <img src="wink.gif" onclick="insertSmiley(';-)')" />

    <table>
    <tr>
    <td>
    <textarea maxlength="500" id="message"></textarea>
    <div id="areacount">Du hast noch 500 Zeichen</div>
    </td>
    <td>
    <input type="hidden" value="<?php echo $_POST["name"]; ?>" id="chat_name" />
    <input type="hidden" value="<?php echo $eintrag->insert_id; ?>" id="chat_id" />
    <?php
    $sql = 'SELECT id FROM chat_message ORDER BY id DESC LIMIT 50';
    $ergebnis = $db->query( $sql );

    $startat = 0;

    while($msg = $ergebnis->fetch_object())
    {
    $startat = $msg->id;
    }
    ?>
    <input type="hidden" value="<?php echo $startat; ?>" id="chat_last_entry" />
    <?php

    $datum = date("d.m.Y - H:i:s", $timestamp);
    $farbe = "rgb(255,0,0)";
    $message = $name . " ist dem Chat beigetreten.";
    $sql = 'INSERT INTO `chat_message` (`name`, `message`, `farbe`, `datum`) VALUES (?,?,?,?)';
    $eintrag2 = $db->prepare( $sql );
    $eintrag2->bind_param('ssss', $name, $message, $farbe, $datum);
    $eintrag2->execute();
    ?>
    <input id="submit" type="submit" value="Senden" />
    </td>
    </tr>
    </table>
    </form>

    Wie bringe ich jetzt das Formular dazu, den String als "img" ausgibt?

  • #2
    Wenn Du Code veröffentlichst, warum dann unformatiert?
    Das Formular vom Forum bietet doch alle Möglichkeiten.

    Und zu dem von Dir veröffentlichten Code, verstehe zum Beispiel nicht, warum Du $sql usw. mit im Formular unterbringst, muss das sein? Dann benutzt Du den Eventhandler onclick um Funktionen aufzurufen, doch was soll der aushandeln, wenn keine Funktion zu sehen ist?

    Comment


    • #3
      Sorry,
      die Funktion steht weiter oben im HTML-Teil! Das funktioniert ja, also er setzt die Satzzeichen ins input.

      Nur möchte ich als, dass :-) zu img im Chat ausgegeben wird.
      Last edited by senger1985; 16-04-2013, 12:06.

      Comment


      • #4
        Hab jetzt folgendes gemacht:

        $search = array(
        ' ',
        ' )',
        ' )',
        ' ',
        ' '
        );
        $replace = array(

        ' <img border="0" src="wink.gif" /> ',
        ' <img border="0" src="wink.gif" /> ',
        ' <img border="0" src="wink.gif" /> ',
        ' <img border="0" src="wink.gif" /> ',
        ' <img border="0" src="wink.gif" /> '
        );

        $text = str_replace($search, $replace, $msg->message);

        echo $text;

        JS im head
        function auswerten(smiley)
        {
        var temp;

        temp=document.chatfenster.stream.value;
        document.chatfenster.stream.value=temp+smiley;
        }


        Leider ohne Erfolg!
        Last edited by senger1985; 16-04-2013, 15:37.

        Comment


        • #5
          nutze bitte die forum funktionen um code anzuzeigen .. dann sehen wir ein wenig mehr ;-)
          Gruß
          Uzu

          private Homepage

          Comment


          • #6
            Tut mir leid!
            Hab diese Funktion völlig übersehen!

            Jetzt bin ich mittlerweile soweit, dass er ":-)" als "smile.gif" in die DB speichert!

            Wie schaffe ich es jetzt, das "smile.gif" in einem IMG-Tag kommt und der restliche String als Text ausgegeben wird?

            PHP Code:
            $search ":-)";
                   
            $replace "smile.gif";
                   
            $message str_replace($search,$replace,$message
            Ausgabe in der PHP ist bis dato:
            PHP Code:
            <?php echo htmlentities($msg->message); ?>
            Gibt dann aber "smile.gif" aus!

            Wie gesagt, es soll das Smiley und der Text der nicht umgewandelt wird ausgegeben werden!

            Tut mir leid, wenn ich so sehr "nerve"

            Comment


            • #7
              Originally posted by senger1985 View Post
              Ausgabe in der PHP ist bis dato:
              PHP Code:
              <?php echo htmlentities($msg->message); ?>
              Wenn Du htmlentities() auf die Ausgabe anwendest, dann wird doch htmlentities dafür sorgen, dass <img border="0" src="wink.gif" /> auch mit Html-Entities ausgegeben wird. Du musst str_replace nach htmlentities() anwenden.

              PHP Code:
              $search  ":-)";
              $replace "<img src=\"wink.gif\" alt=\"lächeln\" border=\"0\" />";
              $message htmlentities($msg->message);
              $message str_replace($search,$replace,$message;    

              echo 
              $message
              Originally posted by senger1985 View Post
              Tut mir leid, wenn ich so sehr "nerve"
              Du nervst nicht, es sieht nur übersichtlicher aus. So allgemein und nicht auf das Problem bezogen, zwischen einleitenden und schließenden Form-Tag solltest Du nur das unterbringen, was für die Ausgabe des Formulars von Belang ist.
              Last edited by Melewo; 17-04-2013, 05:25.

              Comment


              • #8
                Hallo Melewo,

                vielen dank für deine Hilfe, nur leider geht es nicht!

                Ich stelle nochmal ein paar Codes.

                In message.php wo die daten in die DB gespeichert werden, stehen jetzt folgende Vars;
                PHP Code:
                $name $_POST["name"];
                    
                $message $_POST["message"];
                    
                $search ":-)";
                    
                $replace "<img src=\"smile.gif\" alt=\"l&auml;cheln\" border=\"0\" />" ;
                    
                $message htmlentities($msg->message);
                    
                $message str_replace($search,$replace,$message);
                    
                $farbe $_POST["farbe"]; 
                Und in der loadchat.php werden die ganzen Einträge ausgegeben:
                PHP Code:
                <b><?php echo htmlentities($msg->name); ?></b>&nbsp;(<?php echo $msg->datum?>):&nbsp;<i><?php echo htmlentities($msg->message); ?></i>
                Nur wird jetzt leider nichts mehr angezeigt!

                Comment


                • #9
                  Ich denke so bei mir, Du hast da einen kleinen Denkfehler in der Reihenfolge. Ich benutze zwar keine Smileys (oder wie die Dinger sich nennen), doch zum Teil noch BBCode. Ich gehe mal davon aus (möglich das ich falsch liege), dass ":-)" diese Zeichen aus dem gleichen Grund verwendet werden, wie BBCode und dieser Grund besteht halt darin, eben kein HTML in einer Datenbank zu speichern. Denn wer das Speichern von HTML möchte, der könnte ja gleich die Image-Tags mit den URIs speichern, statt ":-)" zu verwenden.

                  Somit speicherst Du in der Datenbank

                  PHP Code:
                  :-), [i]kursiv[/i], [b]fett[/b], [link]URL[/link
                  und wandelst dann erst im letzten Schritt vor Ausgabe die erlaubten Eingaben gegen ihre HTML-Entsprechungen um, wodurch eine gewisse zusätzliche Sicherheit vor Verseuchungen der Datenbank gegeben ist.

                  Es gibt da wohl einige Grundformen, die auch ohne Image angezeigt werden und somit recht universell sein sollten, doch wenn Du da Smileys als Images speichern und laden möchtest und dann noch versuchst die Ausgabe mit htmlentities abzusichern, dann ginge es nicht ohne BBC ab.

                  PHP Code:
                  // speichern mit:
                  $replace "[img]wink.gif[/img]";

                  // ausgeben mit:
                  $message htmlentities($msg->message);
                  $message preg_replace("/[img\](.+?)[\/img\]/","<img src=\"$1\" alt=\"Smiley\" border=\"0\" />",$message;    

                  echo 
                  $message
                  Tust Du es nicht, so wandelt htmlentities (auch htmlspecialchars) "<" in "&lt;" um und Du hast den Salat. Ob so oder so, umgewandelt wird vor Ausgabe und nicht vor Speicherung. Und statt [img]wink.gif[/img] wird sich wohl gleich ":-)" speichern und vor Ausgabe wie im ersten Beispiel umwandeln lassen. Nehme ich zumindest an, habe es mit ":-)" noch nicht getestet, würde es an Deiner Stelle aber. Wobei ich aber auch schon gesehen habe, dass es bei Punkt, Komma, Strich im Satzgefüge zu Verwechselungen kam, was mehr für die Variante mit [img] bild.gif[/img] sprechen würde.
                  Last edited by Melewo; 17-04-2013, 11:54.

                  Comment


                  • #10
                    /*closed & solved*/

                    Comment

                    Working...
                    X