За последние 24 часа нас посетили 16090 программистов и 1666 роботов. Сейчас ищут 1086 программистов ...

Ошибка при создании динамических списков

Тема в разделе "Прочие вопросы по PHP", создана пользователем seregarem, 18 мар 2009.

  1. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Создаю динамически списки, значения списка вытягиваются из MySQL. В Opera 9.63 все работает нормально - списки подгружаются, а в IE 7 не работает - выдает ошибку:
    Код (Text):
    1. Не удается отобразить страницу XML
    2. Не удается просмотреть ввод XML с использованием списка стилей . Исправьте ошибку и затем нажмите кнопку "Обновить"или повторите попытку позднее.
    3. --------------------------------------------------------------------------------
    4. Указанная кодировка не поддерживается. Ошибка при обработке ресурса ''http://localhost/obyava/scripts/showsubcat.php''. Ст...
    5. <?xml version="1.0" encoding="utf8" standalone="yes"?><response><options><![CDATA[<option value="0"&...
    Скрипт создания значений списка следующий:
    PHP:
    1. <?php
    2. // Если выбрано значение первого списка - формируем второй список
    3. if (!isset($_GET['subcategory'])) {
    4. $cat=$_GET['category'];
    5. require('connecttomysql.php');
    6. $sql="SELECT * FROM subcat WHERE cat_id=".$cat;
    7. $result=mysql_query($sql, $con);
    8. $secondOptions = '<![CDATA[';
    9. $secondOptions = $secondOptions.'<option value="0">Выберите</option>'."\n";
    10. while ($row = mysql_fetch_array($result)) {
    11.   $secondOptions = $secondOptions.'<option value="'.$row['name'].'">'.$row['alias'].'</option>'."\n";
    12. }
    13. $secondOptions = $secondOptions.']]>';
    14. $response = '<?xml version="1.0" encoding="utf8" standalone="yes"?>'.'<response>'.'<options>'.$secondOptions.'</options>'.'</response>';
    15. }
    16. //header('Content-Type: text/xml');
    17. echo $response;
    18. ?>
    На сколько я понимаю, проблема в кодировке. Как исправить ошибку?
     
  2. Amperandus

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

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    mb_internal_encoding('UTF-8'); - в начале

    после установки соединения с бд, но перед запросом

    mysql_query("set character set utf8");
    mysql_query("set character_set_client=utf8");
    mysql_query("set character_set_connection=utf8");
    mysql_query("set character_set_results=utf8");

    альтернатива
    PHP:
    1.  
    2. <?php
    3. if($_SERVER['HTTP_USER_AGENT']) == 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; InfoPath.2)'
    4. {
    5. echo 'Скачайте нормальный браузер и избавтесь от этого обозревателя интернета, недостойного носить гордое имя Браузер';
    6. exit();
    7. }
    8. ?>
     
  3. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Все равно такая же ошибка.
     
  4. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
     
  5. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Что это значит?
     
  6. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    А то и значит, что не такой кодировки utf8, есть UTF-8.
     
  7. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Ясно. С этим разобрался - такой ошибки больше нет, но есть другая! Т.е. список все равно не появляется. Вот код:
    Код (Text):
    1.  
    2. function makeList() {
    3. // только при состоянии "complete"
    4. if (request.readyState == 4) {
    5. // для статуса "OK"
    6.     if (request.status == 200) {
    7.         responseXml = request.responseXML;
    8.         xmlDoc=responseXml.documentElement;
    9.         options=xmlDoc.getElementsByTagName("options")[0].firstChild.data;
    10.         document.getElementById("subcategory").innerHTML=options;
    11.     } else alert("Не удалось получить данные от сервера:\n"+request.statusText);
    12.   }
    13. }
    На строке options=xmlDoc.getElementsByTagName("options")[0].firstChild.data; похоже все накрывается. Что не так?
     
  8. Amperandus

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

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
  9. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
  10. Amperandus

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

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
  11. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Я понимаю ваши словесные батлы, но можно по теме подсказать?
     
  12. Sergey89

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

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    а то что надо хоть немного думать, прежде чем что-то говорить. здесь речь не о том, как записывается кодировка в MySQL, здесь речь о не верно записанной кодировке в XML.
     
  13. Amperandus

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

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    Теперь понял, указывайте что ли к кому обращаетесь, а то я отнес к своему посту про соединение с бд.
     
  14. seregarem

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

    С нами с:
    26 авг 2008
    Сообщения:
    23
    Симпатии:
    0
    Дак тебе и говорили!!!