[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Преобразовывания символа смайлика в картинку
xJlaIIax
Здравствуйте, помогите пожалуйста подобрать оптимальный вариант для вывода смайликов в комментариях.
Я придумал только один вариант.

Код вывода комментариев:
$result2 = mysql_query ("SELECT * FROM `comments` WHERE `post`='". $id ."' ORDER BY `id`", $db);

if (mysql_num_rows ($result2) == '0')
{
echo '<p class="post2">Ваш комментарий будет первым!</p>';
}

if (mysql_num_rows ($result2) > 0)
{
echo '<p class="post">Комментарии:</p>';

while ($myrow2 = mysql_fetch_assoc($result2))
{
include './blocks/smilesbb.php';
echo
('<div class="post_div"><p class="post_add"><strong>Комментарий добавил(а):</strong>
'
. htmlspecialchars($myrow2["author"]) .'<br><strong>E-mail:</strong> '. htmlspecialchars($myrow2["email"]) .'<br><strong>Дата:</strong> '. htmlspecialchars($myrow2["date"]) .'</p>
<p class="post_text">'
. $posttext .'</p></div>');
}

}


Файл smilesbb.php который преобразует символ смайлика в картинку:
$posttext = htmlspecialchars($myrow2["text"]);

$posttext = strtr($posttext, array(
':)'=>'<img src="../images/smiles/smile.gif">',
':D'=>'<img src="../images/smiles/biggrin.gif">',
';)'=>'<img src="../images/smiles/wink.gif">',
/*и т.д.*/
));

$posttext = nl2br($posttext);


Хотел у Вас спросить на сколько этот вариант оптимален в плане ресурсоёмкости?



Спустя 9 минут, 54 секунды (18.12.2011 - 19:12) Winston написал(а):
Вот так перепиши и будет нормально.
Свернутый текст
$result2 = mysql_query ("SELECT * FROM `comments` WHERE `post`='". (int)$id ."' ORDER BY `id`");

if (mysql_num_rows ($result2) == 0)
{
echo '<p class="post2">Ваш комментарий будет первым!</p>';
return;
}
else
{
include './blocks/smilesbb.php';
echo '<p class="post">Комментарии:</p>';
while($myrow2 = mysql_fetch_assoc($result2))
{
echo '<div class="post_div"><p class="post_add"><strong>Комментарий добавил(а):</strong>'
. htmlspecialchars($myrow2["author"]) . '<br><strong>E-mail:</strong> '
. htmlspecialchars($myrow2["email"]) . '<br><strong>Дата:</strong> '
. htmlspecialchars($myrow2["date"]) . '</p>'
. '<p class="post_text">' . toImg($posttext) . '</p></div>';
}
}



///////////
// smilesbb.php
///////////

function toImg($text)
{
$posttext = htmlspecialchars($text);

$posttext = strtr($posttext, array(
':)'=>'<img src="../images/smiles/smile.gif">',
':D'=>'<img src="../images/smiles/biggrin.gif">',
';)'=>'<img src="../images/smiles/wink.gif">',
/*и т.д.*/
));

return nl2br($posttext);
}

Спустя 6 часов, 4 минуты, 48 секунд (19.12.2011 - 01:17) xJlaIIax написал(а):
Winston, сделал всё как ты писал, но там где должен выводиться текст сообщения выводится
Notice: Undefined variable: posttext in C:\WebServers\www\films_full.php on line 189

На 189 линии находится код:
      . '<p class="post_text">' . toImg($posttext)  . '</p></div>';


Хотел спросить что за переменна $text в файле smilesbb.php:
function toImg($text)
{
$posttext = htmlspecialchars($text);

Спустя 27 минут, 28 секунд (19.12.2011 - 01:45) Игорь_Vasinsky написал(а):
это символическая переменная, при вызове функции вместо неё можешь ставить свою

Спустя 21 час, 46 минут, 17 секунд (19.12.2011 - 23:31) xJlaIIax написал(а):
Нашёл где собака зарыта:
$result2 = mysql_query ("SELECT * FROM `comments` WHERE `post`='". (int)$id ."' ORDER BY `id`");

if (mysql_num_rows ($result2) == 0)
{
echo '<p class="post2">Ваш комментарий будет первым!</p>';
return;
}
else
{
include './blocks/smilesbb.php';
echo '<p class="post">Комментарии:</p>';
while($myrow2 = mysql_fetch_assoc($result2))
{
echo '<div class="post_div"><p class="post_add"><strong>Комментарий добавил(а):</strong>'
. htmlspecialchars($myrow2["author"]) . '<br><strong>E-mail:</strong> '
. htmlspecialchars($myrow2["email"]) . '<br><strong>Дата:</strong> '
. htmlspecialchars($myrow2["date"]) . '</p>
<p class="post_text">'
. $myrow2["text"] = toImg($myrow2["text"]) . '</p></div>';
}
}


///////////
// smilesbb.php
///////////

function toImg($text)
{
$text = htmlspecialchars($text);

$text = strtr($text, array(
':)'=>'<img src="../images/smiles/smile.gif">',
':D'=>'<img src="../images/smiles/biggrin.gif">',
';)'=>'<img src="../images/smiles/wink.gif">',
/*и т.д.*/
));

return nl2br($text);
}


Заменил toImg($posttext) на $myrow2["text"] = toImg($myrow2["text"]) и заменил $posttext на $text(не увидел смысл в разных переменных.)

Winston, спасибо что направил в нужное русло.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.