Avatar billede futte850 Nybegynder
11. marts 2005 - 14:02 Der er 21 kommentarer og
1 løsning

Smilie problem

Dav jeg har lavet en php gæstebog, med smilies problemet er bare at når jeg trykker på de smilies jeg har sat ind sætte den et ansigt ind i min tekstbox altså f.eks :), og det er meget fint, men så når jeg skal sende teksten.. så denkommer til at stå nedenunder så man kan se hvad man har skrevet så sender den ikke billed med men den sender kun :) og ikke andet, det er jo meningen at den skal sende et billed så man kan se billed, nogen som kan svare mig på hvorfor det ikke virker???
Avatar billede olebole Juniormester
11. marts 2005 - 14:05 #1
<ole>

Sikkert fordi du har lavet en fejl  :)

/mvh
</bole>
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:05 #2
jeg sender lige koden:

<script type="text/javascript">
    <!--
    function storeCaret(textEl)
    {
    if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
    }

    function insertAtCaret(textEl, text)
    {
    if (textEl.createTextRange && textEl.caretPos)
    {
    var caretPos = textEl.caretPos;
    caretPos.text = (caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text);
    }
    else
    {
    textEl.value = textEl.value + text;
    }
    textEl.focus();
    }
    //-->
    </script>



<br>
          <tr>
            <td><font class="indhold2"><b>Skriv i g&aelig;stebogen</b> </font></td>
           
          </tr>
<br><br>
<FORM method="post" action="<? echo $PHP_SELF; ?>">
<INPUT type="hidden" name="skriv" value="1">
<INPUT name="navn" value="Navn" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<INPUT name="email" value="Email" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<INPUT name="hjemmeside" value="Hjemmeside" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<br>

<font class="indhold"><b>Besked</b></font><br>
<textarea name="besked" ID="txtBody" cols="80" rows="10" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }" onChange="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" onSelect="storeCaret(this);" wrap="soft"></textarea>
<br>
<INPUT type="submit" name="Skriv" VALUE="Skriv" tabindex="1" style="width:430;" />
</FORM>
<br>

<table>
<img alt=":-) Glad"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-) ');" src="smilie/biggrin.gif" style="cursor: hand; cursor: pointer" title=":-) Glad" width="12">

<img alt=":-D Griner"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-D ');" src="images/smil_b.gif" style="cursor: hand; cursor: pointer" title=":-D Griner" width="12">

<img alt="8-) Cool"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' 8-) ');" src="images/smil_c.gif" style="cursor: hand; cursor: pointer" title="8-) Cool" width="12">

<img alt=":-o Overrasket"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-o ');" src="images/smil_d.gif" style="cursor: hand; cursor: pointer" title=":-o Overrasket" width="12">
</p>
</table>
Avatar billede krak Nybegynder
11. marts 2005 - 14:07 #3
Du skal selv definere at :) skal erstattes med et billede.

F.eks. kan du skrive str_replace(":)","<img scr=\"smiley.gif\">",$tekst);
- Hvor smiley.gif er dit billede af smiley'en og $tekst din besked.

Det samme skal du gøre for hver smiley du vil have din gæstebog skal genkende.
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:08 #4
har du nogen ide om hvor man skal indsætte koden???

if ($_POST["skriv"]){
    $navn = $_POST["navn"];
    $email = $_POST["email"];
    $hjemmeside = $_POST["hjemmeside"];
    $hjemmeside = "<a href=\"".$hjemmeside."\">".$hjemmeside."</a>";
    $besked = $_POST["besked"];
   
  if($besked==null){
        echo "<font class=\"indhold3\"><b>Beklager, men du kan ikke poste en tom besked</b></font>";
    } else {

        if(!get_magic_quotes_gpc()){
            $navn = addslashes($navn);
            $email = addslashes($email);
            $hjemmeside = addslashes($hjemmeside);
            $besked = addslashes($besked);
        }
        $dato_array = getdate();
        if($dato_array["minutes"]<10)
        {
            $minutes = "0".$dato_array["minutes"];
        } else
        {
            $minutes = $dato_array["minutes"];
        }
 
        $dato = $dato_array["mday"]. "/".
        $dato_array["mon"]. "/".
        $dato_array["year"]. " ".
        $dato_array["hours"]. ":".
        $minutes;

        mysql_query("INSERT INTO gbog (navn, email, hjemmeside, dato, besked) VALUES ('$navn', '$email', '$hjemmeside', '$dato', '$besked')");
    }
}

?>



<script type="text/javascript">
    <!--
    function storeCaret(textEl)
    {
    if (textEl.createTextRange) textEl.caretPos = document.selection.createRange().duplicate();
    }

    function insertAtCaret(textEl, text)
    {
    if (textEl.createTextRange && textEl.caretPos)
    {
    var caretPos = textEl.caretPos;
    caretPos.text = (caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text);
    }
    else
    {
    textEl.value = textEl.value + text;
    }
    textEl.focus();
    }
    //-->
    </script>



<br>
          <tr>
            <td><font class="indhold2"><b>Skriv i g&aelig;stebogen</b> </font></td>
           
          </tr>
<br><br>
<FORM method="post" action="<? echo $PHP_SELF; ?>">
<INPUT type="hidden" name="skriv" value="1">
<INPUT name="navn" value="Navn" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<INPUT name="email" value="Email" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<INPUT name="hjemmeside" value="Hjemmeside" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }">
<br>

<font class="indhold"><b>Besked</b></font><br>
<textarea name="besked" ID="txtBody" cols="80" rows="10" onFocus="if(this.value==this.defaultValue) { this.value=''; }" onBlur="if(this.value=='') { this.value=this.defaultValue; }" onChange="storeCaret(this);" onClick="storeCaret(this);" onKeyUp="storeCaret(this);" onSelect="storeCaret(this);" wrap="soft"></textarea>
<br>
<INPUT type="submit" name="Skriv" VALUE="Skriv" tabindex="1" style="width:430;" />
</FORM>
<br>

<table>
<img alt=":-) Glad"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-) ');" src="smilie/biggrin.gif" style="cursor: hand; cursor: pointer" title=":-) Glad" width="12">

<img alt=":-D Griner"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-D ');" src="images/smil_b.gif" style="cursor: hand; cursor: pointer" title=":-D Griner" width="12">

<img alt="8-) Cool"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' 8-) ');" src="images/smil_c.gif" style="cursor: hand; cursor: pointer" title="8-) Cool" width="12">

<img alt=":-o Overrasket"
border="0" height="12" hspace="2" onClick="insertAtCaret(document.getElementById('txtBody'),' :-o ');" src="images/smil_d.gif" style="cursor: hand; cursor: pointer" title=":-o Overrasket" width="12">
</p>
</table>
<table>
Avatar billede krak Nybegynder
11. marts 2005 - 14:09 #5
den skal indsættes, hvor du viser din gæstebogs-besked. I databasen skal der blot stå ":)"
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:16 #6
oki, kunne du ik gøre mig en tjeneste, og fortælle præcist hvad jeg skal gøre!!! er ikke helt med: her ser du et script til der hvor min besked kommer ud

echo "<tr><td class='indhold' valign=\"top\" width=\"430\">";
      echo "fra: <a href=\"mailto:";
      echo $data["email"];
      echo "\">";
      echo $data["navn"];
      echo "</a>"." ";
      echo $data["dato"]. " ";
      echo $data["hjemmeside"];
      echo "<hr width=\"100%\" size=\"1\" color=\"#FFFFFF\" noshade>";
      echo nl2br($data["besked"]);
      echo "<hr width=\"100%\" size=\"1\" color=\"#C0C0C0\" noshade>";
      echo "</tr>";
      echo "</td>";
Avatar billede krak Nybegynder
11. marts 2005 - 14:23 #7
Jeg gætter på at du ikke selv har lavet scriptet... men det er da også ok.

i stedet for
echo nl2br($data["besked"]);
     
skriver du enten
echo str_replace(":)","<img src=\"smiley.gif\">",nl2br($data["besked"]));

eller hvis du vil tilføje flere smileys:
$temp=str_replace(":)","<img src=\"smiley.gif\">",nl2br($data["besked"]));
$temp=str_replace(":D","<img src=\"smiley2.gif\">",$temp);
$temp=str_replace(";)","<img src=\"smiley3.gif\">",$temp);
(Gentag den sidste linie for hver smiley du vil have med, hvor du blot tilpasser smiley'en med det billede der skal sættes ind)

Til sidst skriver du
echo $temp;
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:25 #8
underligt, at du siger det jeg har faktisk selv skrevet det! ;)
Avatar billede krak Nybegynder
11. marts 2005 - 14:29 #9
ok. Kan svaret bruges?
Avatar billede olebole Juniormester
11. marts 2005 - 14:32 #10
Er du sikker på, dette er, hvad du ønsker? Det er aldrig en fordel at lægge HTML i databasen, så du burde hellere udskifte brugernes tekst-smileys med billeder, når der skrives ud.

I den næste markup-standard eksisterer img-tag'et f.eks. slet ikke ... så er det jo ærgeligt at sidde med en masse data, der skal redigeres i hoved og r.., før de kan bruges  :)
Avatar billede krak Nybegynder
11. marts 2005 - 14:35 #11
olebole> I hans database bliver det også kun tegnene, der indsættes. I mit forslag er det også kun i visningen at ":)" bliver til et billede.

Bemærk i øvrigt min kommentar fra 14:09:56
Avatar billede olebole Juniormester
11. marts 2005 - 14:36 #12
sorry ... en truende enighed skimtes i horisonten  ;o)
Avatar billede olebole Juniormester
11. marts 2005 - 14:40 #13
Der eksisterer i øvrigt en herlig oversætter-funktion i PHP strtr() ... string-translate:

<?
$s = "en tekst :oP med smileys :o)";

$aRepl = array(
  ":oP" => "<img src=\"tounge.gif\">",
  ":)" => "<img src=\"smile.gif\">",
  ":o)" => "<img src=\"smile.gif\">"
);

print strtr($s, $aRepl);
?>
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:51 #14
Kan godt se problemet, jamen hvis det så bliver lavet om, hvordan vil i så have at jeg skal lave det???!!!

Foresten det virker nu, har bare et problem:
$temp=str_replace(":-D","<img src=\"biggrin.gif\">",$temp);
jeg har f.eks. lagt smiliene i en mappe, men kan ikke lige se hvordan man fortæller det i <img src=\"biggrin.gif\">

VIL MEGET GERNE HAVE AT VIDE HVIS DER ER EN ANDEN MÅDE AT LAVE DET PÅ, SÅ JEG IKKE BEHØVER AT LAVE DET OM I FREMTIDEN!
Avatar billede krak Nybegynder
11. marts 2005 - 14:54 #15
hvis din mappe hedder "billeder", skriver du blot billeder\biggrin.gif

Ligger mappen langt væk fra din php-side, kan du skrive hele stien http://www.domain.dk/mappe1/mappe2/biggrin.gif
Avatar billede krak Nybegynder
11. marts 2005 - 14:55 #16
hov! billeder/biggrin.gif med skråstregen den rigtige vej, naturligvis
Avatar billede futte850 Nybegynder
11. marts 2005 - 14:58 #17
lige en ting inden at jeg accepter svaret, hvad skal jeg så gøre så jeg ikke behøves at lave det om jeg har lavet nu, i fremtiden, i siger jo at det bliver lavet om så man ikke kan bruge img.. eller er det rigtig nok det krak har lavet til mig... eller fortalt mig?
Avatar billede krak Nybegynder
11. marts 2005 - 15:05 #18
img bliver ikke lavet om. Det er en af de første html-koder, og den ændrer de ikke på!

Hvis du laver det som jeg foreslog, skal du ikke lave noget om, medmindre du selv ønsker at ændre noget.
Avatar billede futte850 Nybegynder
11. marts 2005 - 15:11 #19
coool mange takker!!!
Avatar billede olebole Juniormester
11. marts 2005 - 15:32 #20
krak >> Du tager helt fejl. Om et par år hedder standarden på WWW XHTML2.0 og i den eksisterer img-tag'et ikke.

Hvis der overhovedet skal være mening i at overgå til XHTML, vil der ikke blive bagudkompatibilitet for HTML-koder i kommende browsere. Det gælder ikke den første nye version, men bliver formodentlig tilfældet i næste.
Ligesom der stadig er folk, der bruger Amiga, vil der dog uden tvivl være et 'sub-net' i nogle år fremover, hvor folk stadig bruger HTML - men der, hvor det virkelig sner, vil der ikke være noget, der hedder HTML.
Al web bliver XML baseret i løbet af forholdsvis kort tid. Det er der forbløffende mange kodere, der ikke ved ... der er sat vand over til meget seriøse overraskelser  :)
Avatar billede krak Nybegynder
11. marts 2005 - 15:40 #21
Ok, det var jeg ikke klar over. Men det er jo ikke noget der bliver slået fra over en enkelt nat, så der kan sagtens gå år, før futte850 og os andre skal ændre noget som helst. Har du et link til et sted, hvor det er offentliggjort?
Avatar billede olebole Juniormester
11. marts 2005 - 15:58 #22
Læs om XHTML på W3C ... det er ikke spor hemmeligt, men folk bruger bare ikke sitet til meget andet end at validere kode og slå en CSS-property op i ny og næ  :)

Står det til de, der 'ejer' nettet og bestemmer over det (erhvervslivet), så sker det i morgen. Det vil komme meget bag på mig, om tidshorionten bliver længere en to år. Hovedsagen er, at overgangen til XML/XHTML kun giver mening, hvis den foretages mere eller mindre 'overnight' - og formålet er da også at få slagtet HTML så hurtigt som muligt

Egentlig er der ikke noget nyt i det. Det har været planen i årevis. Desværre er uddannelses niveauet ikke ret stort blandt webkodere, så der er heller ikke en synderlig stærk faglig kultur indenfor branchen.

Om det er det, der giver sig udslag i det dårlige, faglige informations niveau, ved jeg ikke. Det eneste, jeg ved, er, at webkodere generelt har et yderst ringe kendskab til deres fag i forhold til medarbejdere i andre brancher - og skræmmende mange har ingen anelse om, hvor deres teknologier er på vej hen.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester