Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Веб-программирование > PHP
Перезагрузить страницу str_replace - помогите разобраться
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Fl@sh Fl@sh вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.06.2004
По умолчанию str_replace - помогите разобраться - 08.11.2004, 01:40

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

Код:
<?php

    // максимальная длина мессаги
    $num_allowed=100;

    // коннектимся к базе единственный раз
    mysql_connect("localhost", "phpbook_flash", "flash") or die ("Not connected");
    mysql_select_db("phpbook_maks");

function page_header()
{
echo"
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>GB</title>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
<script language="javascript">
 function put_smile(what_smile)
 {
    edt.value += ' ' + what_smile + ' ';
    edt.focus();
 }
</script>
</head>

<body>
";
}

function page_footer()
{
echo "
</body>
</html>
";
}

function validate_message(&$msg)
{
    global $num_allowed;

    // минимальная длина
    if (!$msg) return false;

    // максимальная длина
    $length = strlen($msg);
    if ($length > $num_allowed)
    {
  echo "Text is too large";
  return false;
    }

    // обрезка тегов
    $msg=strip_tags($msg);

    // переносы строк
    $msg=str_replace("n", "
", $msg);

    // замена смайлов
    $_POST['msg'] = str_replace(":sm2:", "[img]/smiles/2.gif[/img]", $_POST['msg']);
    $msg=str_replace(":sm2:", "[img]/smiles/2.gif[/img]", $msg);
    $msg=str_replace(":sm3:", "[img]/smiles/3.gif[/img]", $msg);
    $msg=str_replace(":sm4:", "[img]/smiles/4.gif[/img]", $msg);
    $msg=str_replace(":sm5:", "[img]/smiles/5.gif[/img]", $msg);
    $msg=str_replace(":sm6:", "[img]/smiles/6.gif[/img]", $msg);
    $msg=str_replace(":sm7:", "[img]/smiles/7.gif[/img]", $msg);
    $msg=str_replace(":sm8:", "[img]/smiles/8.gif[/img]", $msg);
    $msg=str_replace(":sm9:", "[img]/smiles/9.gif[/img]", $msg);
    $msg=str_replace(":sm10:", "[img]/smiles/10.gif[/img]", $msg);
    $msg=str_replace(":sm11:", "[img]/smiles/11.gif[/img]", $msg);
    $msg=str_replace(":sm12:", "[img]/smiles/12.gif[/img]", $msg);
    $msg=str_replace(":sm13:", "[img]/smiles/13.gif[/img]", $msg);

    return true;
}

if ($_POST['submit'] && validate_message($_POST['msg']))
{
    $result = ("INSERT INTO maks(id, nm, msg, date) values ('', '$nm', '$msg',  NOW())");
    mysql_query($result);

    // редиректимся сами на себя
    header('Location: '.$_SERVER['PHP_SELF']);
}
else
{
    page_header();
    $r = mysql_query("SELECT * FROM maks ORDER BY id DESC");
    for ($i = 0; $i < mysql_num_rows($r); $i++)
    {
  $f=mysql_fetch_assoc($r);
      echo "".$f['nm']."";
      echo "
";
      echo "".$f['msg']."";
      echo "
";
      echo "".$f['date']."";
      echo "
";
      echo "______________________________________________";
      echo "
";
    }

    // печатаем форму
    echo "
    <form action="".$_SERVER['PHP_SELF']."" method="post" name="post">
  Name: <input type="text" name="nm" size="30" maxlenght="30">

  Message:

  <textarea name="msg" cols="60" rows="3"></textarea>

  [img]/smiles/1.gif[/img]
  [img]/smiles/2.gif[/img]
  [img]/smiles/3.gif[/img]
  [img]/smiles/4.gif[/img]
  [img]/smiles/5.gif[/img]
  [img]/smiles/6.gif[/img]
  [img]/smiles/7.gif[/img]
  [img]/smiles/8.gif[/img]
  [img]/smiles/9.gif[/img]
  [img]/smiles/10.gif[/img]
  [img]/smiles/11.gif[/img]
  [img]/smiles/12.gif[/img]
  [img]/smiles/13.gif[/img]


  <input type="submit" name="submit" value="Insert" />
    </form>


    <script language="javascript">
  var edt = document.forms['post'].elements['msg'];
    </script>
    ";
    page_footer();
}
?>
Ответить с цитированием
  (#2 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 08.11.2004, 02:01

PHP FAQ: Ничего не работает! Что делать???
Совет на будущее - не стоит приводить столь безобразно оформленный код, да ещё и такого объёма. Если у тебя проблема с заменой - то база данных тут совершенно не при чём, так же, как и куча приведённого HTML и использование JavaScript'а. Локализовав проблему можно получить код в 3-10 строк, этим ты поможешь не только себе, но и тому, кто решится тебе помочь.
Ответить с цитированием
  (#3 (permalink)) Старый
Fl@sh Fl@sh вне форума
Новичок
 
Сообщений: 11
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 08.06.2004
По умолчанию 08.11.2004, 02:12

очень хотелось бы не тревожить Вас по пустякам, но к сожалению, увы отладка ничего не показывает. @ также отсутсвует перед фукциями. Просто я не знаю что делать.
Ответить с цитированием
  (#4 (permalink)) Старый
SiMM SiMM вне форума
Member
 
Сообщений: 1,961
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 02.08.2003
По умолчанию 08.11.2004, 10:32

Цитата:
Originally posted by Fl@sh
[b]отладка ничего не показывает
А вот это уже ложь - ошибки бывают не только синтаксическими, но и логическими. И о том, как их отлаживать, в FAQ так же написано. В вашем случае достаточно вывести содержимое $_POST['msg'] после валидации и содержимое INSERT-запроса к MySQL (это и есть отладка, установка переменных error_reporting и display_errors - это лишь один из этапов, позволяющий найти синтаксическо-логические ошибки). После этого стоит тщательно подумать, почему так происходит. Вообще к коду имеется очень много претензий, но о них я могу рассказать позже, после того, как вы научитесь отлаживать код.
Ответить с цитированием
  (#5 (permalink)) Старый
buzi buzi вне форума
Member
 
Сообщений: 367
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 03.07.2004
По умолчанию 08.11.2004, 12:41

код ужасный.. хрен разберешься..
пиши php-код отдельно.. отдельно.. отдельно.. отдельно.. отдельно от html.. а не через echo..

и максимально насколько это возможно пиши javascript в одном месте.. а не так что функция в одном месте... а переменные объявляются чёрти где..
Ответить с цитированием
Ads.
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите разобраться! daschyl4ik Любые вопросы от новичков 7 03.05.2012 09:37
Помогите разобраться Александр 26 Корпуса 4 18.04.2012 20:53
Помогите разобраться! Александр4010 Любые вопросы от новичков 3 05.02.2012 16:00
Помогите разобраться Старший техник Любые вопросы от новичков 3 18.12.2011 00:28
помогите разобраться sbo898 Любые вопросы от новичков 6 30.11.2011 11:58
помогите разобраться gena111 Любые вопросы от новичков 9 18.08.2011 16:26
помогите разобраться виктор67 Любые вопросы от новичков 1 15.07.2011 00:31
помогите разобраться!!! rafikusss Любые вопросы от новичков 16 19.12.2010 02:07
Помогите разобраться с DVI?????? OleDjuice Видеокарты 3 27.11.2009 01:32
Помогите разобраться! OSOBOOPASEN Память 7 25.03.2009 19:42
Помогите разобраться! imported_Moloko Pascal 3 29.10.2008 19:45
Помогите разобраться! Irk-Max3 Техническая поддержка 2 22.08.2007 16:12



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов