Page 1 sur 1

supprimer un noeud dans un fichier xml

Posté : 22 juin 2007, 14:40
par béka
Bonjour, voilà mon problème, j'ai fait un code qui permet d'effacer un noeud ('info') d'un utilisateur dans mon fichier xml lorsqu'un attribut est passé par un formulaire.
Je ne comprends où il peut y avoir un problème. (en effet, aucun noeud est effacé).
<?
//on récupère les attributs de l'utilisateur à supprimer
 $mail_user = 'toto'; //$_POST['mail'];
 //$password_user = $_POST['password'];
 //$right_user = $_POST['right'];

//on ouvre le document
$document = new DomDocument();
$document->load('../xml/users.xml');
$racine = $document->documentElement;



$result_find = $document->getElementsByTagName('info'); //on recherche tous les éléments qui ont come nom de balise 'info'

foreach ($result_find as $mail) //pour chacun des éléments trouvés, on le renomme en 'mail'
{ 
  echo $mail->getAttribute('mail').'<br />';
  for ($i=0; $i<$result_find->length; $i++)
  {
    $attr = $result_find->item($i)->attributes;
    for ($j=0; $j<$attr->length; $j++) {
      if ( ($attr->item($j)->nodeName == 'mail') && ($attr->item($j)->nodeValue == 'toto') ) 
        $element = $result_find->item($i);
        echo $element.'<br />';
    }
  }
}
$suppr = $racine->removeChild($element); ?>


En fait, j'ai pu résoudre tout seul ce problème, voilà le code des fois que ça intéresse certains.
<?
//on ouvre le document
$document = new DomDocument();
$document->load('adresse fichier.xml');
$racine = $document->documentElement;

$result_find = $document->getElementsByTagName('info'); //on recherche tous les éléments qui ont come nom de balise 'info'

if( (isset($_POST['mail'])) ) 
 {

    //on récupère les attributs de l'utilisateur à supprimer
    $mail_user = $_POST['mail'];
    //$password_user = $_POST['password'];
    //$right_user = $_POST['right'];
    
    
    
    foreach ($result_find as $mail) //pour chacun des éléments trouvés, on le renomme en 'mail'
    { 
      for ($i=0; $i<$result_find->length; $i++)
      {
        $attr = $result_find->item($i)->attributes;
        for ($j=0; $j<$attr->length; $j++) {
          if ( ($attr->item($j)->nodeName == 'mail') && ($attr->item($j)->nodeValue == $mail_user) ) 
            $element = $result_find->item($i);
            //echo $element.'<br />';
        }
      }
    }
    $suppr = $racine->removeChild($element);
    $document->save('adresse fichier xml');
    tidyXml('adresse fichier xml'); //on réorganise le fichier
}
?>


<html>
<head><title>Supprimer un utilisateur</title></head>
<body>

<!--formulaire qui permet de choisir les users à suprimer-->
<form method="post" action="delete_user.php">
<select name="mail">
  <option selected>Choisir l'utilisateur &agrave; supprimer</option>
  <?
  foreach ($result_find as $mail) {//pour chacun des éléments trouvés, on le renomme en 'mail'
  ?>
  <option><? echo $mail->getAttribute('mail'); ?></option><? } ?>
</select> 
<input type="submit" value="effacer" />
</form> 
<!-- fin du formulaire -->