![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2008
Сообщений: 24
|
Добрый день!
Подскажите, каким образом правильно генерить XML файл средствами PHP? Я работаю с XML след. структуры: <?xml version="1.0" encoding="ISO-8859-1" ?> <images> <image> <title>My title</title> <img>contents/gallery/category2/img1.jpg</img> <tmb>contents/gallery/category2/tmb1.jpg</tmb> <desc><![CDATA[Desc goes hire]]></desc> </image> </images> <?
function db_connect()
{
$result = @mysql_pconnect("localhost", "root", "");
if (!$result)
return false;
if (!@mysql_select_db("studio"))
return false;
return $result;
}
$conn = db_connect();
$sql = "select * from gallery where id='1'";
$result = mysql_query($sql, $conn);
if (mysql_num_rows($result)) {
echo '<?xml version="1.0" encoding="ISO-8859-1" ?> ';
echo '<images>';
while ($qry = mysql_fetch_array($result)) {
$item = '<image><title>'.$qry[title].'</title><img>'.$qry[img].'</img><tmb>'.$qry[thmb].'</tmb><desc><![CDATA['.$qry[desc].']]></desc></image>';
echo $item;
}
echo '/<images>';
}
?>
<?xml version="1.0" encoding="ISO-8859-1" ?> <images><image><title>My title</title><img>contents/gallery/category1/img1.jpg</img><tmb>contents/gallery/category1/tmb1.jpg</tmb><desc><![CDATA[Desc goes hire]]></desc></image>/<images> К сожалению результат получается нулевой (((( Подскажите где я допускаю ошибку? она на уровне логистики или инструментария? Спасибо огромное! |
|
|||||
|
Modus ponens
|
Добрый день!
Официальная поддержка ПХП4 закончилась ровно 3 дня тому назад (8 августа), и поэтому... =) Поэтому учимся пользоваться DOMDocument классом =) Кроме того, во избежание дальнейших граблей сразу забываем про любые ASCII кодировки для ХМЛей и начинаем использовать UTF-8. К сожалению, не видя неработающей скрипт вероятность угадать, что в нем не работает стремится к нулю, могу только предположить, что: нужно порасставлять trace() в ключевых местах и проверить совпаение URL в запросе с реальным URL по которому расположен скрипт. Кроме того, не используйте короткое обозначение включений скрипта, т.е. <?php ?> а не <? ?> <?php print "hi!" ?> а не <?="hi!" ?> Цитата:
a ЗЫ. И ну максимум 80 символов в строке =) (а вообще - 72)
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 11.08.2008 в 17:50. |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 24
|
Цитата:
Косательно сокращений php - их там деже и не использовалось. Вывод того что проблема не в скрипте я зделал из того что с XML все работает - трабл только с php Если трабл с кодировками - то оно по ходу должно же было выдать ну хоть что-то, пусть даже кривой текст? |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 24
|
Вот код функции если это облегчит понимание задачи
function loadImages () {
var images:XML = new XML ();
images.ignoreWhite = true;
images.onLoad = function (success) {
if (success) {
var xml:XMLNode = this.firstChild;
totalImages = xml.childNodes.length;
for (i = 0; i < xml.childNodes.length; i++) {
var imagesTitle:String = xml.childNodes[i].childNodes[0].childNodes[0].nodeValue;
var imagesLarge:String = xml.childNodes[i].childNodes[1].childNodes[0].nodeValue;
var imagesTmb:String = xml.childNodes[i].childNodes[2].childNodes[0].nodeValue;
var imagesDesc:String = xml.childNodes[i].childNodes[3].childNodes[0].nodeValue;
//
bottomBar.rightSide.imageTxt.txt.autoSize = true;
bottomBar.rightSide.imageTxt.txt.text = "1";
//
bottomBar.rightSide.totalTxt.txt.autoSize = true;
bottomBar.rightSide.totalTxt.txt.text = totalImages;
//
displayPositions ();
//
imageTitleArr.push (imagesTitle);
imagesArr.push (imagesLarge);
imageDescArr.push (imagesDesc);
//
tmbs.containerTmbs.attachMovie ("attach","attach" + i,i);
tmbs.containerTmbs["attach" + i]._x = i * 30;
//
loadThumbnails (imagesTmb,tmbs.containerTmbs["attach" + i].picture);
loadThumbnails (imagesTmb,tmbs.containerTmbs["attach" + i].largeTmb.picture);
//
contentBox.contentBox_text.catText.text = categoryTitleForContent;
contentBox.contentBox_text.titleText.text = xml.childNodes[0].childNodes[0].childNodes[0].nodeValue;
contentBox.contentBox_text.descText.htmlText = xml.childNodes[0].childNodes[3].childNodes[0].nodeValue;
contentBox.contentBox_text.descText.autoSize = true;
myListenerload.onResize ();
//
tmbs.containerTmbs["attach" + i].bt.idInstance = i;
//
tmbs.containerTmbs["attach" + i].bt.onRelease = function () {
//
cursorArr = this.idInstance;
//
for (a = 0; a < totalImages; a++) {
if(tmbs.containerTmbs["attach" + a].back._tint == color){
tmbs.containerTmbs["attach" + a].bt.enabled = true;
tmbs.containerTmbs["attach" + a].back._tint = 0x353535;
}
//
if(a > 0){
if(a == totalImages - 1){
tmbs.containerTmbs["attach" + cursorArr].gotoAndPlay("close");
tmbs.containerTmbs["attach" + cursorArr].bt.enabled = false;
tmbs.containerTmbs["attach" + cursorArr].back._tint = color;
}
}
}
//
abortSlideShow ();
//
bottomBar.rightSide.imageTxt.txt.autoSize = true;
bottomBar.rightSide.imageTxt.txt.text = cursorArr + 1;
//
displayPositions ();
//
contentBox.contentBox_text.catText.text = categoryTitleForContent;
contentBox.contentBox_text.titleText.text = imageTitleArr[cursorArr];
contentBox.contentBox_text.descText.htmlText = imageDescArr[cursorArr];
contentBox.contentBox_text.descText.autoSize = true;
myListenerload.onResize ();
//
ZigoEngine.doTween (imageContainer,'_alpha',0,1,"easeOutExpo",0,function () {
loadBitmapSmoothed (imagesArr[cursorArr],imageContainer);
});
};
}
}
loadBitmapSmoothed (imagesArr[cursorArr],imageContainer);
};
images.load ("contents/data/gallery_category1.xml");
}
|
|
|||||
|
Регистрация: Aug 2008
Сообщений: 24
|
Почти разобрался с помощью скрипта:
<?php
//phpinfo();
if(!$dbconnect = mysql_connect('localhost', 'root', '')) {
echo "Connection failed to the host 'localhost'.";
exit;
} // if
if (!mysql_select_db('studio')) {
echo "Cannot connect to database 'test'";
exit;
} // if
$table_id = 'image';
$query = "SELECT * FROM $table_id";
$dbresult = mysql_query($query, $dbconnect);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('images');
$root = $doc->appendChild($root);
// process one row at a time
while($row = mysql_fetch_assoc($dbresult)) {
// add node for each row
$occ = $doc->createElement($table_id);
$occ = $root->appendChild($occ);
// add a child node for each field
foreach ($row as $fieldname => $fieldvalue) {
$child = $doc->createElement($fieldname);
$child = $occ->appendChild($child);
$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);
} // foreach
} // while
// get completed xml document
$xml_string = $doc->saveXML();
echo $xml_string;
?>
Подскажите плизз, как отконфигурировать ячейки которые будут выводиться и отредактировать порядок строк? Спасибо! |
|
|||||
|
Modus ponens
|
То, что закончилась поддержка значит, что php.net больше не отвечает за корректную работу / не принимает багрепорты, не гарантирует обратной совместимости и т.п.
Проблема по всей видимости не с PHP, а с AS, а он ну просто ужасный =) 1. Читаем про mx.utils.Delegate класс. 2. Объявлять функции внутри тела другой функции - это самый верный путь навредить себе самому. 3. Вот так в цикле обращаться к узлу - это безбожное расточительство ресурсов: 4. Нетипизированый доступ - еще один хороший способ не увидеть ошибки: Максимум, что из этого сможет понять читающий, что у вас есть какой-то динамический объект с динамическими свойствами containerTmbs, но вот что такое picture - этого уже не поймет никто. 5. аналогично - вы сами себе усложняете жизнь, а что если contentBox_text не существует, как вы об этом узнаете? 6. Вы пытаетесь общаться с ПХП скриптом, а при этом очень похоже на то, что пытаетесь загрузить ХМЛ файл. Если вы не трогали настройки сервера, и сохранили ваш ПХП файл с расширением .XML, то сервер не выполнит ПХП файл, а просто отдаст его в виде текста.
__________________
Hell is the possibility of sanity Последний раз редактировалось wvxvw; 11.08.2008 в 23:16. |
|
|||||
|
Регистрация: Aug 2008
Сообщений: 24
|
Это только фрагмент скрипта - это галерея которую я подключаю к сайту
Значение это я менял на адрес к пхп файлу: К сожалению знаний чтоб написать такую галерею самуому нехватит ((( К сожалению все это не устраняет необходимость админить галерею ( DOM XML на половину решил задачу. Не трогая AS я вгрузил место XML файл PHP <?php
//phpinfo();
if(!$dbconnect = mysql_connect('localhost', 'root', '')) {
echo "Connection failed to the host 'localhost'.";
exit;
} // if
if (!mysql_select_db('studio')) {
echo "Cannot connect to database 'test'";
exit;
} // if
$table_id = 'image';
$query = "SELECT * FROM $table_id";
$dbresult = mysql_query($query, $dbconnect);
// create a new XML document
$doc = new DomDocument('1.0');
// create root node
$root = $doc->createElement('images');
$root = $doc->appendChild($root);
// process one row at a time
while($row = mysql_fetch_assoc($dbresult)) {
// add node for each row
$occ = $doc->createElement($table_id);
$occ = $root->appendChild($occ);
// add a child node for each field
foreach ($row as $fieldname => $fieldvalue) {
$child = $doc->createElement($fieldname);
$child = $occ->appendChild($child);
$value = $doc->createTextNode($fieldvalue);
$value = $child->appendChild($value);
} // foreach
} // while
// get completed xml document
$xml_string = $doc->saveXML();
echo $xml_string;
?>
CREATE TABLE IF NOT EXISTS `image` ( `title` text NOT NULL, `img` varchar(255) NOT NULL, `thmb` varchar(255) NOT NULL, `desc` text NOT NULL PRIMARY KEY (`title`) ) Осталось только следующие: 1) Отрегулировать порядок в котором будут выводиться строки из базы Как я понимаю это проще зделать еще при вызове данных тут: 2) Отфильтровать ячейки которые будут входить в результат работы скрипта На пример я ходу добавить перед title поле id, которое будет использоваться только панелью администрирования а скриптом не обрабатываться. Вопрос только в том как это зделать. [b]3) Название второй ноды соответствует названию таблицы в базе - это тоже хочетсья изменить[b] На сервере у меня PHP 5 DOM/XML enabled DOM/XML API Version 20031129 libxml Version 2.6.16 HTML Support enabled XPath Support enabled XPointer Support enabled Schema Support enabled RelaxNG Support enabled |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:43. |
|
|
« Предыдущая тема | Следующая тема » |
|
|