Başlamadan önce lütfen bunun için oldukça yeniyim.php kullanarak html formuyla xml düğümleri nasıl silinir
Sonunda, kullanıcıların bir XML dosyasında depolanan olayları PHP kullanarak bir HTML biçiminde ekleyebilmelerini, düzenleyebilmelerini ve silebilmelerini istediğim bir takvim var. Şimdiye kadar, bu sitede bulunan ipuçları sayesinde eklemeyi başardım, ancak silme konusunda zorluk yaşıyorum.
Kullanıcının silinmesini istediğiniz olayın adını girmesini istiyorum, böylece xml dosyasından bulunup kaldırılabilir.
Sorun şu ki, silme için bir olay girdiğimde, form, yalnızca xml dosyasının altından görünen, girilenleri yalnızca ters sırada silecektir.
Örneğin: HTML formu aracılığıyla 4 olay giriyorum. Olay 1, Olay 2, Olay 3, Olay 4.
Olay 2'yi silmek istediğimi varsayalım. Olay 2'yi silmek için silme formunu kullanıyorum, ancak Olay 4 silindi. Bu yüzden tekrar Event 2'yi silmeyi deneyin ve bu kez Event 3 silinir.
Herhangi bir yardım çok takdir edilmektedir!
Çok teşekkürler.
XML
<calendar>
<event>
<name>Event 1</name>
<startdate>21-3-2016</startdate>
<enddate></enddate>
<starttime>14.41</starttime>
<endtime></endtime>
</event>
</calendar>
HTML
<form action="remove.php" method="post" name="remove" id="calendarEdit">
<input class="calendarInput" type="text" name="name" id="name">
<input type="submit" name="button" id="button" value="Delete">
</form>
Remove.php
$name = $_POST['name'];
$xml = new DOMDocument('1.0', 'utf-8');
$xml-> load('events.xml') ;
$xpath = new DOMXPath($xml);
foreach ($xpath->query("/calendar/event['name']") as $node);
{
$node->parentNode->removeChild ($node);
}
$xml->formatoutput - true;
$xml->save('events.xml');
header('Location: calendar.html');
exit();
Silme kodunuzda '$ name' kullanmazsınız. tüm olaylar üzerinde sadece (yanlış) dönersiniz ve hepsini kaldırmaya çalışırsınız. –
Ne kullanmalıyım? – HSwaff
muhtemelen xpath sorgusu için '/ monthly/event [text() = '$ name']' gibi bir şey daha ... –