Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Smilies mittels str_replace einsetzen?

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Smilies mittels str_replace einsetzen?

    Hallo zusammen!

    ich würde gerne in meinem Gästebuch zb: "" gegen eine smilie-grafik ersetzen.

    ich habe natürlich bereits google zu genüge bemüht deswegen, aber ich schaffe es einfach nicht das es klappt, da meine php Kenntnisse noch relativ am Anfang stehen.

    ich weiß bisher das wenn, dann muss die smilie-grafik beim auslesen erst eingefügt werden und das man das mit dem befehl str_replace machen kann.

    Mein Gästebuch funktioniert schon korrekt. Nur die Sache mit den Smilies noch nicht.

    Was ich bisher habe:
    Code:
    <?php
    
                include('datenbank.php');
                $db2 = mysql_query("SELECT * FROM gbuch ORDER by id DESC");
                while($db3 = mysql_fetch_array($db2)){ 
    
                echo '             
                          
                     <div class="inhalt">
    
                           <table id="nachricht" class="gb">
    
                                <tr>
    
                                    <td>
    
                                    '.$db3[nachricht]. '
    
                                    </td>
    
                                </tr>
    
                            </table>
    
                      </div>                   
                ';
                }
                ?>
    wie kann ich jetzt in meiner Ausgabe $db3[nachricht] z.b. ": - )" (ohne die leerzeichen versteht sich^^) durch eine grafik ersetzen?

    Danke schon mal im Voraus!

    Grüße Jackoff


  • #2
    Ja das kann man mit str_replace machen.
    Code:
     $text = str_replace('; - )', '<img alt="; - )" src=...', $text);
    Wie str_replace genau funktioniert kannst du im Manual nachlesen:
    PHP: str_replace - Manual

    Weitere Infos zu deinem Problem findest du _massenhaft_ wenn du bei Google einfach nach "smilies ersetzen php" suchst: smilies ersetzen php - Google-Suche
    Create your own quiz show.

    Kommentar


    • #3
      ja, da finde ich tonnenweise ich weiß.

      ich weiß ja auch grob wie es gehen müsste,
      aber ich weiß eben nicht, WO in meinem Code ich des dann reinsetzen muss.

      Und muss dieses $text immer gleich sein? oder ist das in meinem fall $nachricht ?

      Kommentar


      • #4
        Hallo!

        Ob das nun $text oder so wie bei dir heist ist völlig wurscht. Du musst die Variable einsetzen wo sich dein Text befindet und da so was keine Konstante ist ist das auch egal wie die heist!

        Eine andere Frage ist aber speicherst du so wie ich die Smilies in einer extra Tabelle in der DB oder nicht?

        Desweiteren würde einen solchen Code hier aber ändern das er zum Beispiel so ausschaut :: damit stellst du sicher das zum wenn du zum Beispiel für ein Smilie den Coder kotz benutzt er nicht nicht ein Smilie ausgibt obwohl der Schreiber das gar nicht im Sinn hat darum sollte das so aussehen :kotz: dann gibt er auch nur ein Smilie aus wenn das so da steht!

        Ansonsten so sieht ein der Befehl dafür aus!

        PHP-Code:
        $db3[nachricht] = str_replace("::-):","<img src=\"pfad_zum_smilieverzeichnis/smilie.gif\" border=\"0\">",$db3[nachricht]) 
        Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
        http://www.lit-web.de

        Kommentar


        • #5
          also du meinst dann so:

          Code:
          <?php
          
                      include('datenbank.php');
                      $db2 = mysql_query("SELECT * FROM gbuch ORDER by id DESC");
                      while($db3 = mysql_fetch_array($db2)){ 
          
                      echo '             
                                
                           <div class="inhalt">
          
                                 <table id="nachricht" class="gb">
          
                                      <tr>
          
                                          <td>
          
                                          $db3[nachricht] = str_replace("::-):","<img src=\"images/smilies/grinsen.gif\" border=\"0\">",$db3[nachricht]) 
          
                                          </td>
          
                                      </tr>
          
                                  </table>
          
                            </div>                   
                      ';
                      }
                      ?>
          weil so funktioniert das nicht. da gibt er mir genau diese zeile aus da wo die nachricht stehen sollte:

          Code:
          $db3[nachricht] = str_replace("::-):","",$db3[nachricht])
          trotzdem danke schon mal!

          Kommentar


          • #6
            Du musst aber die Doppelpunkte in deinem Javascript auch so mit einbinden also es muss in deinem Textfeld wenn auf den Smilie geklickt wurde dann so drin stehen

            :grins: oder :: also nicht bloß in str_replace so rein schreiben!


            Bei mir sieht das so aus und funktioniert. Allerdings hole ich die Smilies also den Code und Namen aus einer DB!

            In der DB steht bei Code dann so was drin

            id code img
            1 :jubel: jubel.gif

            PHP-Code:
            <script type="text/javascript">
                        <!--
                        function smilie(strText,objElem)
                            {
                            if(document.selection)
                                {
                                objElem.focus();
                                document.selection.createRange().text=strText;
                                document.selection.createRange().select();
                                }
                              else if (objElem.selectionStart || objElem.selectionStart == '0')
                                {
                                intStart = objElem.selectionStart;
                                intEnd = objElem.selectionEnd;
                                objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);
                                objElem.selectionStart=objElem.selectionEnd=intStart+strText.length;
                                objElem.focus();
                                }
                              else
                                {
                                objElem.value += strText;
                                }
                            }
                        //-->
            </script>
            <?php
            $sqlbefehl 
            ="Select * From $tab_smilie limit 10";
            $ergebnis mysql_query($sqlbefehl)or die(mysql_error());
            while(
            $row mysql_fetch_array($ergebnis)){
              
            $smileid $row['id'];
              
            $code $row['code'];
              
            $image $row['image'];
            ?>
            <a href="javascript:smilie('<?php echo $code ?>',document.formular.text)"><?php echo "<img src=\"../smilies/".$image."\" border=\"0\">";?></a>
            <?php
            }
            ?>
            Der Code etscheint dann im Textfeld so :jubel: !

            Und beim auslesen natürlich wieder aus der DB holen und dann mache ich den str_replace

            Was dann bei mir so ausschaut

            PHP-Code:
            $sqlbefehl ="Select * From $tab_smilie";
            $smile mysql_query($sqlbefehl)or die(mysql_error());
            while(
            $row mysql_fetch_array($smile)){
              
            $code $row['code'];
              
            $smilie $row['image'];
              
            $text str_replace($code,"<img src=\"../smilies/".$smilie."\" border=\"0\">",$text);

            Das $text kommt natürlich vorher aus der Tabelle der Einträge!
            Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
            http://www.lit-web.de

            Kommentar


            • #7
              aha.

              allerdings mache ich das (vorest zumindest) nicht mit javascript.

              ich möchte "einfach", dass wenn jemand eine nachricht erstellt und dabei zb. die zeichenfolge :: benutzt, dass anstelle von :: beim auslesen eben ein smilie (also eine grafik) erscheint.

              die smilies sind im webspace in dem verzeichnis /images/smilies/smilie.gif gespeichert und nicht in der db.

              und jetzt habe ich eben das problem mit deinem code, dass er mir anstelle einer nachricht diese zeile hier anzeigt:
              Code:
              $db3[nachricht] = str_replace("::-):","",$db3[nachricht])
              grüße jackoff

              Kommentar


              • #8
                Wie sieht denn dein Code derzeit aus?
                Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                Kommentar


                • #9
                  der code bei dem der fehler auftritt sieht genau so aus:

                  PHP-Code:
                  <?php

                              
                  include('datenbank.php');
                              
                  $db2 mysql_query("SELECT * FROM gbuch ORDER by id DESC");
                              while(
                  $db3 mysql_fetch_array($db2)){ 

                              echo 
                  '             
                                        
                                   <div class="inhalt">

                                         <table id="nachricht" class="gb">

                                              <tr>

                                                  <td>

                                                  $db3[nachricht] = str_replace("::-):","<img src=\"images/smilies/grinsen.gif\" border=\"0\">",$db3[nachricht]) 

                                                  </td>

                                              </tr>

                                          </table>

                                    </div>                   
                              '
                  ;
                              }
                  ?>

                  Kommentar


                  • #10
                    Nutze doch einfach das Javascript was ich mit gepostet habe. Das funktioniert und speichert sogar die Curserstellung!

                    So machst du es doch den Usern einfacher!

                    Du musst nur das mit der DB Sache auf dich anpassen,sprich raus löschen!
                    Aus dem Dynamo Lande kommen wir. Trinken immer reichlich kühles Bier. Und dann sind wir alle voll, die Stimmung ist so toll. Aus dem Dynamo Lande kommen wir.
                    http://www.lit-web.de

                    Kommentar


                    • #11
                      nun gut ok, ich werde mich mal dran versuchen.

                      bin ja gespannt ob ich das alles hinkrieg...

                      Kommentar


                      • #12
                        Hallo,

                        du sollst das str_replace() nicht in den String reinschreiben.
                        PHP-Code:
                        <?php

                                    
                        include('datenbank.php');
                                    
                        $db2 mysql_query("SELECT * FROM gbuch ORDER by id DESC");
                                    while(
                        $db3 mysql_fetch_array($db2)){ 

                                    echo 
                        '             
                                              
                                         <div class="inhalt">

                                               <table id="nachricht" class="gb">

                                                    <tr>

                                                        <td>'
                        .

                                                        
                        str_replace("::-):"'<img src="images/smilies/grinsen.gif" border="0">'$db3[nachricht])

                                                        .
                        '</td>

                                                    </tr>

                                                </table>

                                          </div>                   
                                    '
                        ;
                                    }
                        ?>
                        Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                        Kommentar


                        • #13
                          Zitat von Manko10 Beitrag anzeigen
                          Hallo,

                          du sollst das str_replace() nicht in den String reinschreiben.
                          PHP-Code:
                          <?php

                                      
                          include('datenbank.php');
                                      
                          $db2 mysql_query("SELECT * FROM gbuch ORDER by id DESC");
                                      while(
                          $db3 mysql_fetch_array($db2)){ 

                                      echo 
                          '             
                                                
                                           <div class="inhalt">

                                                 <table id="nachricht" class="gb">

                                                      <tr>

                                                          <td>'
                          .

                                                          
                          str_replace("::-):"'<img src="http://www.php.de/images/smilies/grinsen.gif" border="0">'$db3[nachricht])

                                                          .
                          '</td>

                                                      </tr>

                                                  </table>

                                            </div>                   
                                      '
                          ;
                                      }
                          ?>
                          wenn ich es so schreibe, kommt folgender fehler:
                          Parse error: parse error, unexpected T_STRING, expecting ',' or ';' in /srv/www/htdocs/web12/html/design_beta/guestbook.php on line 195


                          In zeile 195 ist genau der eingefügte code von dir (str_replace...)

                          gruß jackoff

                          Kommentar


                          • #14
                            $db3['nachricht'] statt $db3[nachricht].
                            Aber einen Parse Error produziert das nicht. Der Fehler muss woanders liegen. Vielleicht hast du etwas vergessen, zu übertragen (z.B. die Punkte).
                            Refining Linux: “Performing Push Backups – Part 1: rdiff-backup

                            Kommentar


                            • #15
                              ohoooo!

                              und siehe da, man fügt das vergessene hochkomma ein und schwups läufts!

                              prima sache!

                              vielen dank!!!

                              Wenn ich jetzt noch weitere smilies eingesetzt haben will, wie mache ich das?
                              Einfach für jeden smilie eine neue zeile mit eben der geänderten zeichenfolge und ner anderen grafik?

                              oder packt man das noch alles in den gleichen befehl?


                              gruß jackoff

                              p.s. bis hierher aber schon mal superhilfe hier! auch die sache mit dem javascript (die ich zwar nicht angewendet habe). trotzdem danke

                              Kommentar

                              Lädt...
                              X