Probleme de structure en PHP >.<

Fermé
ojikuroi - 17 févr. 2011 à 09:12
 ojikuroi - 18 févr. 2011 à 09:45
Bonjour,

Le thème du topic n'est pas très explicite mais il n'y avait pas assez de caractères autorisés xD

Voilà, j'ai un dossier qui contient plusieurs fichiers XML contenant des caractéristiques d'une imprimante à un instant T.
dans ma BDD j'ai une table "suivi" où je veux entrer certaines informations de ce XML et dans une autre table modele_imprimante, j'ai une page PHP qui me permet de parser le XML afin de trouver les informations dans le XML de l'imprimante.
( j'ai dû utiliser cette methode car les structures des XML des differentes imprimantes sont differentes et le parse en est donc modifié )

Ma question est : je veux que l'utilisateur clique sur un bouton et que lors du clic, le logiciel va boucler sur le dossier contenant tous les XML puis va ouvrir la page de parse XML corresepondante au modele ( facilement retrouvable car le fichier xml s'appelle "serial_de_l'imprimante.XML") , puis effacer le XML une fois les actions terminées pour passer au suivant. comment faire ?

Je suis peut être flou et je m'en excuse
someone can help me ?


A voir également:

5 réponses

wazertyuiop Messages postés 32 Date d'inscription jeudi 10 février 2011 Statut Membre Dernière intervention 18 février 2011 1
Modifié par wazertyuiop le 17/02/2011 à 11:17
Bonjour, j'essaie de comprendre ce que tu veux mais ce n'est pas bien expliqué, en gros tu veux que quand l'utilisateur clik sur un bouton, ca affiche le document xml correspondant au premier modèle, ensuite l'utilisateur fai des actions , et une fois qu'il a terminée les actions , ca efface le xml et ca affiche le xml correspondant au modèle suivant ?
0
non ^^ En fait, l'utilisateur clique sur le bouton. Sur le serveur, il y a un dossier qui contient plein de fichier XML ( un XML = une imprimante ).
en faisant une requete SQL, je fait le lien entre l'imprimante identifiée par le numero de serie et son modele. dans la table modele, j'ai une page php que je vais inclure qui se chargera du parse XML et de l'ajout dans la table suivi.

quand il clique, le serveur php va :
- extraire le numerodeserie contenu dans le titre du premier XML
- faire une requête sql pour en déduire le modèle
- exécuter le fichier de parse en PHP contenu dans la table modèle
- le parse fait son travail
- une fois le parse terminé, effacer le premier XML et passer au deuxième.

le code qui m'intéresse est surtout le parcours du dossier avec l'extraction du nom.
0
petit up ^^
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 févr. 2011 à 09:38
Bonjour,

Tu peux parcourir un répertoire de cette façon-là :
- opendir() ouvre un répertoire
- readdir() parcourt le répertoire (chaque appel à readdir() va renvoyer le fichier suivant dans le répertoire)
    
    $rep=opendir('cheminRepertoire');    // On ouvre le répertoire à parcourir
    while (false !== ($fichier = readdir($rep)))  // Tant qu'il y a des fichiers dedans...
    {
        if($fichier != '..' && $fichier !='.' && $fichier != '' && !is_dir($file))  // On ne prend que les « vrais » fichiers
        {
            $contenu = file_get_contents($fichier);
            // (ici tu fais ce que tu peux appeler ta fonction sur le contenu du fichier)
        }
    }


Xavier
0
Reivax962 Messages postés 3671 Date d'inscription jeudi 16 juin 2005 Statut Membre Dernière intervention 11 février 2021 1 011
18 févr. 2011 à 09:41
Ah, j'ai oublié.
Pour supprimer un fichier, fais comme ça :
unlink($fichier);
(voir https://www.php.net/manual/fr/function.unlink.php )

Par contre, je ne suis pas sûr du comportement de readdir() si tu lui supprimes des fichiers alors que le répertoire est ouvert. Ça pourrait lui faire sauter des fichiers dans son parcours...
Le plus sûr, à mon avis, serait de stocker dans un tableau le nom de chaque fichier traité, et, à la fin de ton script, parcourir le tableau pour supprimer les fichiers qui sont dedans.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
OH merci ! ça fonctionne ! je trouvais comment le faire mais mon code n'était pas propre alors que le tiens... AU POIL =)

PS : Modo, si c'est possible de laisser le topic ouvert le temps que j'aie fini ... ce serai cool car je vais peut être avoir d'autres problèmes et je vois qu'il y a des gens très compétents ici, ce serai bête de s'en priver xD merci !
0