Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Не отображается символ "+"
 
 автор: MRE   (29.06.2007 в 11:22)   письмо автору
 
 

Посылаю запрос аяксом:


request.open(meth,targ,true);
request.onreadystatechange = fun;
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
request.send(param);


Скрипт обрабатывает:


    header('Content-Type: text/xml; charset=utf-8');
    session_start(); 
    include("../inc/module/init.php");
    include("../inc/module/db_class.php");
    $db1 = new db();
    if ($_POST['mes'])
    {
        $db1->query("SELECT * FROM users WHERE id='{$_SESSION['id']}'");
        $row = $db1->fetch();
        $d = date("Y-m-d H:i:s");
        $mes = htmlspecialchars($_POST['mes']);
        $db1->query("insert into chat values ('{$row['login']}','$mes','$d','0')");
    }


В БД не записываются символы "+".
В чем дело?

   
 
 автор: bronenos   (29.06.2007 в 11:47)   письмо автору
 
   для: MRE   (29.06.2007 в 11:22)
 

как обрабатываем данные перед отправкой

   
 
 автор: MRE   (29.06.2007 в 12:23)   письмо автору
 
   для: bronenos   (29.06.2007 в 11:47)
 


request.open(meth,targ,true);
request.onreadystatechange = fun;
request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=utf-8');
request.send(param);
alert(param);


alert выдает все ок с плюсами

   
 
 автор: Unkind   (29.06.2007 в 12:48)   письмо автору
 
   для: MRE   (29.06.2007 в 12:23)
 

Вместо "+" пишите "%2B".

   
 
 автор: MRE   (29.06.2007 в 15:49)   письмо автору
 
   для: Unkind   (29.06.2007 в 12:48)
 

Не помогло.

        $mes = htmlspecialchars($_POST['mes']);
        $mes = ereg_replace("+","%2B",$mes);
        $db1->query("insert into chat values ('{$row['login']}','$mes','$d','0')");

   
 
 автор: kasmanaft   (29.06.2007 в 16:09)   письмо автору
 
   для: MRE   (29.06.2007 в 15:49)
 

Используйте не ereg_replace, a str_replace...
(или экранируйте "\+")

   
 
 автор: MRE   (30.06.2007 в 15:09)   письмо автору
 
   для: kasmanaft   (29.06.2007 в 16:09)
 

Все равно не получилось.

   
 
 автор: Unkind   (29.06.2007 в 16:14)   письмо автору
 
   для: MRE   (29.06.2007 в 15:49)
 

MRE, я имею ввиду не в обработчике, а при посылке данных (request.send(param);)

   
 
 автор: MRE   (30.06.2007 в 15:04)   письмо автору
 
   для: Unkind   (29.06.2007 в 16:14)
 

Че то все равно не выходит, может регулярку не правильно написал, уже разные перепробовал:


    var pattern = /[+]?/g                
    if (temp.search(pattern))
        temp = temp.replace(pattern,'%2B');
    send_request("POST","php_/add_mes.php",chat,"mes="+temp);

   
 
 автор: bronenos   (30.06.2007 в 15:57)   письмо автору
 
   для: MRE   (30.06.2007 в 15:04)
 

temp = temp.replace (/\+/g, '%2B');

   
 
 автор: MRE   (30.06.2007 в 16:48)   письмо автору
 
   для: bronenos   (30.06.2007 в 15:57)
 


    var pattern = /\+/g                
    if (temp.search(pattern))
        temp = temp.replace(pattern,'%2B');
    send_request("POST","php_/add_mes.php",chat,"mes="+temp);


Все равно не записываются в БД, уже не знаю что делать.

   
 
 автор: MRE   (30.06.2007 в 16:50)   письмо автору
 
   для: MRE   (30.06.2007 в 16:48)
 

убрал if (temp.search(pattern))
и заработало!!!

Спасибо всем!

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования