Проблема при создании xml из mysql

flexzdk

Новичок
Отлатдку провожу Firebugом.
Данный php вызывается из javascripta для создания xml.
Xml не создается, Firebug выдает ошибку "некорректно" в строке

PHP:
      print ("<good kod='".$res['idgr']."'>".$res['namegr']."</good>");
а точнее начиная с
PHP:
.$res['idgr'].
вот весь php
PHP:
<?php
header ('Content-Type:Text/xml');
echo '<?xml version="1.0" encoding="Windows-1251" standlone = "yes"?>';
echo "<goods>";
$con = mysql_connect("localhost", "root");
if ($con == true)
{
 if (mysql_select_db("dbtov")==true)
 {
  mysql_query ("set names cp1251");
  $sql = "select * from grtovars";
  if (mysql_query($sql)==true)
  {  
   $zapros=mysql_query($sql);
   $len=mysql_num_rows($zapros);
   if  ($len>0)
    {
     for ($i=0; $i<$len; $i++)
     {
      $res=mysql_fetch_array($zapros);

      print ("<good kod='".$res['idgr']."'>".$res['namegr']."</good>");
	  
      }
    }
   }
  mysql_free_result($zapros);
 }
}
echo "</goods>";
?>
 

flexzdk

Новичок
Да, именно на эту строку.
1.JPG

Из-за этого некорректно создается переменная nod в javascripte.
Там тоже ошибку из-за этой строки выдает.
2.JPG
 

WMix

герр M:)ller
Партнер клуба
блин какой ты проницательный.... я так не умею....
да конечно

echo '<?xml version="1.0" encoding="Windows-1251" standlone = "yes"?>'; тут ошибка, а точнее "?>';
нужно так написать
PHP:
echo '<'.'?xml version="1.0" encoding="Windows-1251" standlone = "yes"?'.'>';
 

Фанат

oncle terrible
Команда форума
flexzdk
вообще-то, РНР для работы нужен НТТР сервер.
 

Фанат

oncle terrible
Команда форума
ну так и свой супер-хмл генератор так же запускай.
а не так, как сейчас
 

Фанат

oncle terrible
Команда форума
и вообще, зачем ты его "вызываешь яваскриптом и отлаживаешь файрбагом"?
почему нельзя просто открыть его в браузере?
 

WMix

герр M:)ller
Партнер клуба
я поначалу и подумал, что не на сервере, но увидев "?>'; ...
предрассутки?
 

Фанат

oncle terrible
Команда форума
незнание синтаксиса РНР.
русский тоже подучить не помешает
 

flexzdk

Новичок
и вообще, зачем ты его "вызываешь яваскриптом и отлаживаешь файрбагом"?
почему нельзя просто открыть его в браузере?
Задание такое дали в универе. Страничку для заказа товаров сделать. На предыдущем этапе делали все без php и mysql. Xml набивали вручную и обрабатывали все javascriptом. Все работало. А теперь надо тоже самое сделать, но чтобы xml сам создавался из базы mysql при помощи php.
 

Фанат

oncle terrible
Команда форума
у меня нет вопросов к созданию xml из базы mysql при помощи php.
я спрашиваю, почему ты напрямую к файлу РНР не обращаешься для отладки, а делаешь это через яваскрипт?
неужели удобно через замочную скважину обоями прихожую оклеивать?
 

Фанат

oncle terrible
Команда форума
в любом случае, сначала обратись к своему тестовому скрипту, который работает
а потом посмотри, как обращаешься к генератору XML
и найди различия

повторюсь: РНР для работы нужен НТТР сервер.
 

flexzdk

Новичок
у меня нет вопросов к созданию xml из базы mysql при помощи php.
я спрашиваю, почему ты напрямую к файлу РНР не обращаешься для отладки, а делаешь это через яваскрипт?
неужели удобно через замочную скважину обоями прихожую оклеивать?
Я и пытаюсь сейчас это сделать. Также как тестовый запускаю его - не срабатывает. Тестовый был Hello world на php. Все нормально отобразилось.

Пытался и внутрь html вставлять php скрипт и отдельным файлом его делать, вызывая его из html. Читаю активно теорию сейчас, пытаюсь понять в чем ошибаюсь.

Может что-то не так делаю, я не особо силен в php, я еще не до конца понимаю, в каком виде выдает xml этот php скрипт.

А на форуме разместил, чтоб тут опытным взглядом оценили нет ли бросающихся в глаза ошибок в коде php.
 

Фанат

oncle terrible
Команда форума
при чём здесь код?
я тебе уже второй день говорю, что проблема не в коде, а в вызове.

но вместо того, чтобы показать, как вызываешь - ты пишешь здесь код.
Логика хоть какая-то в действиях должна быть?

эта искренняя вера в то, что проблема может быть только в коде, меня поражает.
"код посмотрите", а всё остальное неважно.
 

flexzdk

Новичок
при чём здесь код?
я тебе уже второй день говорю, что проблема не в коде, а в вызове.

но вместо того, чтобы показать, как вызываешь - ты пишешь здесь код.
Логика хоть какая-то в действиях должна быть?
В javascripte php файл вызывается здесь:
PHP:
window.onload=function() {
console = document.getElementById("grtov");
tvs=document.getElementById("tovs"); // показать товары выбранной группы
varout=1;
loadXMLDoc("getgr.php");
}
Вот более развернутый кусок JS, где показана вызывающая функция loadXMLDoc(), а также используемые ею функции:

PHP:
var kol=0; 
var itog=0;
var st=0;
var price=0;
var kz=0;

var kolt=0;
var pricet=0;

var arrkol=new Array();
var arrprice=new Array();
var arrtovar=new Array();
var arrst=new Array();
var arrkolSklad = new Array();
var arrkodes = new Array();

var gsel, ssel;
var nt, kt, pt;
var root, tovar;
var nod;
var data;

var req=null;
var console=null;
var tvs = null;
var elem = null;
var varout;

var READY_STATE_UNITIALED=0;
var READY_STATE_LOADING=1;
var READY_STATE_LOADED=2;
var READY_STATE_INTERACTIVE=3;
var READY_STATE_COMPLETE=4;



function loadXMLDoc(url) {
 if (window.XMLHttpRequest) {
        req= new XMLHttpRequest();
    } else if (window.ActiveXObject) {
        req=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (req) {
        req.onreadystatechange=processRequestChange;
        req.open("GET", url, true);
        req.send(null);
    }
}

function processRequestChange() {
    var ready = req.readyState;
    data = null;
    //alert("ready "+ready);
    if (ready==READY_STATE_COMPLETE) {
        
        
        data=req.responseXML;
		//alert(data);
        toConsoleXML(data);
           
    } 
}

window.onload=function() {
console = document.getElementById("grtov");
tvs=document.getElementById("tovs"); // показать товары выбранной группы
varout=1;
loadXMLDoc("getgr.php");
}


function toConsoleXML(data) {
  if(varout>=5)return;
  if (varout==1) elem=console;
  if (varout==2) elem=tvs;

  if (data!=null) {

//Определяем корневой элемент
  root=data.documentElement;
  var kodn;
  var strSel=""; //Чтобы выдать информацию о товаре мы должны сформировать об.типа select

  if(root==null){
   // alert("root is null");
    return;
  }
  if(varout==1||varout==2){
    for (var i=0; i<root.childNodes.length; i++)
      {
        nod=root.childNodes[i];  //перебираем группу товаров, это узел связ. с гр.тов
        kodn=nod.getAttribute("kod");
        strSel+="<option value="+ kodn+">"+nod.text+"</option>";  //формируем внутр.вид
        }
  }
  if(varout==1){
    elem.innerHTML="<select id='mygr' onchange='seltovs()'>"+strSel+"</select>";
  }
  if (varout==2)
    {
      elem.innerHTML="<select id='mytvs'>"+strSel+"</select>";
    }

   if (varout==3)
    {
     for (i=0; i<root.childNodes.length; i++)
      {

        nod=root.childNodes[i];
        kodn=nod.getAttribute("kod");
        pricet=nod.getAttribute("price");
        kolt=nod.getAttribute("kol");
        strSel+="<option value="+ kodn+">"+nod.text+"</option>";

      }
     }
   }
}
Вечером буду пытаться вызвать этот php напрямую из html. Посмотрю, что выдаст.
 

WMix

герр M:)ller
Партнер клуба
Вечером буду пытаться вызвать этот php напрямую из html. Посмотрю, что выдаст.
с этого обычно начинают,... что значит из html? из адресной строки!
на всякий случай еще раз замечу, видны переменные пхп, чего быть не должно!
 
Сверху