Supprimer un noeud d'un xml

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 01:04

tu as testé le premier code avec une structure xml comme celle que j'ai présenté ? et cela marche ?
tu arrives à supprimer un message ??

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 sept. 2007, 01:12

Tel quel, avec le fichier XML du message suivant, et je suis parvenu à effacer l'un ou l'autre des éléments "message".

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 01:18

c'est vraiment curieux !
regarde tout est fonctionnel sur free :http://scullder.free.fr/phpinfo.php5
Tu es hébergé ou toi ? tu as tester sur quel serveur ?
J'ai testé ton code simplexml en dur en enregistrement en php 5 pour éviter l'erreur et rien du tout pas de message effacé.
Je panique pour mercredi...

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 sept. 2007, 01:23

Je te donne le script entier que je viens d'exécuter en local
<?php

$id = 1;

$forum = simplexml_load_string('<?xml version="1.0" encoding="UTF-8"?> 
<forum> 
<message id="0" date="le 08/01/2006 à 18:24:48" de="Webmaster" mail="" message="Laissez un message, donnez votre avis, posez des questions..." club="1"/> 
<message id="1" date="le 14/04/2007 à 14:37:28" de="webmaster" mail="fr" message="Attention, le site va bientôt fermer pour quelques mois afin de mettre à jour les fichiers. (nouveaux jeux, nouveaux dossiers, nouveaux cours...) 
La date de fermeture est prévue pour le 20 avril 2007. 
" club="0"/> 
</forum>');

$i = 0;
foreach ($forum->message as $msg)
{
	if ($msg['id'] == $id)
	{
		unset($forum->message[$i]);
		break;
	}
	++$i;
}

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 01:34

Sur le serveur rien ne fonctionne. J'abandonne en me disant que il doit y avoir un pb de configuration chez free.

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 01:36

N'y a t-il pas un autre moyen sans passer par DOM et simpleXML cela me permettrai de pouvoir espérer d'ici mercredi.

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 sept. 2007, 01:59

Autre que DOM et SimpleXML, non. Mais tu ferais mieux d'essayer de comprendre pourquoi tu n'arrives pas à faire marcher ton script plutôt. Et surtout, pourquoi tes pages semblent être interprétées en PHP 4 une fois sur deux.

Au passage, ce serait cool de te connecter pour pouvoir éditer tes messages. Dernière chose, merci de ne pas remonter d'autre sujets inutilement.

Mammouth du PHP | 19672 Messages

10 sept. 2007, 05:54

Sur free.fr, la version de PHP par défaut est PHP 4.4.3-dev. Si tu veux du PHP5, il faut que ton fichier aie l'extension ".php5" et non ".php" tout court.

Version par défaut
Version PHP 5
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 07:56

Oui ok, mais même en enregistrant en php5 cela ne change rien. Aucun message ne s'efface.
De plus j'ai testé :
<?php 

$id = 1; 

$forum = simplexml_load_string('myELECTRONSforum.xml'); 

$i = 0; 
foreach ($forum->message as $msg) 
{ 
    if ($msg['id'] == $id) 
    { 
        unset($forum->message[$i]); 
        break; 
    } 
    ++$i; 
} 
et voila ce que j'ai :

Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: simplexml_load_string() [function.simplexml-load-string]: myELECTRONSforum.xml in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: Invalid argument supplied for foreach() in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 8

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 08:01

j'avais fait une erreur (oubli d'une balise) mais j'ai toujours :
Warning: simplexml_load_string() [function.simplexml-load-string]: Entity: line 1: parser error : Start tag expected, '<' not found in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: simplexml_load_string() [function.simplexml-load-string]: myELECTRONSforum.xml in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: simplexml_load_string() [function.simplexml-load-string]: ^ in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 5

Warning: Invalid argument supplied for foreach() in /mnt/137/sda/9/c/electrons/myELECTRONSforum/myELECTRONSdelete2.php5 on line 8

Mammouth du PHP | 19672 Messages

10 sept. 2007, 08:22

Est-ce qu'il n'y aurait pas un problème avec ton fichier XML ??? :-k
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 11:48

et bien à priori non il se présente comme cela :

Code : Tout sélectionner

<?xml version="1.0" encoding="UTF-8"?> <forum> <message id="0" date="le 08/01/2006 à 18:24:48" de="Webmaster" mail="[email protected]" message="Laissez un message, donnez votre avis, posez des questions..." club="1"/> <message id="1" date="le 14/04/2007 à 14:37:28" de="webmaster" mail="laurent..fr" message="Attention, le site va bientôt fermer pour quelques mois afin de mettre à jour les fichiers. (nouveaux jeux, nouveaux dossiers, nouveaux cours...) La date de fermeture est prévue pour le 20 avril 2007. " club="0"/> <message id="2" date="le 07/05/2007 à 12:38:19" de="webled" mail="@hotmail.fr" message="esque vos pourer remettre a 0 le classement d'astrogo car il i a plein de foi les meme noms merci bocoup si vou pourer fairev sa" club="1"/> <message id="3" date="le 08/05/2007 à 09:16:36" de="Webmaster" mail="@yahoo.fr" message="Ok Jordan, je dois réécrire le fichiei pour éviter l'accumulation de score sous un même nom. Bientôt de nouveaux jeux... Ne pas oublier d'aller visiter les autres parties du site. A plus tard." club="0"/><message id="4" date="le 10/05/2007 à 15:36:03" de="wattebled" mail="@hotmail.fr" message="ok merci monsieur " club="1"/></forum>

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 sept. 2007, 12:30

et bien à priori non
Je dirais plutôt "a priori si", puisque le message d'erreur de PHP dit que ton fichier n'est pas valide. Quand PHP dit quelque chose, peut importe ce que tu pourras penser, il aura toujours raison. Les humains se trompent (de nom de fichier, de copier/coller, etc...) les ordinateurs non*

En l'occurence, je pense que le fichier que tu as copié/collé ici ne correspond pas à celui qui est sur ton disque dur. Plus particulièrement, je pense que celui que tu as uploadé chez Free comporte des espaces ou des sauts de lignes en début de fichier le rendant invalide. Comme je le disais plus haut, il faut que tu sois plus attentif à ce que tu fais, la programmation ne permet pas l'"à peu près".






* à quelques virgules flottantes près

Invité
Invité n'ayant pas de compte PHPfrance

10 sept. 2007, 12:33

bon alors je mets le lien du fichier coté serveur :
http://electrons.free.fr/myELECTRONSfor ... Sforum.xml

Administrateur PHPfrance
Administrateur PHPfrance | 3088 Messages

10 sept. 2007, 12:38

Chez moi ça marche. :-k
$id = 1;
$forum = simplexml_load_file('http://electrons.free.fr/myELECTRONSforum/myELECTRONSforum.xml');

$i = 0;
foreach ($forum->message as $msg)
{
	if ($msg['id'] == $id)
	{
		unset($forum->message[$i]);
		break;
	}
	++$i;
}

die($forum->asXML());