не происходит замена текстовых смайлов на графические

phatol

Новичок
На моей страничке не работает замена текстового вида смайлов на графические. Вопрос в чем проблема. подскажите пожалуйста. вот код
PHP:
   $sml="";
    if ($smile=="1") { // заменяем текстовые смайлики на графические если разрешено
   $sml=str_replace(":-)",$s1,$sml);
   $sml=str_replace(":-D",$s2,$sml);
   $sml=str_replace(":-P",$s3,$sml);
   $sml=str_replace("8-)",$s4,$sml);
   $sml=str_replace(":-(",$s5,$sml);
   $sml=str_replace(":-O",$s6,$sml);
   $sml=str_replace(";-)",$s7,$sml);
   $sml=str_replace("8-P",$s8,$sml);
   $sml=str_replace("8-/",$s9,$sml);
   $sml=str_replace("8-(",$s10,$sml);
   $sml=str_replace(":`-(",$s11,$sml);
   }
   $sml=str_replace("[RB]","<B><font color=red>", $sml);
   $sml=str_replace("[/RB]","</font></B>", $sml);
   $sml=str_replace("[CITE]","<CITE>", $sml);
   $sml=str_replace("[/CITE]","</CITE>", $sml);
   $sml=str_replace("&amp;#124;","|", $sml);
   $sml=str_replace("&lt;br&gt;","<br>", $sml);

В настройках стоит
PHP:
   $smile="1";
Ну и так же для каждого смайла стоит стоит переменная,указывающая путь:
PHP:
    $s1="<img src='smile/smile.gif' border=0>";

Ах да, если убрать
PHP:
    $sml="";

страница выдает ошибку : Notice: Undefined variable: sml in ...\www\index.php on line 14 и все равно ничего не работает. Что я упустил? спасибо за внимание.
Если ставить
PHP:
    $sml="1";
так же ничего не рпоисходит. помогите разобраться.
 

Shumomer

Новичок
В переменной $sml (судя по коду) должен быть текст сообщения. У вас его в этой переменной нет.
 

phatol

Новичок
Хм. действительно. спасибо сразу не разобрался(. А вопрос для того чтобы на страницах заменялись смайлы необходимо дял каждой страницы свою переменную? Текст везде разный. Я правильно понял?
 

phatol

Новичок
Ну вот у меня много страниц. одна index.php а другая news.php. есть файл content.php и в нем хранятся контенты с разных страниц. то бишь я захожу в админ панель и ввожу текст контента для допустим главной страницы. Пока что у меня она одна. но если мне надо забить контент для новостей мне лучше задать новую переменную? или же лучше создать другой файл для содержимого страницы новостей и в ней контент новостей хранить в $sml? и потом на странице указать просто include "content/news.php"; ? Поняли что я имею ввиду? и после нажатия в админке сохранить изменения оно обновляет запись содержимого в переменной $sml в файле news.php ? тогда в каждой страничке придется использовать разные инклуды. Так?
 

phatol

Новичок
А и еще вопрос. Как мне сделать чтобы смайлы заменялись в добавленном сообщении на стене?
Пусть я допустим определился, хоть и не до конца как лучше, но как мне заменять смайлы в сообщениях?
Ведь сообщения добавляются в бд. а потом при помощи условия while выводится на стене? как мне поместить сообщения из бд в эту переменную? чтобы смайлы менялись. Спасибо. Надеюсь поняли меня.
 

KorP

Новичок
есть файл content.php и в нем хранятся контенты с разных страниц
0_о зачем? зачем контект хранить во-первых в php, а во вторых - зачем в файлах, если у тебя БД есть?

ну или какие-нить такие грабли content.php:
PHP:
if($_SERVER["REQUEST_URI"] == "index.php") {
echo "index content";
}
....
как мне поместить сообщения из бд в эту переменную?
http://phpclub.ru/detail/article/phpintro
перепиши заменялку свою в функцию и вызывай когда надо
 

phatol

Новичок
Ну опять же я не осилю написание такой функции, так как плохо очень представляю как происходит это все. с файлами разобрался.вроде просто. В админке ввожу контент. тот в файле помещает ее в переменную. а на странице просто ставлю имя той переменной, соответсвующей странице. а вот работа с бд пока не оч селен. Если бы подкрепить конкретным примером .
 

KorP

Новичок
Ну опять же я не осилю написание такой функции
как то так
PHP:
function replacement ($smile, $sml) {
   if ($smile=="1") { // заменяем текстовые смайлики на графические если разрешено
      $sml=str_replace(":-)",$s1,$sml);
      ...
   }
$sml=str_replace("[RB]","<B><font color=red>", $sml);
...
return $sml;
}
В админке ввожу контент. тот в файле помещает ее в переменную. а на странице просто ставлю имя той переменной, соответсвующей странице.
omyfuckinggod 0_o

а вот работа с бд пока не оч селен. Если бы подкрепить конкретным примером .
для твоих задач - элементарные вещи, ссылку выше я не просто так дал, как записывать/читать данные из базы там отлично объясняется. прочитать, 5 минут подумать и сделать то что тебе нужно
 

phatol

Новичок
Как считать данные из БД и записывать и изменять в ней я знаю. Мне непонятно как в выведенных сообщениях провести замену смайлов. Или как применить эту функцию к выводимым сообщениям, или как поместить их в переменную. чтобы смайлы заменялись. вот.
И как мне правильно вызвать функцию такую для замена смайлов в контенте. (если тогда у меня все хранилось в переменной)
 

KorP

Новичок
как поместить их в переменную.
там всё написано!
И как мне правильно вызвать функцию такую для замена смайлов в контенте. (если тогда у меня все хранилось в переменной)
PHP:
while ($row=mysql_fetch_array($res)) {
   $sml = replacement("1", $row['sml']);
}
ну а запрос сам пиши, раз знаешь
 

phatol

Новичок
PHP:
$query="SELECT * FROM messages;";
if($res=@mysql_query($query))
{
    	if(mysql_num_rows($res))
    		{
            echo '<table>
                <tr>
                      <td>Пользователь</td>
                      <td>e-mail</td>
                      <td>Сообщение</td></tr>';
	    	while($row=mysql_fetch_array($msg_res))
	    		{
				echo '<tr>
                <td>'.$row['user'].'</td>
                <td>'.$row['email'].'</td>
                <td>'.$row['msg'].'</td>
				</tr>';
					                
	    		}
	   		echo '</table>';
	    	}
			else
			{ 
			echo 'Сообщений нет!'; 
			}
}
else
{ 
die('<br /><b>MySql Error</b> - '.mysql_error()); 
}
Ну допустим так будет выглядеть примерно запрос вывода из БД сообщений. Куда мне примкнуть функцию, чтобы в поле msg (в теле сообщения сообщения) произошла замена смайлов. Спасибо
 

KorP

Новичок
где у тебя переменная с сообщением? там и вызывай функцию, пример выше я тебе написал вполне исчерпывающий
 

phatol

Новичок
PHP:
while($row=mysql_fetch_array($msg_res))
                {
                echo '<tr>
                <td>'.$row['user'].'</td>
                <td>'.$row['email'].'</td>
                <td>'
                  while ($row=mysql_fetch_array($res_msg)) {
                  $sml = replacement("1", $row['msg']);
                 .$row['msg'].'</td>
                </tr>';
                   }                 
                }
Выходит что то вроде этого?
 

KorP

Новичок
ты вообще прежде чем этот тут написать попробовал это запустить? что у тебя получилось? я так думаю что полная херня и ошибки. зачем тебе там второй цикл? полная ерунда как по мне, в предыдущей коде надо было просто вызвать функцию и всё бы работало как надо
 

Shumomer

Новичок
PHP:
function frm($sml){
 if ($smile=="1") { // заменяем текстовые смайлики на графические если разрешено
   $sml=str_replace(":-)",$s1,$sml);
   $sml=str_replace(":-D",$s2,$sml);
   $sml=str_replace(":-P",$s3,$sml);
   $sml=str_replace("8-)",$s4,$sml);
   $sml=str_replace(":-(",$s5,$sml);
   $sml=str_replace(":-O",$s6,$sml);
   $sml=str_replace(";-)",$s7,$sml);
   $sml=str_replace("8-P",$s8,$sml);
   $sml=str_replace("8-/",$s9,$sml);
   $sml=str_replace("8-(",$s10,$sml);
   $sml=str_replace(":`-(",$s11,$sml);
 }
   $sml=str_replace("[RB]","<B><font color=red>", $sml);
   $sml=str_replace("[/RB]","</font></B>", $sml);
   $sml=str_replace("[CITE]","<CITE>", $sml);
   $sml=str_replace("[/CITE]","</CITE>", $sml);
   $sml=str_replace("&amp;#124;","|", $sml);
   $sml=str_replace("&lt;br&gt;","<br>", $sml);
}

$query="SELECT * FROM messages;";
if($res=@mysql_query($query)){
  if(mysql_num_rows($res)){
  echo '<table>
  <tr>
  <td>Пользователь</td>
  <td>e-mail</td>
  <td>Сообщение</td></tr>';
  while($row=mysql_fetch_array($msg_res)) {
    echo '<tr>
    <td>'.$row['user'].'</td>
    <td>'.$row['email'].'</td>
    <td>'.frm($row['msg']).'</td>
    </tr>';
  }
  echo '</table>';
  }else echo 'Сообщений нет!'; 
}else die('<br /><b>MySql Error</b> - '.mysql_error());
не забудь в функцию добавить определение $smile и $s1..$s11
 

c0dex

web.dev 2002-...
Команда форума
Партнер клуба
а ведь str_replace отлично понимает массивы... Эх =(
 

Shumomer

Новичок
Понимает, но ТС сказал что смайлы у него уже в переменных $s1..$s11, т.ч. приходится так.
 

no_santa

Снегур
Ой, тут можно очень долго провозиться... Используйте готовый класс из какого-нибудь фреймворка - много их, и над ними уже достаточно провозились.
 
Сверху