IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Condition IF non réalisée


Sujet :

Langage PHP

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut Condition IF non réalisée
    Soit deux fichiers que j'arrive facilement à manipuler en php sauf sur une condition.

    1.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    <?xml version="1.0" encoding="utf-8"?>
    <utilisateurs>
      <nom identite="pierre">
              <lieu>
    		  <ip>169</ip>
    	  </lieu>
    	  <lieu>
    		  <ip>10.113.22.2</ip>
    	  </lieu>
      </nom>
      <nom identite="Geraldine">
              <lieu>
    		  <ip>169.158.50.1</ip>
    	  </lieu>
    	  <lieu>
    		  <ip>127</ip>
    	  </lieu>
      </nom>
    </utilisateurs>
    et 2.xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="utf-8"?>
    <connections>
      <nom identite="pierre">
    		  <ip_con>169</ip_con>
    		  <heure>31-01-2009 - 14:26</heure>
      </nom>	  
      <nom identite="ger">
    		  <ip_con>127</ip_con>
    		  <heure>31-01-2009 - 14:52</heure>
      </nom>	
    </connections>
    Voici un script php qui est censé comparer si une adresse IP est commune dans les deux fichiers xml

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    $i=0; 
    $utilisateurs= simplexml_load_file('2.xml');
    foreach ($utilisateurs->nom as $nom) { 
      $ip_con[$i]=$nom->ip_con;
      $i=$i+1;
    }
     
    $j=0; 
    $connections= simplexml_load_file('1.xml'); 
    foreach ($connections->nom as $nom) {
      echo $nom['identite']."<br />\n"; 
      foreach ($nom->lieu as $lieu) {
          $ip=$lieu->ip;
    	  echo $ip_con[0]."<br />"; // pour le test 
    	  echo $ip."<br />";        // pour le test
          if ($ip == $ip_con[$j]){
    		  echo 'ip identique';
    	  }  ;
      echo "<br />\n";
      }
      $j=$j+1;
    }
    Ayant deux ip identiques (valeur 169 pour Pierre dans les deux fichiers),
    je devrais afficher un "ip identique"


    Hélas en voici le résultat ;((

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    pierre
    169
    169
     
    169
    10.113.22.2
     
    Geraldine
    169
    169.158.50.1
     
    169
    127
    Après 3 heures de recherche, je m'en remets à vous

  2. #2
    Membre expert
    Avatar de ThomasR
    Homme Profil pro
    Directeur technique
    Inscrit en
    Décembre 2007
    Messages
    2 230
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2 230
    Points : 3 972
    Points
    3 972
    Par défaut
    Bonsoir,

    Etant donné que tu définit explicitement la valeur de $j, tu compares tout le temps avec le même utilisateur, tu pourrais plus simplement vérifier si la valeur existe dans la tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    if(in_array($ip,$ip_con)){
        echo 'IP en doublon';
    }

  3. #3
    Membre confirmé Avatar de goodpz
    Profil pro
    Inscrit en
    Février 2007
    Messages
    475
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 475
    Points : 514
    Points
    514
    Par défaut
    Ton code ne semble pas très clair par rapport aux exemples xml que tu donnes.
    Enfin, il ne faut pas oublier de "caster" un élément DOM en string pour accéder à son contenu text.

    Du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ip = (string)$lieu->ip;

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Le but est de lire l'adresse ip dans 2.xml
    puis d'afficher simplement tout un ensemble d'infos présentes dans 1.xml pour cette adresse ip (nom de l'utilisateur, adresse ...)

    Le $ip_con[0] ou $j =0 est uniquement la pour le test

    Pourquoi ma condition ne se réalise-t-elle pas ? pour l'utilisateur 0 qui ont une ip =169 dans les deux cas ? C'est un truc de débutant qui m'échappe !

    Je ne suis pas un pro, mais il y avait bien longtemps que je m'étais heurté à un truc aussi basique... Et je voudrais simplement comprendre mon erreur sans chercher à la contourner.

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    261
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 261
    Points : 125
    Points
    125
    Par défaut
    Gagné ...

    Il fallait caster .... je cours revoir mon cours de xml ;((

    Merci beaucoup

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. noeud réalisable et non réalisable
    Par chris_013 dans le forum JSF
    Réponses: 2
    Dernier message: 27/01/2009, 10h04
  2. [MySQL] Condition champ non rempli
    Par gaspard27 dans le forum PHP & Base de données
    Réponses: 32
    Dernier message: 27/08/2008, 01h01
  3. Suppression non réalisée
    Par razorlok dans le forum Langage
    Réponses: 13
    Dernier message: 04/06/2008, 11h24
  4. Condition OR non prise en compte
    Par Thetonio007 dans le forum SQL
    Réponses: 7
    Dernier message: 08/06/2007, 16h02
  5. Condition macro non respectée
    Par pascal913 dans le forum Access
    Réponses: 12
    Dernier message: 04/07/2006, 12h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo