ajout d'un utilisateur dans un fichier xml

Mammouth du PHP | 536 Messages

25 juin 2007, 09:00

Bonjour je ne comprends pas pourquoi ce code ne marche pas. Je souhaiterais ajouter un utilisateur si celui-ci ne figure pas déjà dans le fichier xml. JE ne vois pas où est mon erreur. Si quelqu'un pouvait m'aider.
<?
  $mail_user = $_POST['mail'];
  $password_user = $_POST['password'];
  $right_user = $_POST['right'];

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

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


for ($i=0; $i<$result_find->length; $i++ ) //($result_find as $mail)  //passer par une boucle for
  {
    $mail = $result_find->item($i)->attributes;
  }
     if ($mail_user == $mail)
     {
       echo "Utilisateur d&eacute;j&agrave; enregistr&eacute;.<br /> Veuillez v&eacute;rifier l'adresse mail que vous avez saisi.";
     }
     else
     {
       //on créé un élément et on le place dans l'arborescence
       $new_user = domEl('info','',Array('mail'=>$mail_user,'password'=>$password_user,'right'=>$right_user)); 
       $racine->appendChild($new_user);
       $document->save('../xml/users.xml'); //on enregistre le nouveau fichier ainsi créé
       tidyXml('../xml/users.xml'); //on réorganise le fichier
     }
}
Modifié en dernier par béka le 25 juin 2007, 12:10, modifié 2 fois.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juin 2007, 09:18

"Ca ne marche pas" ne nous aide pas ...

Quelle est ton erreur ? Il n'ajoute rien ? tu as des messages d'erreurs ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

25 juin 2007, 09:20

non au contraire, il ajoute même si l'utilisateur est déjà present dans la base. Je fais la vérification à partir de l'adresse mail.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juin 2007, 09:52

Je ne comprend pas ce bout de code :
for ($i=0; $i<$result_find->length; $i++ ) //($result_find as $mail)  //passer par une boucle for
  {
    $mail = $result_find->item($i)->attributes;
  } 
Quel est l'intérêt pour toi de mettre tous les emails dans la même variable ? Sinon, si tu n'as qu'un seul résultat dans $result_find, pourquoi la présence d'une boucle ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

25 juin 2007, 09:55

en fait, je découvre xml. Et je voulais comparer toutes les adresses mail qui sont déjà présentes dans le fichier xml avec celle de l'utilisateur que je souhaite ajouter. Si l'adresse que j'ai saisie pour créer l'utilisateur est déjà présente dans le fichier xml, alors on ne fait pas l'insertion dans le fichier xml.

Je pensais que c'était la syntaxe pour vérifier.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

25 juin 2007, 12:09

le XML n'est que le support des données, la méthodologie ne change pas ...

Quand tu veux vérifier qu'une adresse email n'existe pas déjà dans une table, tu suis l'algorithme suivant :

Code : Tout sélectionner

Sélectionner tous les enregistrements où l'email est [email protected] Si au moins un enregistrement est trouvé Alors traitement du cas où l'email existe Sinon Traitement du cas où l'email n'existe pas Finsi
Avec le XML, l'algorithme ne change pas, il n'y a que le code ;)
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

Mammouth du PHP | 536 Messages

25 juin 2007, 12:11

Voilà j'ai réussi. Voilà le code :
$mail_user = $_POST['mail'];
  $password_user = $_POST['password'];
  $right_user = $_POST['right'];  
    
  
  //on ouvre le document users.xml
  $document = new DomDocument();
  $document->load('../xml/users.xml');
  $racine = $document->documentElement; //on cherche la racine de ce document
  $result_find = $document->getElementsByTagName('info'); //on recherche tous les éléments qui ont come nom de balise 'info'
  


  for ($i=0; $i<$result_find->length; $i++ ) //passer par une boucle for
  {
    $mail = $result_find->item($i)->getAttribute('mail');
  
     if ($mail_user == $mail)
     {
       echo "Utilisateur d&eacute;j&agrave; enregistr&eacute;.<br /> Veuillez v&eacute;rifier l'adresse mail que vous avez saisi.";
     }
     else
     {
       //on créé un élément et on le place dans l'arborescence
       $new_user = domEl('info','',Array('mail'=>$mail_user,'password'=>$password_user,'right'=>$right_user)); 
       $racine->appendChild($new_user);
       $document->save('../xml/users.xml'); //on enregistre le nouveau fichier ainsi créé
       tidyXml('../xml/users.xml'); //on réorganise le fichier
     }
}}
?>
en fait, je m'étais trompé il fallait mettre
$mail = $result_find->item($i)->getAttribute('mail');
et changer les } de place.

Je sais que l'algorythme ne change pas (c'est quasi le même qu'avec les BDD normale et SQL) seulement, ce qui pêche chez moi c'est véritablement le code car c'est tout nouveau pour moi.
Un prof désespéré à son élève :
- Et maintenant, dessinez-moi un cercle au tableau... Voila... Alors qu'est-ce que c'est?
- Ben un cercle ?
- Non, c'est votre note, sortez !!