Ankündigung

Einklappen
Keine Ankündigung bisher.

Smilies in Gästebuch

Einklappen

Neue Werbung 2019

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

  • Smilies in Gästebuch

    hallo,

    ich habe mir kürzlich ein kleines Gästebuch geprogt....
    -das Problem : wie kann ich smilies in meinem formular zur Auswahl hinzufügen, in der mysql Datenbank speichern und wieder augeben ?



    CREATE TABLE `gaestebuch` (
    `id` INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY ,
    `ersteller` CHAR( 30 ) NOT NULL ,
    `beitrag` TEXT NOT NULL ,
    `datum` DATETIME NOT NULL,
    `smilie` BLOB
    ) ENGINE = MYISAM ;





    PHP-Code:
    <?php
        $server 
    "localhost";
        
    $datenbank "css-php-mysql";
        
    $username "johannes";
        
    $passwort "XXXXXXX";

        
    $link mysql_connect($server$username$passwort);

        if (!
    $link)
            {
            die(
    "Konnte die Datenbank nicht öffnen.
                 Fehlermeldung: "
    mysql_error());
            }

        
    #### "Erfolgreich zur Datenbank verbunden ! ####

        
    $db mysql_select_db($datenbank$link);
        if (!
    $db)
            {
            echo 
    "Konnte die Datenbank nicht auswählen.";
            }

        
    #### Datenbank ausgewählt, jetzt Gästebuch Programm ####

        
    $ersteller trim(strip_tags($_POST["ersteller"]));
        
    $beitrag trim(strip_tags($_POST["beitrag"]));
        [
    B][U]$smilie trim(strip_tags($_POST["smilie"]));[/U][/B]
       
        
    # Wurde das Formular ausgefüllt ?
        
    if (!empty($_POST["submit"]))
            {
            
    # Prüfen ob etwas fehlt
            
    if (empty($ersteller))    $_errors[] = "Name Fehlt.";
            if (empty(
    $beitrag))    $_errors[] = "Beitrag fehlt.";

            
    # Sind Fehler im Array $_errors gespeichert ?
            
    if (count($_errors) > 0)
                {
                
    # Ja, Fehler vorhanden - anzeigen !
                
    foreach($_errors as $_error)
                    {
                    echo 
    $_error "<br>";
                    }
                }
            else
                {
                
    # Nein, keine Fehler - Eintrag abspeichern
                
    $_sql 'INSERT INTO shout
                         (ersteller,beitrag,datum,smilie)
                           VALUES (
                         "'
    .mysql_real_escape_string($ersteller).'",
                         "'
    .mysql_real_escape_string($beitrag).'",
                        [B][U] "'
    .mysql_real_escape_string($smilie).'",[/U][/B]
                         NOW());'
    ;

                
    mysql_query($_sql$link);
              

                echo 
    "<b>Danke fuuml;r Ihren Eintrag.</b><br><br>";
                }
            }

    ?>





    <?


        $_sql = "SELECT * FROM shout ORDER BY datum ASC";
        $_res = mysql_query($_sql, $link);
        while ($row = mysql_fetch_array($_res, MYSQL_ASSOC))
            {
            
            
            echo "<hr>";       
            
            echo "" . date("d.m.Y - H:i:s", strtotime($row["datum"]));
            echo "" . $row["ersteller"];  echo":";
            echo "". str_replace("\n", "<br>", $row["beitrag"]);
           [B][U] echo "". str_replace("\n", "<br>", $row["smilie"]);[/U][/B]
            echo "<hr>";
            }
            
        ?>
    <hr>
    <br>
    <form action="gaestebuch.php" method="POST">
    Name: <input name="ersteller" maxlength="30" width="30px"   ><br>
    Beitrag:<br>
    <textarea name="beitrag" rows="2" width="35px"></textarea><br>


    [B][U]<input type="radio" name="smilie" ><img src="smilies/huh.gif">
    ---->?????
    [/U][/B]

    <input type="submit" name="submit" value="Eintragen">
    </form>








    <?
        mysql_close($link);
    ?>


    kann mir jemand helfen ? muss ich dazu Java Scribt können oder eht das auch mit PHP ?


  • #2
    Naja eigentlich wird das immer über bestimmte Zeichenketten gelöst. Eben Doppelpunkt, Strich, Klammer. Diese Zeichenkette wird gesucht und dann durch nen HTML <image> Tag ausgetauscht wo das entsprechende Smilie angezeigt wird.

    Dafür brauchst du 1. die Grafiken, 2. die Zeichenketten mit denen du die Smilies darstellen willst und dann nur noch den Teil der die Zeichenketten ersetzt.

    Kommentar


    • #3
      Im Grunde gibt es für jeden Smilie einen Code (Kürzel), der bei der Ausgabe des Textes durch das entsprechende Bild ersetzt wird. Genauso macht es auch dieses Forum: :-) wird durch einen grinsenden Smilie ausgetauscht => .

      Ist es das, was du wissen wolltest?

      Gruß
      http://hallophp.de

      Kommentar


      • #4
        Das kannst du in den Functions definieren.. Ich habe das gleich beim BBCode mit eingebaut..
        Wie Asipak und Flor1an schon sagten:
        Du suchst den Kürzel, an dessen Stelle der Smilie erscheinen soll und ersetzt ihn durch eine Grafik:
        PHP-Code:
        $bb eregi_replace(':o)''<img src="smilies/01.jpg" alt=":o)" border="0" />'$bb); 
        Wenn du das per Onklick haben möchtest kannst du noch folgendes machen:
        PHP-Code:
        $bb.= '<img onclick="add(\':o)\');" style="cursor:pointer" src="smilies/01.jpg" alt=":o)" title="grinser mit dicker nase" />'
        Also dadurch wird lediglich " : o) " (Grinsesmilie mit dicker Nase) durch eine Grafik ersetzt.. und evtl. hat man man noch die Möglichkeit, dies per Klick auf den Smilie in die Textarea einzufügen. So wie hier im Forum, wenn du etwas schreibst.

        Wenn es das ist, was du suchst, kann ich dir das bei Bedarf auch noch einmal ausführlicher erklären. Das ist jetzt nur so auf die Schnelle

        So Mods, korrigiert mich, wenn ich da falsch denk *g*

        Kommentar


        • #5
          Nicht falsch, aber eregi_replace() ist veraltet und sollte nicht mehr verwendet werden. Alternativ wird die Funktion PHP: preg_replace - Manual angeboten.

          Gruß
          http://hallophp.de

          Kommentar


          • #6
            Oki. Dann eben so *g* Aber das Prinzip wäre das Gleiche und es wäre 'ne Möglichkeit

            Kommentar


            • #7
              danke erstmal...
              also ich meinte es so, dass ich im Formular die verschiedenen smileys auswählen kann... so wie hier im Forum...
              wenn ich ein smiley auswähle kommt eine BB code oder wie man den auch nennt... der wird dann spähter im Beitrag durch den smiley erstetzt ...

              Kommentar


              • #8
                Hast du in deinen Functions (funktionen.php, functions.php o.ä.) schon BBCode oder Ähnliches?

                Kommentar


                • #9
                  nein, ich habe nur die oben angegebene php datei...

                  Kommentar


                  • #10
                    ookay, gut. Warte nen Moment, ich schreibs dir eben

                    Edit: Gehe zu Seite 2 <:

                    Kommentar


                    • #11
                      Ein "Fehler":
                      PHP-Code:
                         #### Datenbank ausgewählt, jetzt Gästebuch Programm ####

                          
                      $ersteller trim(strip_tags($_POST["ersteller"]));
                          
                      $beitrag trim(strip_tags($_POST["beitrag"]));
                          [
                      b][u]$smilie trim(strip_tags($_POST["smilie"]));[/u][/b]
                         
                          
                      # Wurde das Formular ausgefüllt ?
                          
                      if (!empty($_POST["submit"])) 
                      1. bu??? wtf?? Rennt das wirklich so bei dir? Ich denke nicht
                      2. IMHO wäre es schöner, zuerst zu Üprüfen ob das Form. abgeschickt wurde und dann die Variablen zu verwenden

                      Kommentar


                      • #12
                        Also.. zuerst legst du die Datei "functions.php" an..
                        Da kommt Folgendes rein: (Ist kommentiert)
                        PHP-Code:
                        <?php // functions.php
                        // -------------------------- Funktion Smilies ------------------------------- //
                        // definiert, welche Zeichenfolgen ersetzt werden sollen
                        function bbsmilies($bb){ 

                            
                        $bb str_replace($search$replace$bb);
                            
                            
                        $search = array();
                            
                        $replace = array();
                                    
                            
                        $bb nl2br($bb);
                            
                        // ab hier kannst du beliebig austauschen - und natürlich noch smilies hinzufügen
                            
                        $bb str_replace(':)''<img src="smilies/emoc_01.gif" alt=":)" border="0" />'$bb);
                            
                        $bb str_replace(':D''<img src="smilies/emoc_02.gif" alt=":D" border="0" />'$bb);
                            
                        $bb str_replace(':love:''<img src="smilies/emoc_03.gif" alt="love" border="0" />'$bb);
                            return 
                        $bb;
                        }
                        // defniert die onclicks. bindest du später ein
                        function get_bbsmilies($place){

                            
                        // bei klick auf bild => füge zeichenfolge ein ( zb :D ) | auch hier kannst du ändern, hinzufügen
                            
                        $bb.= '<img onclick="add(\':)\');" style="cursor:pointer" src="smilies/emoc_01.gif" alt=":)" title="grinsend" />';
                            
                        $bb.= '<img onclick="add(\':D\');" style="cursor:pointer" src="smilies/emoc_02.gif" alt=":D" title="lachend" />';
                            
                        $bb.= '<img onclick="add(\':love:\');" style="cursor:pointer" src="smilies/emoc_03.gif" alt="love" title="verliebt" />';
                            
                            echo 
                        $bb;    
                        }
                        // -------------------------------------------------------------------------- //
                        ?>
                        Damit das alles auch hergeholt wird, musst du die eben angelegte functions.php noch in deine Datei includen. Ich mache das immer direkt in der header.php. Wie du magst.
                        PHP-Code:
                        <?php include("functions.php"); ?>
                        Jetzt hast du die Funktionen definiert und die Datei, in der sie steht includet.
                        Du musst die onclicks aber noch einbinden - und den Text auf den die Funktion angewendet wird auch wieder richtig ausgeben. Ich mache das hier kurz anhand eines Beispiels:

                        Zuerst Javascript, damit onclick läuft:
                        Code:
                        <script type="text/javascript">
                        <!-- BBSmilies Funktion -->
                        var n = 1;
                        function add(code) {
                        	document.getElementById('bbsmilies').text.value += " " + code ;
                        }
                        </script>
                        Das lass mal so, wie es ist. "text" kannst du austauschen - bestimmt den Namen der Textarea, in welche die Zeichenfolge bei onclick eingefügt wird!

                        Nun schnell das Formular: (Die ID des Formulars muss "bbsmilies" sein)
                        Code:
                        <form action="example.php" method="post" id="bbsmilies">
                        			<fieldset>
                        				<h1>Formular</h1>
                        				
                        				<label>Titel</label>
                        				<input type="text" name="title">
                        				
                        				<?php get_bbsmilies('place'); /* BBSmilies ausgeben */ ?>
                        				
                        				<label>Text</label>
                        				<textarea rows="8" cols="50" name="text" id=""></textarea> <br />
                        
                        				<input type="submit" value="submit" name="submit" class="button">
                        			</fieldset>
                        		</form>
                        Das war's fast. Du musst nun nur noch darauf achten, dass du dern Text, auf den die Funktion angewendet wird, auch richtig ausgibst. Wie folgt:
                        PHP-Code:
                        echo bbsmilies($row->text); 
                        Ich hoffe das war verständlich.. Ansonsten fragen

                        Mituser: Bei Fehlern unbedintgerne drauf hinweisen

                        Kommentar


                        • #13
                          muss ich dann auch noch für die mysql tabelle einen spalte ffr die smilies anlegen ?

                          Kommentar


                          • #14
                            Nein, das machst du alles in der functions.php.. Keine zusätzlichen Spalten.
                            Hast du dir den Code einmal genau angeschaut?? Dies hat mit der Datenbank nichts zu tun!!

                            Es wäre übrigens ratsam, vor allem, da du nichtmal Ahnung von einer "functions.php" hattest, die Codes nicht nur zu kopieren, sondern dich mit den einzelnen Funktionen auseinanderzusetzen und ein wenig darüber zu lernen. Das erleichtert dir das Arbeiten damit ungemein.


                            EDIT: PHP: Functions - Manual
                            oder
                            http://www.selfphp.de/funktionsreferenz

                            Kommentar


                            • #15
                              Es ist sehr schade, dass Du Dir nicht mal die Mühe machst, zu versuchen, eine Komplettlösung halbwegs zu verstehen.

                              [MOD: verschoben]
                              --

                              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                              --

                              Kommentar

                              Lädt...
                              X