|
|
|
| Не называйте извращенцем, просто помогите=)
Вопрос такой... Нужно с помощью javascript вывести стоку, хранящуюся в БД MySQL на серваке.
код примерно такой
<?
....
запрос к БД и получение массива $mas=mysql_fetch_array($res);
echo"document.write('$mas[str]');
?>
|
Проблема в следующем. Если длина строки небольшая, что-то около 10 символов и эти символы буквы (кириллица и английские) то все выводится просто замечательно. А вот когда строка, т.е. $mas['str'] имеет примерно такой вид
Строка русских букв ”просто слово” много слов ”еще два слова”
|
то она почему-то не выводится.=(
Подскажте в чем трабла. | |
|
|
|
|
|
|
|
для: b00m
(11.02.2007 в 23:48)
| | и среди этих слов нет ни апострофов, ни переводов строки? | |
|
|
|
|
|
|
|
для: 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>
|
| |
|
|
|
|
|
|
|
для: elenaki
(12.02.2007 в 10:12)
| | По утверждению автора на коортких строках у него все работает.
Врядли такое происходило бы, забудь он тег объявления скрипта. | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2007 в 10:25)
| | Я понимаю, document.all.place.innerHTML или alert()...
Но чем document.write() отличается от print / echo ? | |
|
|
|
|
|
|
|
для: bronenos
(12.02.2007 в 10:35)
| | тем, что document.write() - команда Java-script, а print/echo - команда PHP. а Java-script очень чувстсвителен к синтаксису. и если где-то в строке встретился знак перевода строки - это ошибка. все знаки переода строк (\r\n) надо заменить на <br>, если хотите сохранить структуру строки. или удалить вообще. лучше сделать это еще в РНР сразу после получения элементая массива. замечу, что функция nl2br() тут вам не поможет, она не заменяет переводы строк брейками, а вставляет перед каждым переводом строки <br> (сам знак перевода строки при этом остается и вызывает ошибку JS). | |
|
|
|
|
|
|
|
для: elenaki
(12.02.2007 в 10:42)
| | >все знаки переода строк (\r\n) надо заменить на <br>, если хотите сохранить структуру строки.
Если Вы и вправду хотите сохранить структуру строки, то все знаки перевода строки (CR и LF) нужно заменить на последовательности \r и \n соответственно. | |
|
|
|
|
|
|
|
для: 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, я блин сам удивляюсь=) | |
|
|
|
|
|
|
|
для: b00m
(12.02.2007 в 10:43)
| | в echo не закрыта двойная кавычка (уже второй раз) - это ошибка цитирования или и в скрипте так?
вообще-то непонятно, зачем в вашем случае JS, если все эти действия можно проделать средствами РНР? ошибку JS браузер показывает? внизу в левом углу есть желтый треугольник? | |
|
|
|
|
|
|
|
для: elenaki
(12.02.2007 в 10:48)
| | Ошибка цитирования... Это нужно для того... короче, это продолжение этой темы | |
|
|
|
|
|
|
|
для: Trianon
(12.02.2007 в 00:37)
| | Все опострофы, кавычки и прочее обрабатываются при занесении строки в базу данных с помощью htmlspecialchars(). Перносов строк (\n, \r) нет. | |
|
|
|
|
|
|
|
для: b00m
(12.02.2007 в 10:36)
| | ??? | |
|
|
|
|
|
|
|
для: kir-musikhin
(13.09.2007 в 20:36)
| | Попробуйте:
<?
....
запрос к БД и получение массива $mas=mysql_fetch_array($res);
echo "document.write('" . mysql_escape_string( $mas['str'] ) . "')";
?>
|
| |
|
|
|