Smilie-"Problem"

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 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?

    Kommentar


    • #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.
      Zuletzt geändert von senger1985; 16.04.2013, 13:06.

      Kommentar


      • #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!
        Zuletzt geändert von senger1985; 16.04.2013, 16:37.

        Kommentar


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

          private Homepage

          Kommentar


          • #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"

            Kommentar


            • #7
              Zitat von senger1985 Beitrag anzeigen
              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
              Zitat von senger1985 Beitrag anzeigen
              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.
              Zuletzt geändert von Melewo; 17.04.2013, 06:25.

              Kommentar


              • #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!

                Kommentar


                • #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.
                  Zuletzt geändert von Melewo; 17.04.2013, 12:54.

                  Kommentar


                  • #10
                    /*closed & solved*/

                    Kommentar

                    Lädt...
                    X