<?php
echo "<form method='post'>";
$doc = new DOMDocument();
$doc->load('flashmo_024_photos.xml');
$photos = $doc->getElementsByTagName('photo');
$table = "<table border='1' align='center' width='70%'";
$numer = 0;
foreach ($photos as $photo)
{
$numer++;
$table .= "<tr>";
$table .= "<td>"."<img src=".$photo -> getAttribute ('thumbnail').">"."</td>";
$table .= "<td>".$photo -> getAttribute ('filename')."</td>";
$table .= "<td>".$photo -> getAttribute ('description')."</td>";
$table .= "<td>"."<input type='checkbox' name=".$numer.">"."</td>";
}
$table.= "</table>";
echo $table;
echo "<input type='submit' value='Save'>";
echo "</form>";
if (isset($_POST[$numer]))
{
echo 'Х';
//$doc->save('test.xml');
}
else
{
echo 'Y';
}
?>
В кратце, подкгрузил XML, сформировал табличку из данных XML, добавил checkbox'ы. Теперь сама проблема... как перебрать суперглобальный массив $_POST так чтобы формировался другой XML документ только из тех данных которые были выбраны по checkbox.
Ну никак не получается... что только не пробовал. Толи неправильно подхожу к проблеме, толи кодю неверно, не пойму.
Спустя 1 минута, 40 секунд (26.04.2011 - 13:09) linker написал(а):
Для начала раздели на два скрипта вывод чекбоксов и пересбор XML. Далее для элементов лучше иметь ID. Далее
$table .= "<td>"."<input type='checkbox' name="checks[]" value=".$ID.">"."</td>";после
if (isset($_POST['checks']))
{
foreach($_POST['checks'] as $ID)
{
// Здесь собираем XML
}
$xml->save('filename.xml');
}
Спустя 1 день, 1 час, 38 минут, 10 секунд (27.04.2011 - 14:47) Programer написал(а):
<?php
echo "<form method='post'>";
$doc = new DOMDocument();
$doc->load('flashmo_024_photos.xml');
$photos = $doc->getElementsByTagName('photo');
$table = "<table border='1' align='center' width='70%'";
$numer = 0;
foreach ($photos as $photo)
{
$numer++;
$table .= "<tr>";
$table .= "<td>"."<img src=".$photo -> getAttribute ('thumbnail').">"."</td>";
$table .= "<td>".$photo -> getAttribute ('filename')."</td>";
$table .= "<td>".$photo -> getAttribute ('description')."</td>";
$table .= "<td>"."<input type='checkbox' name='checks[]' value=".$numer.">"."</td>";
}
$table .= "</table>";
echo $table;
echo "<input type='submit' value='Save'>";
echo "</form>";
/*print_r ($_POST); //проверка возвращаемого массива
var_dump($numer);
*/
if (isset($_POST['checks']))
{
$s =1;
foreach ($_POST['checks'] as $numer)
{
$s++;
$dom = new DOMDocument('1.0', 'utf-8');
$element = $dom->appendChild(new DOMElement('photos'));
$Photo = $element->appendChild(new DOMElement('photo'));
$filename = $Photo->setAttributeNode(new DOMattr('filename', $s));
//$attr = $Table->setAttributeNode(new DOMAttr('Name', 'T1'));
//$attr = $Table->setAttributeNode(new DOMAttr('Name', 'T1'));
}
echo $dom->save('test.xml');
}
?>
С разделением скрипта, при хорошем совете, разобрался сразу:) Теперь мучаюсь со сборкой XML... Гуру подскажите. Как сделать чтоб он в foreach создавая новый атрибут добавлял его в XML, а не перезаписывал?
Спустя 17 часов, 33 минуты, 58 секунд (28.04.2011 - 08:21) linker написал(а):
$dom = new DOMDocument('1.0', 'utf-8');
foreach ($_POST['checks'] as $numer)
{
$s++;
$element = $dom->appendChild(new DOMElement('photos'));
$Photo = $element->appendChild(new DOMElement('photo'));
$filename = $Photo->setAttributeNode(new DOMattr('filename', $s));
}
Спустя 10 минут, 24 секунды (28.04.2011 - 08:32) Programer написал(а):
До ужаса проще простого...((( мда. не хватает програмерской логики... Может есть качественная литература для развития этой самой логики? или исключительно через практику?
P.S. linker Агромное спасибо.
P.S. linker Агромное спасибо.
Спустя 5 минут, 20 секунд (28.04.2011 - 08:37) Programer написал(а):
Резюмирую, может кому понадобится:
Подгрузка готового XML. Вывод данных в таблицу. Обработка суперглобального массива. Запись выбранных данных в новый XML.
Подгрузка готового XML. Вывод данных в таблицу. Обработка суперглобального массива. Запись выбранных данных в новый XML.
<?php
echo "<form method='post'>";
$doc = new DOMDocument();
$doc->load('flashmo_024_photos.xml');
$photos = $doc->getElementsByTagName('photo');
$table = "<table border='1' align='center' width='70%'";
$numer = 0;
foreach ($photos as $photo)
{
$numer++;
$table .= "<tr>";
$table .= "<td>"."<img src=".$photo -> getAttribute ('thumbnail').">"."</td>";
$table .= "<td>".$photo -> getAttribute ('filename')."</td>";
$table .= "<td>".$photo -> getAttribute ('description')."</td>";
$table .= "<td>"."<input type='checkbox' name='checks[]' value=".$numer.">"."</td>";
}
$table .= "</table>";
echo $table;
echo "<input type='submit' value='Save'>";
echo "</form>";
if (isset($_POST['checks']))
{
$s =1;
$dom = new DOMDocument('1.0', 'utf-8');
foreach ($_POST['checks'] as $numer)
{
$s++;
$element = $dom->appendChild(new DOMElement('photos'));
$Photo = $element->appendChild(new DOMElement('photo'));
$filename = $Photo->setAttributeNode(new DOMattr('filename', $s));
}
echo $dom->save('test.xml');
}