За последние 24 часа нас посетили 31758 программистов и 1755 роботов. Сейчас ищут 998 программистов ...

PHP vs JS. Как сохранить кавычки?

Тема в разделе "PHP для новичков", создана пользователем Tigrish, 10 мар 2009.

  1. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Привет всем!

    Возникла такая ситуация. Во всплывающем окне человек выбирает некое наименования, допустим (Шампунь "Класс") . При нажатии на строку выполняется JS, который отправляет данные в родительское окно.

    [js]onClick=\" window.opener.changeBut(document.getElementById('prod_title').value );
    window.opener.focus();
    self.close(); \"[/js]

    Принимает строку этот код:
    PHP:
    1. <input type='text'  id=\"Prod_title\" size='50' value='' readonly>
    Так вот при возврате в родитеский input кавычки обрывают данные и я получаю строку (Шампунь ).
    Мне посоветовали применить
    PHP:
    1. htmlspecialchars($smth ,ENT_QUOTES)
    но пхп все время ругается. Не хочет контачить с Js.

    Как можно решить эту проблему?
     
  2. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Неужели никто не знает, что можно сделать?
     
  3. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Как ругается?
     
  4. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Я пробовала вставить пхп в JS
    [js]function changeBut(prod_name) {
    document.getElementById('Prod_title').value = prod_name;
    }
    [/js]
    PHP:
    1. <input type='text'  id=\"Prod_title\" size='50' value='' readonly>
    Если вставить htmlspecialchars($prod_title,ENT_QUOTES) в value, то он его не видит, а при попытке вставить как-нибудь так.. Это и есть 223 строка.
    PHP:
    1. [js]document.getElementById('Prod_title').value =  ".htmlspecialchars(".prod_name".,ENT_QUOTES); ."[/js]
    говорит, что
    PHP:
    1. PHP Parse error:  syntax error, unexpected '.', expecting ')' in classes/db.php on line 223
    Собственно я с ним согласна, но не знаю куда еще можно воткнуть, чтобы работало корректно и не обрывало строку на первых же двойных кавычках. К слову сказать одинарные и косые проходят без проблем.
     
  5. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Преведите код полностью. Мне кажется, что у Вас грубая ошибка.
     
  6. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    Выкладываю.
    Это index.php , в котором находиться форма, куда возвращается данные.
    PHP:
    1.  
    2. <script language='JavaScript'> \n
    3. <!--    
    4. function changeBut(prod_name) {
    5.     document.getElementById('Prod_title').value =   prod_name;
    6. }
    7. //-->
    8. </script>   \n
    9.     \n
    10. <form>     
    11.     <input type='text'  id=\"Prod_title\" size='50' value='' readonly>
    12.     <input type='button' value='".constant('_SEARCH')."' onClick='window.open(\"products.php\", \"Products search\", \"toolbar=0,scroll=yes, width=600,height=800, resizable=yes\");'>
    13. </form>
    products.php (Всплывающее окно) Кусочек, т.к. весь массив выводится в цикле. Это тело цикла.
    PHP:
    1. <form>  
    2.      <input id=\"prod_". $line['ID'] ."\"       type=\"hidden\" value=\"". $line['ID'] ."\" /> \n
    3.      <input id=\"prod_". $line['ID'] ."_name\"  type=\"hidden\" value=\"". $line['NAME'] ."\" /> \n
    4.                                        
    5.     <a href='' title='". constant('_SELECT') ."'    onClick=\"  window.opener.changeBut(document.getElementById('prod_". $line['ID'] ."').value ); window.opener.focus();      self.close(); \">
    6.         ". htmltotext($line['NAME']) ."  </a> </td> \n";
    7.            
    8.     </form>
    Если поможете объяснить в чем ошибка, то буду очень благодарна.
     
  7. Tigrish

    Tigrish Активный пользователь

    С нами с:
    26 июл 2008
    Сообщения:
    54
    Симпатии:
    0
    И еще. В рамках всплывающего окна двойные кавычки передаются совершенно нормально и не теряются.
     
  8. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    В первом коде нет ни единой php-команды. Даже нет места, которое бы PHP обрабатывал.
    Во втором коде РНР-переменные вообще должны отображаться как текст,потому что они не между <?php ?>
     
  9. [vs]

    [vs] Суперстар
    Команда форума Модератор

    С нами с:
    27 сен 2007
    Сообщения:
    10.559
    Симпатии:
    632
    Как ни странно, PHP генерирует ошибки чуть ли не на литературном английском. Поэтому, когда видишь ошибку, попробуй перевести. Эта ошибка означает, что в 223-й строке файла db.php вместо ожидаемой скобки стоит точка :)