данные из базы в javascript редактор

Romantik

TeaM PHPClub
Быть такого не может!
<?php
mysql_connect("$DBHost","$DBUser","$DBPass");
$result=mysql("$DBName","SELECT text FROM esm WHERE name='buch'");
while ($row = mysql_fetch_row($result)) {
$text=$row[0];
}
$text.='bla-bla';
?>
...
<body onload="initEdit('form_content','edit','<?php echo $text;?>')">
так что выводит?
 

anna1978

Новичок
А вот может...
AmadMike совершенно правильно сформулировал
Если вызывать данные из базы, то после выполнения скрипта в месте:

<body onload="initEdit('form_content','edit','<?php echo "$text";?>')">

получается просто

<body onload="initEdit('form_content','edit','')">
 

anna1978

Новичок
Эта функция прекрасно работает, результат же проверен с echo, значение $text распечатывается
 

AmadMike

Новичок
да это просто функцию создали такую.
Проще написать mysql_select_db и простым mysql_query потом делать, а вообще хороший класс mysqli для работы с новыми базами данных.
Да дело не в этом, если текст выводит сразу а после разделения кодом перестает выводить, то проблема в конфигурации пхп, надо на другом хостинге посмотреть, по идее там будет без проблем работать.
Какая у вас версия пхп?

Попробуйте все-таки сделать следующее:

<?php
mysql_connect("$DBHost","$DBUser","$DBPass");
$result=mysql("$DBName","SELECT text FROM esm WHERE name='buch'");
while ($row = mysql_fetch_row($result)) {
$text=$row[0];
}
?>
...
<?=$text?>

Есть что-нибудь?
 

anna1978

Новичок
Ничего не понимаю. От безнадежности в базе данных изменила
имя строки текст вместо text написала kopf (именно в базе данных через phpAdmin) и все заработало - нужный текст появился в редакционном окне.
<?php
mysql_connect("$DBHost","$DBUser","$DBPass");
$result=mysql("$DBName","SELECT kopf FROM esm WHERE name='buch'");
while ($row = mysql_fetch_row($result)) {
$kopf=$row[0];}?>
и соответственно
<body onload="initEdit('form_content','edit','<?php echo $kopf;?>')">


Это что - слово text какое-то особенное?!!! Сколько времени впустую!!!

Теперь надо дальше идти - и уже страшно....
 

Romantik

TeaM PHPClub
используйте в названии полей, таблиц обратные кавычки `` как тот же phpMyAdmin делает
 

AmadMike

Новичок
Ха, вообще-то конечно особенное, text - это тип данных, и если называть этим словом поле, то в запросе надо его в кавычки заключать - `text`, но, по-мойму в последних версиях mysql работает и так, странно, ведь текст выводился через echo....

Мой совет, разделите все-таки html-код от php, будет проще разбираться.
И эта строчка не совсем понятна:
PHP:
while ($row = mysql_fetch_row($result)) {
$text=$row[0];
}
Зачем в цикл загонять, если у вас там только одно значение? можно написать просто
PHP:
$row = mysql_fetch_row($result);
$text = $row[0];
или же с помощью функции
PHP:
mysql_result($res, 0);
И вообще в кавычки лучше все заключать:
PHP:
mysql_connect ("$DBHost","$DBUser","$DBPass");
$sql = "SELECT `kopf` FROM `esm`
            WHERE `name` = 'buch'";
$result=mysql("$DBName", $sql);
$row = mysql_fetch_row($result);
$kopf=$row[0];
И имена переменных лучше использовать говорящие и подлиннее, а то может получиться, что где-то вы нечаянно одну и туже переменную переопределите, и она получит уже другое значение.

Успехов в разработке!
 

anna1978

Новичок
ВСЕМ БОЛЬШОЕ СПАСИБО!!!

Страх оказался оправданным . проблемы дальше идут. Мое чувство вины оправдывается только предположением, что подобный редактор может многим понадобиться. А посему еще вопрос.

Текст в i-frame изменяется, дальше я посылаю его в weiter.php
и ничего не происходит . он не распечатывается, а в распечатке хотелось бы получить текст в html варианте (его потом в базу вставить)
<?
echo "<form onsubmit='return processData()' id='form_content' action=\"weiter.php? method='post'\">";
?>
....
<iframe id="edit" name="edit" width="400" height="200" frameborder="2" marginheight="0" marginwidth="0"></iframe>
<textarea name="kopf" style="display:none"></textarea> ...

а

weiter.php
<?php


echo "$kopf";

?>
 

AmadMike

Новичок
=) вообще таких редакторов уже есть достаточное количество.
Для того чтобы получше разобраться, упростите код для начала (уберите там всякие проверки браузера и т.д. чтобы лучше все читалось).

К проблеме, я так и не понял что вы хотите получить и что в итоге выходит. Напишите, что выдает вам php после echo , а еще лучше - что содержится в массиве $_POST, напишите print_r($_POST), что выводится?

И вот эта строка все-таки меня смущает:

Код:
echo "<form onsubmit='return processData()' id='form_content'
action=\"weiter.php? method='post'\">";
зачем во-первых вы используете одинарные кавычки везде кроме атрибута action, потом зачем знак вопроса после weiter.php и наконец, как вообще это работает - action=\"weiter.php? method='post'\", надо закрыть атрибут action кавычкой.
P.s. двойные кавычке все же более предпочтительны.
 

anna1978

Новичок
Их много, но мне как.-о не удалось их приспособить к пхп у себя. Кроме того много лишних функций.

Выводится

Array ( )
 

AmadMike

Новичок
Ну правильно, значит ничего и не передается.
Попробуйте так:

echo '<form onsubmit="javascript: return processData();" id="form_content"
action="weiter.php" method="post">';

Работает?
 

AmadMike

Новичок
Дело в javascript
У вас там вообще чушь какая то получается.
Во-первых, зачем нужны параметры в функции
function initEdit(strFormu,strEdit,strDefTxt)
можно просто в начале сделать переменную var text="<?=$kopf?>";
а все остальные штуки и так можно достать не передавая их 20 раз в функции. Во вторых, я не вижу где присваивается элементу <textarea> у которого name="text" текст из iframe.
В функции processData()
написано formu.content.value = ifrm.body.innerHTML; нет элемента content, по всей видимости надо заменить на formu.text.value = ...

и откуда вообще после print_r появляется [kopf] вы переименовали textarea name="text" в name="kopf" что ли?
 

anna1978

Новичок
После print_r появляется [kopf] т.к. я переименовала в textarea, у меня уже панический страх перед словом text.

У меня нет никакого понятия о javascript, дай Бог PHP дальше узнавать.
Если проблема в javascript, то дело швах.

Задача в принципе такая: я вызываю из базы данных текст, немного редактирую его (чисто для красоты, где-то bold и т.д.) , а затем его отредактированный вариант снова записываю в базе, причем записывается он со всеми html тягами, чтобы потом в вызванной странице он выглядел покрасивше.

У меня не получилось встроить готовые редакторы, а кроме того у них масса ненужных мне функций, а такой маленький скрипт вставить в программу казалось легко.
Я долго искала подобный скрипт (google, forum и т.д.) . и это то, что найдено.
Спасибо
Анна
 

AmadMike

Новичок
В общем, какой-то очень кривой скрипт вы нашли.
Если вы очень плохо знакомы с javascript, лучше поищите что-нибудь более подходящее и простое в настройке. Если все же разбираетесь, то вот пример (он будет просто вынимать из iframe текст и передавать в форме из textarea, т.е. по сути бесполезная вещь, но потом можно добавить к ней выбор шрифта и т.д.).

PHP:
<?php
mysql_connect($DBHost, $DBUser, $DBPass);
mysql_select_db($DBName);
$sql = "SELECT `text` FROM `esm`
      WHERE `name` = 'buch'";
$result = mysql_query($sql);
$row  =  mysql_fetch_row($result);
$text = $row[0];
?>
<script type="text/javascript">
var text = "<?=str_replace('"', '\\"', $text)?>";
var ifrmObj;
var formObj;

function initialize()
{
  ifrmObj = document.getElementById('ifrm');
  formObj = document.getElementById('addForm');
  ifrm.designMode = 'on';
  if (text) {
      ifrm.open();
      ifrm.write(text);
      ifrm.close();
  }
}

function processData()
{
  var txt = ifrm.body.innerHTML;
  if (txt == null) {
    alert('Введите текст!');
    return false;
  }
  else {
    formObj.text.value = txt;
    return true;
  }
}
</script>

<body onload="javascript: initialize();">
  <iframe id="ifrm"></iframe>
  <form id="addForm" action="weiter.php" method="post" onsubmit="javascript: return processData();">
    <textarea name="text" style="display: none;"></textarea>
    <input type="submit" value="Отправить" />
  </form>
</body>
Ну а дальше уже можно добавить всякие кнопочки чтобы текст жирным делать, чтобы шрифт менять и т.д.
Вообще если вам особой функциональности не нужно (потому что такая вещь дает очень большие возможности, можно полностью web Word сделать, как например у Google), то можете сделать что-то наподобие BBCode как в этом форуме - [ b ][ /b ], [ url=".." ][ /url ]. Да и вообще в конце концов можно и тэгами писать, это даже приятнее =)

P.s. код не проверял, могут быть какие-то ошибки... но по идее должен работать.
 

anna1978

Новичок
К сожалению, этот код не работает. данные не вводятся.
Думаю, что уже достаточно времени у Вас отнято, больше приставать не буду. Т.к. знаний в javascript вообще нет, попробую поискать какой-нибудь другой скрипт, который отсылает в html кодировке.
Большое спасибо!
 

AmadMike

Новичок
Да я забыл определить переменные ifrmObj; formObj;

В общем, если вы связаны как-то с web-дизайном и программированием, попробуйте изучить и javascript очень полезная штука. Хотя здесь задача довольно сложная, т.к. даже для простой вставки жирного шрифта придется очень много всего писать, чтобы добавился тэг <b>, в него записался текст или же чтобы выделенный текст стал жирным.. Поищите, может повезет, я видел что-то наподобие TextArea Rich настраивается не так сложно, правда конечно кривоват.

В любом случае, желаю удачи.
 
Сверху