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

Bibliothèques et frameworks PHP Discussion :

[XML] Lister des fichiers dans des répertoires


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut [XML] Lister des fichiers dans des répertoires
    Bonjour,

    J'aimerais savoir si vous connaissez une méthode pour "lire/éditer" des fichiers XML dans plusieurs dossiers.

    Dans le but de créer une zone membre en PHP/XML, avec un dossier par membre.

    Explication :

    1 - formulaire.php ( ok )
    pour les données du fichier fiche.xml

    2 - traitement.php ( ok ) avec "SimpleXML"
    ( va créer dans un dossier avec comme nom le login et/ou l'ID et un fichier fiche.xml )
    Exemple : " /membres/($id-$login)/fiche.xml "

    3 - voir-les-membres.php ( mon problème )
    J'aimerais qu'à chaque fois qu'un membres créer son compte, il apparait dans un bloc/page...
    qui listerait les dossiers membre, et permettrait avec un lien de voir le profil
    (profil = "../$id-$login/fiche.xml").


    4 - Si je comprends le fonctionnement de l'étape 3, après je serais en mesure de faire le panneau de gestion des membres, système de messagerie, internet etc...

    Je vous remercie d'avance

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    pour lister les fichiers d'un répertoire, tu peux essayer ce code :
    http://php.net/RecursiveDirectoryIte...truct.examples

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par mathieu Voir le message
    pour lister les fichiers d'un répertoire, tu peux essayer ce code :
    http://php.net/RecursiveDirectoryIte...truct.examples
    J'ai trouver en faisant à peu près la même chose :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
    if ($doc = opendir('membres')){
    	echo "Les Membres :<br/>";
    	while (false !== ($file = readdir($doc))){
    		if ($file != "." && $file != "..") {;
    			echo "<a href=\"membres/".$file."\">".$file."</a><br />\n";
    		}
    	}
    closedir($doc);
    }
    ?>
    Je trouve sa plus simple que la méthode que tu ma proposé

    Question :

    Sinon pour le système que je souhaite ( espace membre en PHP/XML ),
    Pour la connexion, comment faire en sorte que le php cherche si le (login/pass) sont disponible dans chaque xml de chaque dossier membre ?


    Merci

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    N'ayant pas la structure de tes fichiers XML sous les yeux je ne peux que te mettre sur une piste. Tu dois pouvoir atteindre les informations dont tu as besoin à l'aide d'XPath :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    $valid = true; 
    //Pour chaque fiche; utiliser un itérateur ici... :p 
    forEach($files as $file) { 
        $document = new DOMDocument(); 
        $document->load($file); 
        $expression = new DOMXPath($document); 
        // À toi d'écrire la bonne expression X-path 
        $valid &= !!$expression->evaluate($path); 
    }

  5. #5
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ta réponse, voila à peu près la tête du 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
    <?xml version="1.0" encoding="UTF-8"?>
    <membre id="1">
    	<compte>
    		<login>ken</login>
    		<mdp>123Aze789</mdp>
    	</compte>
    	<profil>
    		<prenom>Ryo</prenom>
    		<email>vox@oxi.iz</email>
    		<age>15/02/1981</age>
    		...et quelque autre
    		..
    	</profil>
    </membre>
    Je vais déjà voir avec ce que tu ma proposé.

    Mais si je doit le faire pour chaque fichier sa va être chaud

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Salut !

    Tu pourrais utiliser cette expression X-path pour atteindre le noeud "login" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $valid &= !!$expression->evaluate('/membre/compte/login');
    Comme tel ça entretiendra (ou non) la valeur de $valid (qui est "vraie" initialement). Dès lors qu'un élément "membre/compte/login" manquera à l'appel dans un fichier XML $valid deviendra "fausse". Tiens, d'ailleurs tu pourrais rajouter un break qqpart pour interrompre la boucle et optimiser un peu le temps passé là-dedans...

    Pour le mot de passe c'est la même chose :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $valid &= !!$expression->evaluate('/membre/compte/mdp');
    Note : avec ces expressions X-path tu accèdes à des éléments (DOMElement). Si tu supposes que dès lors qu'ils existent dans tes fichiers ils contiennent qqchose ton besoin est comblé (sauf erreur de ma part). Autrement, il te faudra peut-être aussi tester si, en plus, le contenu des ces éléments n'est pas vide. Il doit y avoir une méthode de DOMElement pour récupérer le texte d'un élément, je te laisse la chercher / trouver...

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Voilà, c'est même pas une méthode, c'est un attribut public () : DOMElement#textContent.

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Re-Bonsoir,

    Merci pour ton aide

    Comme je connais pas bien les itérations j'ai préféré faire un array des fichiers.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $files = array('aa.z','...','...');
    mais...

    Sachant que les membres peuvent créer leur compte (comme dans n'importe quel système de membre, c'est dynamique ).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    $monxml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
    <membre id="$id">
    	\t<compte>
    		\t\t<login>$login</login>
    		\t\t<mdp>$mdp</mdp>
    		\t\t<email>$email</email>
    	\t</compte>
    	\t<profil>
    		\t\t<prenom>$prenom</prenom>
    		\t\t<age>$age</age>
    	\t</profil>
    </membre>";
    mkdir("membres/$id-$login");
    file_put_contents("membres/$id-$login/profil.xml",$monxml);
    Donc il faudrait une page qui "check le (login/mdp)" de tout les dossiers ( membres/$id-$login/fichier.xml )

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Tu peux utiliser l'itérateur dont parlait mathieu précédemment :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    forEach(new RecursiveDirectoryIterator('membres') as $file) { 
        // Ici $file est de type <a href="http://ca3.php.net/manual/en/class.splfileinfo.php" target="_blank">SplFileInfo</a>. 
        if($file->getFileName() == 'fichier.xml') { 
            // "check le (login/mdp)" avec la piste du X-path 
        } 
    }
    Avec ça tu ne devrais plus être trop loin... :)

    P.S. : suis-je le seul à être obligé de faire de la chirurgie entre balises de forum et HTML dans mes fragments de code pour les voir apparaître décemment ?.. C'est très très très usant ! Je ne peux même pas cliquer sur les boutons de l'éditeur pour mettre en souligné ou autre. Quelle galère !

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2010
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2010
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    J'ai du être atteint de cécité passager, ou fatigue

    Merci de votre aide, je pense avoir compris

    Je fait sa se soir !

    Bonne Journée a toi !

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    319
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 319
    Points : 351
    Points
    351
    Par défaut
    Ahah !

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

Discussions similaires

  1. [sh] Lister des répertoires écrits "en dur" dans des fichiers
    Par melouze dans le forum Shell et commandes GNU
    Réponses: 7
    Dernier message: 02/06/2014, 17h14
  2. Lister des fichiers dans un répertoire
    Par JD971 dans le forum Débuter
    Réponses: 8
    Dernier message: 21/06/2012, 11h02
  3. Lister les fichiers dans un répertoire
    Par lohot dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 30/03/2008, 12h55
  4. lire le nom des fichiers dans un répertoire
    Par wonderboutin123 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 30/11/2007, 04h22
  5. Réponses: 5
    Dernier message: 08/06/2007, 01h41

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