Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Вебмастеру (http://forum.oszone.net/forumdisplay.php?f=22)
-   -   смайлы в гостевухе (http://forum.oszone.net/showthread.php?t=64645)

Mavlyudov 20-04-2006 00:08 429791

смайлы в гостевухе
 
приветствую всех.
Нужно сделать смйлы для гостеквухи.
вот функция для вставки смайлов в текстареа:
PHP код:

<SCRIPT LANGUAGE="JavaScript">
           function 
InsertSmile(smile){
                      var 
txt document.getElementById('txt_message');
                      
txt.value+=':'+smile+':';
            }
</script> 

вот код скрипта который берет из папки smiles имена файлов и прописывает
их в базе для дальнейшего использования.. а затем выводить сами смайлы..этот
код у меня стоит в <div>
PHP код:

$dir=opendir("smiles");
$file=readdir($dir);
$file=readdir($dir);
$i=0;
include(
"database.php");
while((
$file=readdir($dir))!==false)
{
 
$i++;
 
$st=explode(".",$file);
 
$sql=("INSERT INTO smiles ( 'id' , 'code' , 'source' , 'theme' ) VALUES ('', ':".$st[0].":', 'smiles/".$file."', '');");
 
mysql_query($sql);
 echo(
" <img src='smiles/".$file."' onclick='InsertSmile(\"".$st[0]."\")'</img>");
 if(
$i==6){echo("<br>");$i=0;}


code - поле вида :smile_name:
source - то на что мы заменяем code
ну и собственно кусок кода который обрабатывает все сообщение
PHP код:

$sql2="SELECT * FROM smiles";
        
$smile_query=mysql_query($sql2);
        
$msg=0;
        while(
$smile_array=mysql_fetch_array($smile_query)){
            
$msg=str_replace($smile_array['code'],"<img src='".$smile_array['source']."'>",$msg);
        } 

Сама таблица smiles имеет такой вид:
id code source theme
1 :sm0: sm0.gif
2 :sm1: sm1.gif
Вобщем проблема такая:
по нажатию на каждый смайл, в текстарею вставляется что-то типа :sm1: а потом, когда сообщение уже создано, :sm1: не заменяется на картинку sm1.gif
Подскажите, что делать?

Prisoner 20-04-2006 01:39 429812

Забавненько... $msg=0. В ноле маловероятно, что найдется даже двоеточие. Я так полагаю это очепятка при вставке кода в топик? Попробуйте непосредственно, для теста, вывести после цикла содержимое $msg, а в самом цикле повыводите значения массива $smile_array по ключам code и source. Т.е. так:
PHP код:

$sql2="SELECT * FROM smiles"
        
$smile_query=mysql_query($sql2); 
        
$msg=$_POST['msg'];  //если поле формы по отправке сообщения имеет именно такое name
        
while($smile_array=mysql_fetch_array($smile_query))
           { 
            
$msg=str_replace($smile_array['code'],"<img src='".$smile_array['source']."'>",$msg); 
            echo 
$smile_array['code'].'->'.$smile_array['source'].'<br>';
           }
        echo 
$msg

Что получается в исходном коде странички? Может какие-то несоотвествия между предполагаемыми значениями того ЧТО меняем и теми, что лежат в БД?


Время: 16:38.

Время: 16:38.
© OSzone.net 2001-