Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> unterminated string literal 
V
    Опции темы
Orient
Дата 18.1.2007, 17:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Здравствуйте

Задача у меня такая. по нажатию на кнопку сделать запрос к БД и вывести на страницу.
Страницу всю не перегружаю, с помощью JavaScript в ставляю в innerHTML нужного элемента результат запроса.
Так вот, все хорошо работало, до того момента как я не вставитл в текст данных в таблице символы <,>,".

При записи в БД я вопсользовался функцией mysql_real_escape_string
При выводе stripslashes и htmlspecialchars.
Так вот, в результате всего этого возникает ошибка в браузере в JavaScript. Пишется unterminated string literal.


Что я делаю не так? Помогите, а то уже туплю который день не могу понять что делать.

Спасибо
PM MAIL   Вверх
szz
Дата 18.1.2007, 17:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Это значит что у тебя где-то получается какой-то кусок, где нет второй пары кавычек, например что-то такое:
Код

var str="нет закрывающей кавычки;
var another="вот и глючит";

Покажи пажалста код (или хотя бы критические на твой взгляд фрагменты), а то так непонятно что как.

Добавлено @ 17:55 
Мне кажется что stripslashes рубит заэскейпенные кавычки.
Т.е. например
Код

var str = "some \"value\" here";

превращает в
Код

var str = "some "value" here";




--------------------
PM   Вверх
Orient
Дата 18.1.2007, 18:00 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



по нажатию на копку работает вот этот Javascript
Код

    function RefreshPhoneList( sender ) {
        var PhoneManufacturerList = document.getElementById( "PhoneManufacturerList" );
        var PhoneModelList = document.getElementById( "PhoneModelList" );    
    
        var link = "getdisklist.php?&manufacturer=" + PhoneManufacturerList.value + "&model=" + PhoneModelList.value;
        
        
        link = link + "&admin=" + sender.Admin;
        
        
        var old_s = document.getElementById("dataloader");
        if (old_s) {   
            old_s.parentNode.removeChild(old_s);            
        }
        
        var s = document.createElement("script");
        s.setAttribute("type", "text/javascript");
        s.src = link;
        s.id = "dataloader";
        document.getElementsByTagName("head")[0].appendChild(s);        
    }



getdisklist.php содержит вот что:
Код

        $sss = "";        
        
            
        if ( $ServerConnection = ServerConnect() ) {
            
                $PhoneType = ' ';
        
                $query = 'SELECT * FROM .......' )';
        
            //echo $query;
            if ( $res = mysql_query( $query ) ) {
                /*$sss .=
                    '<table width="100%" border="0" ><tr><td>';
                   */ 
                
                if ( mysql_num_rows( $res ) == 0 ) {
                    $sss .= '<br><br><center>Èçâèíèòå, íè÷åãî íå íàéäåíî</center>';
                } else                
                while( $line = mysql_fetch_array( $res )  ) {
                    $ss = stripslashes( $line[ 'About' ] );  
                    $sss .= $ss;
                }

            } else {
                
            }
        } else {
            
            
        }    
         
    
    $flag = true;
    if ( isset( $PData ) )    
        if ( count( $PData ) <> 0 )
            $flag = false;
        
    if ( $flag )
        echo 'document.getElementById(  "DiskListTable" ).innerHTML ="'. $sss .'";'; 




PM MAIL   Вверх
szz
Дата 18.1.2007, 18:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Попробуй в 20-й строке ( попробуй сначала первый вариант - не сработает - второй и т.д.
Код

 20:                  $ss = addslashes( $line[ 'About' ]) ; 
Код


 20:                  $ss = stripslashes( htmlspecialchars($line[ 'About' ]) ); 
Код


 20:                  $ss = htmlspecialchars($line[ 'About' ]) ; 


 В записи "About" есть кавычки?

Добавлено @ 18:09 
Цитата

if ( count( $PData ) <> 0 )

  Впервые вижу чтоб кто-то <> использовал smile


--------------------
PM   Вверх
mr.Anderson
Дата 18.1.2007, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


iOS Lead Developer
****


Профиль
Группа: Участник Клуба
Сообщений: 3374
Регистрация: 20.12.2004
Где: далеко

Репутация: нет
Всего: 128



szz, это, наверно, привычка из Basic или Pascal. smile


--------------------
user posted image

user posted image
PM MAIL ICQ Skype   Вверх
Antarn
Дата 18.1.2007, 18:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.8.2006

Репутация: нет
Всего: нет



Код

8:                $query = 'SELECT * FROM .......' )';

используй разные кавычки, например:
Код

$query = "SELECT * FROM table WHERE pole='test' ";

PM MAIL   Вверх
szz
Дата 18.1.2007, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



Это он стирал запрос и забыл стереть эту маленькую кавычку...


--------------------
PM   Вверх
Antarn
Дата 18.1.2007, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 11.8.2006

Репутация: нет
Всего: нет



а разве такой запрос пройдет ?
Код

$query = 'SELECT * FROM table WHERE pole='test' ';

PM MAIL   Вверх
Orient
Дата 18.1.2007, 18:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



szz, делфист я, по профессии, так что действительно это привычка. порой как в паскале пишу, порой как в пхп

Добавлено @ 19:04 
szz, 

все три примера не подошли.

вот текст из About на котором все падает:

    sdfsdfsdfs

\&quot;adfasd\&quot;
PM MAIL   Вверх
Mal Hack
Дата 18.1.2007, 20:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Делается так.
Отключаются magic_quotes - все.
При вставке в Базу делается htmlspecialchars, далее при выводе все будет нормально.
PM ICQ   Вверх
Orient
Дата 19.1.2007, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Ох...  проблема таки разрешилась.  Два дня тупления окончились.
Вобчем дело в том, что в About хранится много строчный текст, который котом с Javascript вставляется, вот переход на новую строку и вызвал данную ошибку.  Транслятор решил что это незаконченная строка.

С помощью вот такого кода: 
Код
$text=ereg_replace("(\r\n|\n|\r)", "<BR/>", $text);
  все излечилось.


Большое всем спасибо за помощь и участие.
PM MAIL   Вверх
Mal Hack
Дата 19.1.2007, 15:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 16
Всего: 261



Боже, зачем так сложно?
str_replace убивает сначала все \r, потом еще раз все \n заменяем на <br/> и не мучаемся с POSIX
PM ICQ   Вверх
Orient
Дата 22.1.2007, 09:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



Какой первый рабочий пример нашел, такой и применил. 
В принципе можно и str_replace использовать, правда переделывать не охота  :-)
Спасибо на совет
PM MAIL   Вверх
szz
Дата 22.1.2007, 09:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 31.5.2005
Где: Moscow, Jerusalem

Репутация: 1
Всего: 33



И где же ты такой пример нашел? Дай-ка ссылку, интересно работы этого автора посмотреть smile


--------------------
PM   Вверх
Orient
Дата 23.1.2007, 17:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 144
Регистрация: 17.7.2004

Репутация: нет
Всего: нет



PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Тексты | Следующая тема »


 




[ Время генерации скрипта: 0.0567 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.