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

Форум PHP

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

 

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

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

тема: php, JavaScript и траблы=)
 
 автор: b00m   (11.02.2007 в 23:48)   письмо автору
 
 

Не называйте извращенцем, просто помогите=)
Вопрос такой... Нужно с помощью javascript вывести стоку, хранящуюся в БД MySQL на серваке.
код примерно такой

<?
....
запрос к БД и получение массива $mas=mysql_fetch_array($res);
echo
"document.write('$mas[str]');
?>

Проблема в следующем. Если длина строки небольшая, что-то около 10 символов и эти символы буквы (кириллица и английские) то все выводится просто замечательно. А вот когда строка, т.е. $mas['str'] имеет примерно такой вид

Строка русских букв &#8221;просто слово&#8221; много слов &#8221;еще два слова&#8221;


то она почему-то не выводится.=(


Подскажте в чем трабла.

   
 
 автор: Trianon   (12.02.2007 в 00:37)   письмо автору
 
   для: b00m   (11.02.2007 в 23:48)
 

и среди этих слов нет ни апострофов, ни переводов строки?

   
 
 автор: elenaki   (12.02.2007 в 10:12)   письмо автору
 
   для: Trianon   (12.02.2007 в 00:37)
 


<? 
.... 
запрос к БД и получение массива $mas=mysql_fetch_array($res); 
echo 
"<SCRIPT LANGUAGE=\"JavaScript\" TYPE=\"text/javascript\">
document.write('
$mas[str]');
</SCRIPT>"
;
?> 
или

<? 
.... 
запрос к БД и получение массива $mas=mysql_fetch_array($res); 
?>
<SCRIPT LANGUAGE="JavaScript" TYPE="text/javascript">
document.write("<?=$mas[str]?>");
</SCRIPT>

   
 
 автор: Trianon   (12.02.2007 в 10:25)   письмо автору
 
   для: elenaki   (12.02.2007 в 10:12)
 

По утверждению автора на коортких строках у него все работает.
Врядли такое происходило бы, забудь он тег объявления скрипта.

   
 
 автор: bronenos   (12.02.2007 в 10:35)   письмо автору
 
   для: Trianon   (12.02.2007 в 10:25)
 

Я понимаю, document.all.place.innerHTML или alert()...
Но чем document.write() отличается от print / echo ?

   
 
 автор: elenaki   (12.02.2007 в 10:42)   письмо автору
 
   для: bronenos   (12.02.2007 в 10:35)
 

тем, что document.write() - команда Java-script, а print/echo - команда PHP. а Java-script очень чувстсвителен к синтаксису. и если где-то в строке встретился знак перевода строки - это ошибка. все знаки переода строк (\r\n) надо заменить на <br>, если хотите сохранить структуру строки. или удалить вообще. лучше сделать это еще в РНР сразу после получения элементая массива. замечу, что функция nl2br() тут вам не поможет, она не заменяет переводы строк брейками, а вставляет перед каждым переводом строки <br> (сам знак перевода строки при этом остается и вызывает ошибку JS).

   
 
 автор: Trianon   (12.02.2007 в 11:02)   письмо автору
 
   для: elenaki   (12.02.2007 в 10:42)
 

>все знаки переода строк (\r\n) надо заменить на <br>, если хотите сохранить структуру строки.
Если Вы и вправду хотите сохранить структуру строки, то все знаки перевода строки (CR и LF) нужно заменить на последовательности \r и \n соответственно.

   
 
 автор: b00m   (12.02.2007 в 10:43)   письмо автору
 
   для: elenaki   (12.02.2007 в 10:12)
 

2 Elenaki

У меня все происходит следущим образом. Может это и не правильно, но...

есть файл страницы page.php, в нем прооисходит вызов js таким вот образом:


SCRIPT LANGUAGE="JavaScript" src="js/js.php"></script>,


а уже в файле js.php пишется

<?
....
запрос к БД и получение массива $mas=mysql_fetch_array($res);
echo
"document.write('$mas[str]');
?>


2bronenos, я блин сам удивляюсь=)

   
 
 автор: elenaki   (12.02.2007 в 10:48)   письмо автору
 
   для: b00m   (12.02.2007 в 10:43)
 

в echo не закрыта двойная кавычка (уже второй раз) - это ошибка цитирования или и в скрипте так?

вообще-то непонятно, зачем в вашем случае JS, если все эти действия можно проделать средствами РНР? ошибку JS браузер показывает? внизу в левом углу есть желтый треугольник?

   
 
 автор: b00m   (12.02.2007 в 17:04)   письмо автору
 
   для: elenaki   (12.02.2007 в 10:48)
 

Ошибка цитирования... Это нужно для того... короче, это продолжение этой темы

   
 
 автор: b00m   (12.02.2007 в 10:36)   письмо автору
 
   для: Trianon   (12.02.2007 в 00:37)
 

Все опострофы, кавычки и прочее обрабатываются при занесении строки в базу данных с помощью htmlspecialchars(). Перносов строк (\n, \r) нет.

   
 
 автор: kir-musikhin   (13.09.2007 в 20:36)   письмо автору
 
   для: b00m   (12.02.2007 в 10:36)
 

???

   
 
 автор: Poison   (13.09.2007 в 21:27)   письмо автору
 
   для: kir-musikhin   (13.09.2007 в 20:36)
 

Попробуйте:


<? 
.... 
запрос к БД и получение массива $mas=mysql_fetch_array($res); 
echo 
"document.write('" mysql_escape_string$mas['str'] ) . "')";
?>

   
Rambler's Top100
вверх

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