[SimpleXML] Problema rimozione nodo

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
23
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
A Problema, non so, di scale() o transform, oppure altro? HTML e CSS 0
T ALTRO PROBLEMA CON ARRAY PHP PHP 1
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
Y Problema incolonnamento tabella PHP 7
S problema salvataggio immagini Photoshop 0
Z Problema con INT MySQL PHP 1
Z Problema database MySQL con XAMPP PHP 0
M Problema con controllo form in real time jQuery 6
D problema php mysql PHP 1
D problema php mysql PHP 1
M Problema Wi-Fi Linux Linux e Software 0
Z Problema di sincronizzazione PAYPAL con PHP PHP 1
Daniele_Carrara Problema Aperture Mailup Email Marketing 5
F PROBLEMA ACCESSO INSTAGRAM Discussioni Varie 2
R Problema connessione db PHP 7
M problema if PHP 2
G Problema con Get page PHP 4
N Problema passaggio variabili tra pagine PHP 4
P Problema con require once PHP 6
P Problema con i package Java 1
A Problema login con Safari PHP 14
F INDESIGN: problema esportazione esecutivo per la stampa con foto B/N Webdesign e Grafica 0
H problema carrello woocommerce PHP 2
S problema con css bootstrap3 HTML e CSS 4
M .load() problema con caricamenti dinamici di js Javascript 0
M Problema su query JOIN in tre tabelle PHP 0
S Problema esportazione tabelle Mysql in Excel PHP 0
G Problema ------- con Query PHP 1
G Problema con Query PHP 1
M Problema su update di 3 tabelle PHP 1
T problema con select dinamica con jquery Javascript 0
A Problema checkout carrello php PHP 2
R Problema al server Domini 0
A Problema nel passare la variabile PHP 0

Discussioni simili