[SimpleXML] Problema rimozione nodo

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
26
Roma
alessandro1997.netsons.org
Ebbene sì, mi vedo costretto a chiedere aiuto anche io :D
Sto creando una chat con PHP ed XML, e, come mi immaginavo, ho incontrato grandi difficoltà lavorando con SimpleXML. Già ho dovuto fare una fatica immane per poter usare CDATA, e ora, come se non bastasse, mi si presenta quest'altro problema. Praticamente io ho bisogno di cancellare i messaggi più vecchi di 20 minuti, quindi ho creato questa funzione nella mia classe:
PHP:
private function _deleteExpired()
{
	$data = simplexml_load_file($this->db);
	$count = 0;
	
	foreach($data->message as $msg)
	{
		if(time() - $msg['timestamp'] > 60 * 20)
			unset($data->message[$count]);
		
		$count++;
	}
	
	$this->_overwriteData($data->asXML());
}
La funzione ajaxChat::_overwriteData si occupa solo di cancellare il file XML e crearne la nuova versione.

Ora, ho un problema. Praticamente non riesco a ciclare i messaggi da eliminare. Me ne elimina uno per volta, visualizzando comunque un warning "Node no longer exists". Ho provato a fare qualche prova ed effettivamente sembra che $data->message sia composto da un solo elemento, anche se, quando vado a ciclarlo, mi restituite anche gli altri. Mah...

Il file XML è una cosa di questo tipo:
HTML:
<?xml version="1.0"?>
<messages>
	<message id="1" timestamp="1266522045">
		<![CDATA[Scommetto che questo messaggio non verrà cancellato...]]>
	</message>
	<message id="2" timestamp="1266522057">
		<![CDATA[...o comunque verrà cancellato singolarmente, visualizzando un errore.]]>
	</message>
	<message id="3" timestamp="1266522072">
		<![CDATA[È praticamente tutta la giornata che sto su questo problema.]]>
	</message>
	<message id="4" timestamp="1266522077">
		<![CDATA[Avete qualche idea su come risolverlo?]]>
	</message>
	<message id="5" timestamp="1266522102">
		<![CDATA[Ah, piccolo off topic: borgo puzza.]]>
	</message>
</messages>

EDIT: Ho risolto il problema modificando la funzione così:
PHP:
private function _deleteExpired()
{
	$data = simplexml_load_file($this->db);
	
	while(time() - $data->message[0]['timestamp'] > 60 * 20)
		unset($data->message[0]);
		
	$this->_overwriteData($data->asXML());
}
Ma a me è andata bene, perché la prima occorrenza sarà sempre la più vecchia, quindi se non c'è bisogno di cancellare la prima non serve neanche farlo con la seconda. Ciò non toglie che la curiosità rimane... suggerimenti? Magari possiamo dare una mano a qualcuno che ha sputato sangue come me :D
 
Ultima modifica:
Discussioni simili
Autore Titolo Forum Risposte Data
S SimpleXML - Inserire DTD e intestazione PHP 3
otto9due Accesso agli elementi <![CDATA[ ... ]]> di un file XML con SimpleXML e PHP PHP 2
M simplexml PHP 1
A SimpleXML e ciclo FOR PHP 8
A Aiuto - SimpleXML PHP 4
J [XML simplexml] Problemi con caratteri accentati PHP 2
S SimpleXML - Come stampare gli indici? PHP 2
I Sto progettando nuovi siti utilizzando bootstrap e devo dire funziona bene, l'unico problema e la maschera -moz- HTML e CSS 0
K Problema form update PHP 2
O problema con dvr dahua xvr5116 IP Cam e Videosorveglianza 0
S Problema nel ciclare un json Javascript 0
G Problema con Xampp Web Server 1
andrea barletta Problema con miniature comandi Photoshop 0
I problema con alice Posta Elettronica 0
K Problema Inner join PHP 1
F firefox problema http Linux e Software 0
N Problema con position absolute e overflow HTML e CSS 4
E Problema jquery Success jQuery 2
L Problema con inner join PHP 11
K [php] Problema con inner join PHP 4
E problema selezione sfumata Photoshop 2
K [PHP] Problema con variabili concatenate. PHP 1
A Problema filtro fluidifica Photoshop Photoshop 1
H Problema Bordi Scontorno Photoshop 1
O problema con query PHP 4
R Problema installazione Realtek WiFi USB rtl8821 Reti LAN e Wireless 1
I problema con 2 account Posta Elettronica 1
L problema collegamento file css con html HTML e CSS 1
Y Problema percorso file in rete PHP 1
N Problema SEO "L'URL non si trova su Google" SEO e Posizionamento 4
E Problema accesso a file con app sviluppata con MIT APP INVENTOR 2 Sviluppo app per Android 0
P Problema acquisizione clienti Webdesign e Grafica 1
F NetBeans problema creazione progetto Java Windows e Software 0
M Problema con Try Catch PHP 0
C problema seo + cerco esperto SEO e Posizionamento 11
Sergio Unia Problema con gli eventi del mouse su una data table: Javascript 2
T PROBLEMA CON SESSIONI PHP 3
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
R problema con else PHP 0
T PROBLEMA CON ARRAY PHP 8
L problema con query select PHP 2
R Problema query con ricerca id numerico PHP 2
F Problema con risposta PHP 0
S problema con recupero dati tabella mysql PHP 2
Z Problema con il mio tp-l i nk Reti LAN e Wireless 1
I PROBLEMA: Sostituzione sito XAMPP E-Commerce 0
T problema data 30/11/-1 PHP 0
L Problema RAM con Tomcat 8 Apache 0
napuleone problema con sort e asort PHP 4

Discussioni simili