Array/SimpleXML

Résolu/Fermé
naketomy - 21 janv. 2013 à 13:34
 naketomy - 21 janv. 2013 à 20:21
Bonjour,

Pourquoi est ce que ça, ça ne marche pas :
function supress_dat_from_xml($entry_nb) {
$xml = new SimpleXMLElement('database.xml',null,true);
unset($xml->entry[$entry_nb]);
if($xml->asXML('database.xml')) { return true;} else {return false;}
}

Mais que ça, ça marche :
function supress_dat_from_xml() {
$xml = new SimpleXMLElement('database.xml',null,true);
unset($xml->entry[2]);
if($xml->asXML('database.xml')) { return true;} else {return false;}
}

Grmbl...

Merci d'avance :-)
Et bonne aprem !

3 réponses

Vérifie qu'au moment ou tu appel ta fonction la valeur que tu lui fournis est valide/dans le bon format
0
Merci de ta réponse,

J'ai fais un echo sur $entry_nb.
Au vu de l'appel de la fonction, ça me donne bien le résultat "2". Qui est celui attendu, et ce sans autre caractère quelconque.

Je n'arrive vraiment pas à comprendre où est le couac.

Merci encore,
Bonne soirée,

Edit : Je viens aussi de tenter un is_numeric, qui me répond true.
0
Résolu, par persévérance.
J'ai ajouté l'attribut 'id' a mes <entry>.
Je le génère automatiquement à la création du xml.
Ainsi, je peux.. de manière lourde et fastidieuse (^^) parvenir à mes fins.

function supress_dat_from_xml($entry_nb) {
$xml = new SimpleXMLElement('database.xml',null,true);
$i = 0;
foreach($xml->entry as $content) {
if($content['id'] == $entry_nb){
unset($xml->entry[$i]);
break;
}
$i++;
}
if($xml->asXML('database.xml')) { return true;} else {return false;}
}
0